# 复现
[参考](weblogic 漏洞分析之 CVE-2017-10271 - 先知社区 (aliyun.com))
vulhub  一键部署

远程调试没问题
# 反弹 shell

| 1 | POST /wls-wsat/CoordinatorPortType HTTP/1.1 | 

这里是用工具写入内存马再去连接的,冰蝎 4.0.1 似乎连不上,因为秘钥是写在代码中的
这里注入内存马是单独设置的密码
还是使用的 3.x 版本去连接的


# 漏洞分析
本文的重点还是放在代码上
CVE-2017-10271 漏洞主要是由 WebLogic Server WLS 组件远程命令执行漏洞
http://url:port/wls-wsat/CoordinatorPortType 
 post  发送数据包
再构造 SOAP(XML)  格式的请求解析过程中触发 XMLDecoder  反序列化漏洞
由于 class 体量太大
这里我就反编译了 weblogic 的 jar
 需者自取
提取码:9x8l
在 wlserver_10.3\server\lib\weblogic.jar!\weblogic\wsee\jaxws\workcontext\WorkContextServerTube.class  的 processRequest  方法
这里的 var1  传入的是 XML 数据

经过修饰后变成 var3  进入到 readHeaderOld  方法
前面的获取了 POST  数据包中 XML  参数
后面通过 ByteArrayInputStream  将 XML 数据变成字节数组输出流赋值给 var4 

这里如果调试成功的是可以看到 var4  的格式就是 poc  中的 XML 部分
| 1 | <java version="1.7.0_80" class="java.beans.XMLDecoder"> | 
var4.toByteArray() :将 var4  的内容转为字节数组,然后传入 ByteArrayInputStream  转化为流。
 WorkContextXmlInputAdapter  类,将接受道德输入流再转换成 XMLDecoder 

之后进入执行 receive( )  函数。
跟进到 WorkContextLocalMap  类下的 receiveRequest  方法
其中调用了 WorkContextEntryImpl  的 readEntry  方法

最后到 WorkContextXmlInputAdapter  下的 readUTF 

此处调用了 xmlDecoder.readObject
最终执行了执行了 XML 数据中的 ProcessBuilder.start()
# poc
| 1 | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> | 
