写点什么

又一次漏洞复现与分析

  • 2021 年 11 月 24 日
  • 本文字数:960 字

    阅读完需:约 3 分钟

漏洞介绍

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:


【一>所有资源获取<一】1、200 份很多已经买不到的绝版电子书 2、30G 安全大厂内部的视频资料 3、100 份 src 文档 4、常见安全面试题 5、ctf 大赛经典题目解析 6、全套工具包 7、应急响应笔记

成功得到 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 反序列化漏洞。

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


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

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


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

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

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


  1. 跟进 var2 的 receiveRequest 方法:

  2. 这里的 var1 就是上面的 var1 形参:

  3. 跟进 receiveRequest 方法:

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

  5. 跟进 var0 的 readUTF 方法:

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

总结:

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

漏洞修复:

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

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

用户头像

我是一名网络安全渗透师 2021.06.18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
又一次漏洞复现与分析