浅谈“Jboss远程代码执行”

一:漏洞名称:

Jboss远程代码执行, Jboss远程命令执行

描述:

JBOSS默认配置会有一个后台漏洞,漏洞发生在jboss.deployment命名空间,中的addURL()函数,该函数可以远程下载一个war压缩包并解压。 如果压缩包里含有webshell文件,是直接可以解析的。

检测条件:

被测网站采用了JBOSS中间件架构

检测方法:

  1. 对于采用JBOSS的网站,首先判断其版本,如果版本为1.0.x版本,则可通过对其控制台的访问来判断,访问http://127.0.0.1:8080/jmx-console/,出现以下页面,则此漏洞可被利用:浅谈“Jboss远程代码执行”

下拉找到如下图所示

 

浅谈“Jboss远程代码执行”

 

点击flavor=URL,type=DeploymentScanner进入

浅谈“Jboss远程代码执行”

在输入框中写入war压缩文件webshell的url地址,如上图

点击invoke执行界面获得一个jsp的webshell,如下图

浅谈“Jboss远程代码执行”

2.或者用工具jboss_exploit_fat.jar进行远程命令执行来判断是否存在漏洞,如图所示:

浅谈“Jboss远程代码执行”

 

漏洞修复:

给jmx-console加*问密码并且执行以下修复方式:

1.在 ${jboss.server.home.dir}/deploy下面找到jmx-console.war目录编辑WEB-INF/web.xml文件 去掉 security-constraint 块的注释,使其起作用。

2.编辑以下文件:

编辑

WEB-INF/classes/jmx-console-users.properties

server/default/conf/props/jmx-console-users.properties (version >=4.0.2)和

WEB-INF/classes/jmx-console-roles.properties

或server/default/conf/props/jmx-console-roles.properties(version >=4.0.2) 添加用户名密码

3.编辑WEB-INF/jboss-web.xml去掉 security-domain 块的注释 ,security-domain值的映射文件为 login-config.xml (该文件定义了登录授权方式)。

4.对于invoker,采用以下方案:

升级相关的JBOSS中间件到最新版本,或者对该删除 $JBOSS_HOME/[server]/all/deploy 和$JBOSS_HOME/[server]/default/deploy下的Jmx-console.war 、Web-console.war这两个.War文件来禁止对Jmx-console和Web-console的访问。

实际案例:

(缺失,资料不全)

问题出现在$JBOSS_HOME/[server]/default/deploy下的Http-invoker.sar/invoker.war包上,通过删除该.war文件已经修复该问题

其他补充说明:

可参考这篇文章浅谈“异常信息泄露(应用程序错误)”来了解JBoss

以下包含有jboos远程命令执行漏洞:(参考:https://www.onebug.org/websafe/75730.html

访问控制不严导致的漏洞

  • JMX Console未授权访问Getshell
  • JMX Console HtmlAdaptor Getshell(CVE-2007-1036)
  • JMX控制台安全验证绕过漏洞(CVE-2010-0738)
  • Administration Console 弱⼝令 Getshell

反序列化漏洞

  • JBoss JMXInvokerServlet 反序列化漏洞 (CVE-2015-7501)
  • JBoss EJBInvokerServlet 反序列化漏洞
  • JBosS AS 6.X 反序列化漏洞 (CVE-2017-12149)
  • JBoss 4.x JBossMQ JMS 反序列化漏洞 (CVE-2017-7504)