内容简介:JBossJMXInvokerServlet 反序列化漏洞JBoss 5.x6.x 反序列化漏洞复现
JBoss5.x6.x 反序列化漏洞(CVE-2017-12149)
JBossJMXInvokerServlet 反序列化漏洞
0x01
JBoss 5.x6.x 反序列化漏洞复现
1.启动 docker 镜像
docker基于Centos7已搭建完成。
拉取项目git clone https://github.com/vulhub/vulhub.git
进入镜像:cd vulhub/jboss/CVE-2017-12149/
启动环境:docker-compose
up -d
访问 http://192.168. *.*:8080/打开Jboss页面:
- 理解 Java 反序列化漏洞
推荐学习Paper:Java反序列化漏洞从入门到深入: https://xz.aliyun.com/t/2041 。内容较多,先了解简单Java语法结构和面向对象编程基础,再学习序列化、反序列化的基本概念和漏洞成因。
(1)序列化:把 Java 对象转换为字节序列的过程便于保存在内存、文件、数据库中。ObjectOutputStream类的writeObject()方法可以实现序列化。
(2)反序列化:把字节序列恢复为Java对象的过程。ObjectInputStream类的readObject()方法用于反序列化。
(3)漏洞成因:暴露反序列化API或传入点 ,用户可以操作传入数据,并且反序列化的readObject()方法未对用户传入数据进行有效的安全检测,攻击者可以精心构造反序列化对象并执行恶意代码。
3.使用 工具 复现漏洞
(1)图形工具党:使用6哥的Java反序列化利用工具。
A.工具一键测试:
B.找到自动部署目录:先在文件管理中,找到可以自动部署的目录,shell上传的目录是:
/jboss-6.1.0.Final/server/default/deploy/ROOT.war/caidao.jsp
C.上传菜刀马:
D.菜刀连接成功:
(2)py脚本党:使用jexboss工具反弹shell
A. Jexboss工具下载: https://github.com/joaomatosf/jexboss
Windows下使用需先安装Py2.7、pip,再安装git Windows版。Linux使用更简单,安装Python,直接Git clone。以下是 Linux 下使用:
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -rrequires.txt
至此已经安装好了。
B.利用漏洞反弹shell,本次实验将Linux虚机反弹 shell 到Windows主机的nc监听端口:
先用nc在本机起个监听端口:
nc -lvnp 4444
C.执行攻击命令,检测到存在漏洞:
python jexboss.py -host http://192.168.64.151 :8080
D.后面是交互式选择,是否有admin-console权限,选择默认NO;
Exploitation JMXInvokerServlet选择yes:
E.选择反弹shell的主机IP和接收端口
F.在Windows主机监听的nc接收反弹shell成功:root权限
(3)专业的Java反序列化工具ysoserial:攻击需要构造带有需要执行Payload的ser文件,然后使用curl将二进制文件提交至目标服务器的invoker/readonly页面中。详见 https://github.com/vulhub/vulhub/tree/master/jboss/CVE-2017-12149
0x02 通过fofa搜索实际漏洞
1.用邮箱注册 https://fofa.so/ (类似于www.shodan.io)
2.搜索:位于印度的、并且header包含jboss的、并且端口是8080的资产
(1)命令:port=8080 &&header=jboss && country=IN
命令中的3个搜索条件是“与”的关系:
语法规则详见fofa的查询语法,搜索结果如下:
(2)找到一些jboss的IP,直接使用图形工具exp测试:
存在漏洞的主机,获取信息:
列出windows用户:命令net user
查看目录和文件:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Think Python
Allen B. Downey / O'Reilly Media / 2012-8-23 / GBP 29.99
Think Python is an introduction to Python programming for students with no programming experience. It starts with the most basic concepts of programming, and is carefully designed to define all terms ......一起来看看 《Think Python》 这本书的介绍吧!