#漏洞介绍
Weblogic的WLS
安全组件对外提供webservice服务,其中使用XMLDecoder解析用户传入的XML数据,解析过程中出现反序列化漏洞,导致任意命令的执行。攻击者甚至可以通过发送精心构造的xml数据弹壳来获得权限。
#影响版本
OracleWebLogic服务器10.3.6.0.0
OracleWebLogic服务器12.1.3.0.0
OracleWebLogic服务器12.2.1.1.0
OracleWebLogic服务器12.2.1.2.0
#漏洞重现环境
攻击者:kali 2021
服务器:vulhub的WebLogic CVE-2017-10271环境
[1.所有资源关注我,私信回复“信息”获得1]
1.200多本网络安全系列电子书(应该都有)
2.成套工具(最全的中文版,你想用哪一个)
3.100 src源代码技术文档(项目学习是不断的,真正的知识是从实践中获得的)
4.网络安全基础知识介绍、Linux、网络安全、攻防视频(2021年最新版本)
5.网络安全学习路线(告别后进生学习)
6、ctf标志捕捉游戏分析(话题分析实际操作)
#漏洞重现
攻击者使用Burp发送反弹外壳的有效负载:
成功获取外壳:
#概念验证
https://github.com/NingKn/CVE _ EXP/blob/main/CVE-2017-10271/CVE-2017-10271 . py
#漏洞分析
CVE-2017-10271漏洞是WebLogic Server WLS组件的远程命令执行漏洞,触发漏洞的url如下:
http://192 . http://192 . http://192 . 42336001/WLS-wsat/coordinator orttype
通过构造一个SOAP(XML)格式的请求来发送一个post数据包,会导致XMLDecoder在解析过程中出现反序列化漏洞。
1.在WebLogic/wsee/jax ws/workcontext/workcontextserver tube类的processRequest方法中,处理我们发送的POST数据包中的SOAP(XML)数据。Var1是传入的SOAP数据。在idea中配置远程调试并打开调试后,我们将在processRequest方法中中断断点:
2.BURP通过post发送数据包后,idea停留在断点处,检查var1变量是否不仅仅是我们发送的xml数据:
3.代码进入readHeaderOld方法。在跟进之前,我们检查var3变量的信息:
4.跟踪readHeaderOld方法,发现实际上有一波转换来生成WorkContextXmlInputAdapert var6对象。下图显示了该方法中var4变量中存储的xml数据:
5.VAR6中的buf集是var4中的数据和我们传输的xml:
6.遵循接收方法,var1参数是上面的var6参数:
7.跟进var2的receiveRequest方法:
8.这里的var1是上面的var1参数:
9.跟进接收请求方法:
10.遵循readEntry方法,var0存储xml数据:
1.跟进var0的readUTF方法:
直接调用了xmlDecoder.readObject方法,导致了一个漏洞。
#摘要:
XMLDecoder用于分析用户传入的XML数据。在解析过程中,存在反序列化漏洞,导致任意执行命令。
#漏洞修复:
方法1:删除wls-wsat组件并重新启动weblogic。