写点什么

CVE-2017-10271 漏洞复现与分析

用户头像
喀拉峻
关注
发布于: 1 小时前

漏洞介绍

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

影响版本

OracleWebLogic Server10.3.6.0.0OracleWebLogic Server12.1.3.0.0OracleWebLogic Server12.2.1.1.0OracleWebLogic Server12.2.1.2.0

漏洞复现环境

攻击方:kali 2021

服务端:vulhub 的 weblogic 的 CVE-2017-10271 环境

漏洞复现

攻击方使用 Burp 发送反弹 shell 的 payload:



成功得到 shell:



POC

https://github.com/NingKn/CVE_EXP/blob/main/cve-2017-10271/cve-2017-10271.py

漏洞分析

CVE-2017-10271 漏洞是 WebLogic Server WLS 组件的远程命令执行漏洞,触发漏洞 url 如下:

http://192.168.124.42:7001/wls-wsat/CoordinatorPortType 发送 post 数据包,通过构造 SOAP(XML)格式的请求,在解析的过程中导致 XMLDecoder 反序列化漏洞。

  • 在 weblogic/wsee/jaxws/workcontext/WorkContextServerTube 类的 processRequest 方法中,处理我们发送的 POST 数据包中的 SOAP(XML)数据。var1 即是传入的 SOAP 数据,我们 idea 配置好远程调试并且开启 debug 后,在 processRequest 方法中下断点:


  • Burp 通过 post 发送数据包后,idea 停留在断点处,查看其中的 var1 变量既是我们发送的 xml 数据:


  • 代码往下走,进入 readHeaderOld 方法,跟进前我们查看 var3 变量的信息:




  • 跟进 readHeaderOld 方法,发现这里其实就是进行了一波转换,生成了 WorkContextXmlInputAdapert var6 对象,下图是该方法中的 var4 变量存放了的 xml 数据:


  • Var6 中的 buf 集合就是 var4 中的数据,及我们传输的 xml:


  • 跟进 receive 方法,var1 实参是上面 var6 形参:


  • 跟进 var2 的 receiveRequest 方法:


  • 这里的 var1 就是上面的 var1 形参:


  • 跟进 receiveRequest 方法:


  • 跟进 readEntry 方法,var0 存放了 xml 数据:


  • 跟进 var0 的 readUTF 方法:


  • 直接调用了 xmlDecoder.readObject 方法,产生漏洞。

总结:

XMLDecoder 来解析用户传入的 XML 数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令执行。

漏洞修复:

方法一:删除 wls-wsat 组件,然后重启 weblogic

方法二:官网下载,打补丁

用户头像

喀拉峻

关注

左手Java右手Python,中间纹个C++ 2021.06.26 加入

还未添加个人简介

评论

发布
暂无评论
CVE-2017-10271漏洞复现与分析