当前位置: 首页 > news >正文

中间件漏洞详解

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。

中间件是连接操作系统、数据库与上层应用的核心组件,承担着请求转发、资源调度、消息传递等关键功能。由于其部署广泛、配置复杂且需兼容多场景,成为攻击者的重要目标。中间件漏洞不仅包括软件自身代码缺陷,还涵盖默认配置不安全、依赖组件漏洞及配置错误衍生风险,可能导致服务器被控、数据泄露、内网横向渗透等严重后果。

一、中间件漏洞概述

1. 定义与核心危害

中间件漏洞指中间件在设计、开发或配置过程中存在的安全缺陷,攻击者可利用这些缺陷绕过认证、执行恶意代码、读取敏感文件或控制服务器。其核心危害包括:

远程代码执行(RCE):攻击者直接在目标服务器上运行任意命令(如植入后门、挖矿程序);

敏感信息泄露:泄露数据库账号密码、配置文件、用户数据等;

未授权访问:无需认证即可操作中间件核心功能(如管理控制台、消息队列);

内网渗透跳板:通过被控制的中间件横向攻击内网其他服务器。

2. 漏洞分类维度

按中间件功能类型可分为 6 大类,各类漏洞特点差异显著:

中间件类型

典型产品

核心风险点

Web 服务器中间件

Apache、Nginx、IIS

路径穿越、文件解析、命令执行

应用服务器中间件

Tomcat、WebLogic、JBoss

反序列化、WAR 包部署、AJP 漏洞

消息队列中间件

ActiveMQ、RabbitMQ

未授权访问、文件上传、RCE

缓存中间件

Redis、Memcached

未授权访问、主从复制 RCE

数据库中间件

MyCat、Sharding-JDBC

弱口令、SQL 注入

其他中间件

Nexus、Jenkins

仓库污染、脚本执行

二、各类中间件典型漏洞详解

(一)Web 服务器中间件:处理 HTTP 请求的核心组件

Web 服务器中间件直接面向互联网,漏洞利用门槛低、影响范围广,是最易被攻击的环节。

1. Apache HTTP Server

Apache 是全球使用最广泛的 Web 服务器,漏洞多集中于路径处理、协议解析及依赖组件。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

路径穿越与命令执行(CVE-2021-41773/CVE-2021-42013)

2.4.49 版本对路径规范化处理不完整,攻击者可通过../穿越目录;2.4.50 修复不彻底,可结合cgi-bin执行命令

高危

2.4.49、2.4.50

检测:发送GET /icons/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1请求;
修复:升级至 2.4.51+,禁用cgi-bin

Log4j2 远程代码执行(CVE-2021-44228)

Apache Log4j2 组件存在 JNDI 注入漏洞,中间件若集成该组件(如 Apache Flink、Kafka),攻击者可通过日志输入触发 RCE

严重

Log4j2 2.0-beta9~2.14.1

检测:扫描日志中是否包含${jndi:}关键字;
修复:升级 Log4j2 至 2.15.0+,添加log4j2.formatMsgNoLookups=true配置

Apache Struts2 系列漏洞(如 CVE-2017-5638)

Struts2(Apache 基金会框架)的 OGNL 表达式解析漏洞,攻击者通过 HTTP 参数注入恶意 OGNL 代码执行命令

高危

Struts2 2.3.5~2.3.31、2.5.0~2.5.10

检测:发送含%{#_memberAccess=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,#res=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#res.println("test"),#res.flush(),#res.close()}的请求;
修复:升级 Struts2 至 2.3.32 + 或 2.5.12+

2. Nginx

Nginx 以高性能著称,漏洞多源于配置错误或文件名解析逻辑缺陷。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

文件名逻辑漏洞(CVE-2013-4547)

Nginx 对文件名的 “空格” 和 “\0” 处理不当,攻击者可通过xxx.jpg%20%00.php将图片文件解析为 PHP 执行

中高危

0.8.41~1.4.3、1.5.0~1.5.7

检测:上传test.jpg%20%00.php并访问,查看是否执行 PHP 代码;
修复:升级至 1.4.4 + 或 1.5.8+,禁用cgi.fix_pathinfo=0

反向代理路径穿越(配置漏洞)

若 Nginx 配置为proxy_pass http://backend/$uri/,攻击者可通过../绕过代理规则访问后端敏感路径

高危

全版本(配置不当导致)

检测:发送GET /../admin HTTP/1.1请求,查看是否访问到未授权页面;
修复:使用proxy_pass http://backend/;(末尾加/),或添加valid_referers限制

短链接跳转漏洞(CVE-2018-16843)

Nginx 的rewrite模块处理//时逻辑缺陷,攻击者可构造http://nginx-server//example.com跳转至任意域名,用于钓鱼

中危

1.15.0~1.15.5

检测:访问//example.com查看是否跳转;
修复:升级至 1.15.6 + 或 1.16.0+

3. IIS(Internet Information Services)

IIS 是微软官方 Web 服务器,漏洞集中于旧版本(IIS 6.0)和配置缺陷。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

IIS 6.0 解析漏洞(目录名 +.asp)

IIS 6.0 对目录名的解析逻辑错误:若目录名为xxx.asp,则该目录下所有文件均被解析为 ASP 脚本

高危

IIS 6.0

检测:创建test.asp目录并上传test.txt,访问/test.asp/test.txt查看是否执行 ASP 代码;
修复:升级至 IIS 7.0+,删除*.asp目录解析规则

WebDAV 远程代码执行(CVE-2017-7269)

IIS 6.0 的 WebDAV 组件存在缓冲区溢出漏洞,攻击者通过PROPFIND请求发送超长字符串触发 RCE

高危

IIS 6.0

检测:使用 Metasploit 模块exploit/windows/iis/iis_webdav_scstoragepathfromurl;
修复:禁用 WebDAV,安装微软补丁 KB4012598

短文件名泄露(CVE-2010-2730)

IIS 7.0/7.5 对短文件名(8.3 格式)的处理缺陷,攻击者可通过~1枚举服务器文件(如test~1.txt)

中危

IIS 7.0、7.5

检测:发送OPTIONS /test~1* HTTP/1.1请求,查看响应状态码;
修复:禁用短文件名功能(修改注册表HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation=1)

(二)应用服务器中间件:部署 Java/.NET 应用的核心

应用服务器中间件负责解析动态脚本(如 JSP、ASP.NET),漏洞多为反序列化、后台部署或协议漏洞,危害极高。

1. Tomcat(Apache)

Tomcat 是最常用的 Java 应用服务器,漏洞集中于管理控制台和 AJP 协议。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

AJP 协议漏洞(Ghostcat,CVE-2020-1938)

Tomcat 的 AJP 协议(默认 8009 端口)未验证请求属性,攻击者可通过构造请求读取任意 JSP 文件、执行恶意代码

高危

6.0.0~6.0.45、7.0.0~7.0.104、8.5.0~8.5.64、9.0.0~9.0.44

检测:使用工具ghostcat-exp读取WEB-INF/web.xml;
修复:升级至 7.0.105+、8.5.65+、9.0.45+,或禁用 AJP 端口

后台 WAR 包部署漏洞(弱口令)

Tomcat 管理控制台(/manager/html)默认弱口令(admin/admin、tomcat/tomcat),攻击者登录后可部署恶意 WAR 包执行 RCE

高危

全版本(默认配置)

检测:尝试用默认口令登录/manager/html;
修复:修改tomcat-users.xml中的强口令,限制管理控制台访问 IP(在context.xml中添加allow="192.168.1.*")

PUT 方法任意文件上传(CVE-2017-12615)

Tomcat 配置允许PUT方法时,攻击者可通过PUT /test.jsp/ HTTP/1.1(末尾加/)绕过限制,上传 JSP 后门

高危

7.0.0~7.0.81

检测:发送PUT /test.jsp/ HTTP/1.1并写入 JSP 代码,访问该文件;
修复:升级至 7.0.82+,禁用PUT方法(在web.xml中配置org.apache.catalina.servlets.DefaultServlet的readonly=true)

2. WebLogic(Oracle)

WebLogic 是企业级 Java 应用服务器,漏洞数量多、利用成熟,是内网渗透的重点目标。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

控制台未授权访问 + RCE(CVE-2020-14882)

WebLogic 控制台存在权限绕过,攻击者无需认证即可访问/console/css/%252e%252e/%252e%252e/console.portal,并通过 “部署应用” 功能上传恶意 WAR 包执行 RCE

严重

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0

检测:直接访问上述 URL,查看是否进入控制台;
修复:升级至 12.2.1.4.0+,删除console目录或限制 IP

T3 协议反序列化(CVE-2019-2725)

WebLogic 的 T3 协议(默认 7001 端口)用于集群通信,攻击者可发送恶意反序列化 payload 触发 RCE

高危

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0

检测:使用工具ysoserial生成 T3 协议 payload 并发送;
修复:安装 Oracle 补丁,禁用 T3 协议(在config.xml中添加<disableT3Protocol>true</disableT3Protocol>)

SSRF 文件读取(CVE-2014-4210)

WebLogic 的uuddiexplorer组件存在 SSRF 漏洞,攻击者可通过uddiexplorer/SearchPublicRegistries.jsp的operator参数访问内网地址、读取文件

中高危

10.0.2.0、10.3.6.0

检测:构造operator=http://127.0.0.1:7001查看是否返回内网页面;
修复:删除uuddiexplorer目录,安装补丁 19289115

3. JBoss(Red Hat)

JBoss 是开源 Java 应用服务器,默认配置安全性极低,易被未授权访问。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

控制台未授权访问(默认无密码)

JBoss 管理控制台(/jmx-console、/web-console)默认无需认证,攻击者可直接操作 MBean(如部署应用)

高危

4.x、5.x、6.x

检测:直接访问/jmx-console,查看是否进入管理界面;
修复:在jmx-console/WEB-INF/jboss-web.xml中添加认证配置,设置强口令

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

JBoss 的/invoker/JMXInvokerServlet组件未限制反序列化,攻击者发送恶意 payload 触发 RCE

高危

5.x、6.x

检测:使用ysoserial生成JBossMQInvoker payload 并发送;
修复:删除invoker目录,升级至 7.x+

WAR 包部署漏洞(未授权)

攻击者通过/jmx-console/HtmlAdaptor调用jboss.web.deployment的deploy方法,上传恶意 WAR 包执行 RCE

高危

4.x、5.x、6.x

检测:调用 MBean 方法尝试部署 WAR 包;
修复:禁用jmx-console,限制 MBean 访问权限

(三)消息队列中间件:实现跨服务通信的组件

消息队列中间件用于异步通信,漏洞多为未授权访问和文件上传,可导致消息泄露或服务器被控。

1. ActiveMQ(Apache)

ActiveMQ 是开源消息队列,默认无认证,漏洞利用路径清晰。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

管理界面未授权访问

ActiveMQ 管理界面(默认 8161 端口)默认无认证,攻击者可查看队列、发送 / 接收消息,甚至上传文件

高危

5.0.0~5.18.0(默认配置)

检测:访问http://ip:8161/admin,查看是否无需登录进入;
修复:在jetty-realm.properties中设置管理账号密码,限制访问 IP

文件上传 RCE(CVE-2016-3088)

ActiveMQ 的fileserver组件允许上传文件,攻击者可上传恶意 JSP 文件(需结合路径穿越),访问后执行 RCE

高危

5.0.0~5.13.2

检测:通过/fileserver上传test.jsp,并通过../路径访问;
修复:升级至 5.13.3+,删除fileserver组件

路径穿越(CVE-2023-46604)

ActiveMQ 的api接口对路径处理不当,攻击者可通过../读取任意文件(如/conf/jetty-realm.properties)

中高危

5.0.0~5.17.6

检测:发送GET /api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost/../conf/jetty-realm.properties HTTP/1.1;
修复:升级至 5.18.0+

2. Redis

Redis 是高性能缓存中间件,未授权访问是其最核心漏洞,可直接导致服务器被控。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

未授权访问 + 数据操控

Redis 默认无密码、绑定0.0.0.0,攻击者可通过redis-cli连接,执行get/set操作泄露或篡改数据

高危

全版本(默认配置)

检测:执行redis-cli -h ip ping,若返回PONG则未授权;
修复:在redis.conf中设置requirepass 强密码、bind 127.0.0.1(仅本地访问)

主从复制 RCE(CVE-2022-0543)

攻击者搭建恶意 Redis 主服务器,诱使目标 Redis(从服务器)主动同步,加载恶意exp.so模块执行命令

严重

2.8.0~6.2.6(未授权或弱口令)

检测:尝试发送SLAVEOF 恶意IP 6379命令;
修复:禁用SLAVEOF命令(rename-command SLAVEOF ""),升级至 6.2.7+

持久化文件泄露

Redis 的 RDB/AOF 持久化文件包含敏感数据(如缓存的用户密码),攻击者可通过CONFIG GET dir/CONFIG GET dbfilename找到文件路径,再通过其他漏洞读取

中危

全版本

检测:执行CONFIG GET dir查看持久化目录;
修复:限制持久化文件权限(chmod 600 dump.rdb),避免缓存敏感数据

(四)数据库中间件:实现数据库分库分表、读写分离的组件

数据库中间件作为应用与数据库的 “桥梁”,漏洞多为弱口令和SQL 注入,可导致数据库权限泄露。

1. MyCat

MyCat 是开源 MySQL 中间件,常用于分库分表,默认配置存在弱口令。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

管理界面弱口令

MyCat 管理界面(默认 9066 端口)默认账号admin/123456,攻击者登录后可执行show @@datasource查看数据库账号密码

高危

全版本(默认配置)

检测:使用mysql -h ip -P 9066 -u admin -p123456登录;
修复:在server.xml中修改admin账号密码(如<user name="admin" password="StrongPass123!"/>)

SQL 注入(配置不当)

若 MyCat 未开启 SQL 拦截(sqlInterceptor),攻击者可通过应用传入的参数注入 SQL 语句,直接操作后端数据库

高危

全版本(配置缺陷)

检测:构造id=1' or '1'='1等注入语句;
修复:在schema.xml中开启sqlInterceptor=io.mycat.interceptor.impl.DefaultSqlInterceptor,使用预编译语句

2. Sharding-JDBC

Sharding-JDBC 是轻量级数据库中间件,漏洞多源于依赖组件和配置错误。

漏洞名称

漏洞原理

危害程度

影响版本

检测与修复方案

Log4j2 依赖漏洞(CVE-2021-44228)

Sharding-JDBC 默认集成 Log4j2,若使用受影响版本,攻击者可通过日志输入触发 RCE

严重

4.0.0~4.1.1(集成 Log4j2 2.0~2.14.1)

检测:检查pom.xml中 Log4j2 版本;
修复:升级 Log4j2 至 2.15.0+,或升级 Sharding-JDBC 至 4.1.2+

读写分离配置错误导致数据不一致

若 Sharding-JDBC 配置loadBalanceAlgorithmType=ROUND_ROBIN但未正确区分主从库,可能导致写操作发送到从库,引发数据不一致

低危(业务风险)

全版本(配置缺陷)

检测:执行INSERT语句后查看从库是否有数据;
修复:确保masterDataSourceName指向主库,slaveDataSourceNames指向从库

三、中间件漏洞共性防御策略

中间件漏洞的核心诱因是 “配置不安全” 和 “版本不更新”,需从基础加固、监控审计、应急响应三方面构建防御体系:

1. 基础配置加固(核心)

禁用默认配置:

删除默认账号(如 Tomcat 的tomcat用户、MyCat 的admin默认密码);

关闭不必要的服务 / 端口(如 Tomcat 的 AJP 端口、WebLogic 的 T3 端口、Redis 的 6379 端口暴露公网);

禁止危险功能(如 IIS 的 WebDAV、JBoss 的jmx-console、Redis 的SLAVEOF)。

权限最小化:

中间件运行使用低权限用户(如 Tomcat 用tomcat用户而非root,Redis 用redis用户);

限制文件权限(中间件目录只读,持久化文件仅所有者可读写);

数据库账号仅授予 “增删改查” 必要权限,避免root权限。

2. 版本与组件更新

及时关注厂商漏洞公告(Apache、Oracle、Red Hat 官网),优先修复 “严重”“高危” 漏洞;

定期更新中间件至最新安全版本(如 Tomcat 9.0.80+、WebLogic 12.2.1.4.0+);

扫描并更新依赖组件(如 Log4j2、Commons Collections),避免 “依赖链漏洞”。

3. 安全监控与审计

日志审计:开启中间件详细日志(如 Apache 的access.log、WebLogic 的server.log),定期检查异常请求(如${jndi:}、../、反序列化 payload);

入侵检测:部署 IDS/IPS 或 WAF,拦截已知攻击(如 Log4j2 攻击、Redis 未授权访问、SQL 注入);

定期扫描:使用漏洞扫描工具(Nessus、AWVS、绿盟远程安全评估系统),每季度至少一次全面扫描。

4. 应急响应

发现漏洞后立即隔离受影响服务器(如关闭公网端口、断开内网连接);

应用临时补丁(如禁用危险端口、删除漏洞组件),再逐步升级至安全版本;

排查是否存在数据泄露或恶意代码(如检查服务器是否有后门、挖矿程序),必要时恢复备份。


文章转载自:

http://yqHe2W96.xLLrf.cn
http://e3ikZMPS.xLLrf.cn
http://vgKojrTS.xLLrf.cn
http://uTdy9Sml.xLLrf.cn
http://9cbSME7x.xLLrf.cn
http://YLN6iLAd.xLLrf.cn
http://sArlxsRy.xLLrf.cn
http://z39TLhkV.xLLrf.cn
http://MHPWpI54.xLLrf.cn
http://ZKQIegfV.xLLrf.cn
http://uYDVQoCM.xLLrf.cn
http://TMJdCBQe.xLLrf.cn
http://uIQGhOJ7.xLLrf.cn
http://49qUNeeP.xLLrf.cn
http://ZAJLMRRC.xLLrf.cn
http://lb3KUxZm.xLLrf.cn
http://UDrEBJ9c.xLLrf.cn
http://WjB7HsBV.xLLrf.cn
http://2AEvNVCM.xLLrf.cn
http://AkWrVOWU.xLLrf.cn
http://SgMzgEp0.xLLrf.cn
http://a58KWBo8.xLLrf.cn
http://U02SaU65.xLLrf.cn
http://yd9VczuR.xLLrf.cn
http://xx40m5XF.xLLrf.cn
http://tlHpijrf.xLLrf.cn
http://yJ0cMwR2.xLLrf.cn
http://fSa7lBbO.xLLrf.cn
http://rBBsKPf7.xLLrf.cn
http://LjqCWYlx.xLLrf.cn
http://www.dtcms.com/a/377770.html

相关文章:

  • TC_Motion多轴运动-PID调节
  • Java 学习笔记(进阶篇3)
  • 金蝶云星空 调价表取历史价格
  • TwinCAT3人机界面1
  • C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
  • 【C++世界之string模拟实现】
  • 打工人日报#20250910
  • LeetCode100-206反转链表
  • function-call怎么训练的,预料如何构建
  • OpenLayers数据源集成 -- 章节四:矢量格式图层详解
  • 220V供电遥测终端 220V供电测控终端 选型
  • 【LLM】Transformer注意力机制全解析:MHA到MLA
  • 三十六、案例-文件上传-阿里云OSS-集成
  • 网编.hw.9.10
  • 4215kg轻型载货汽车变速器设计cad+设计说明书
  • Python数据可视化科技图表绘制系列教程(七)
  • 【 VMware Workstation 提示“虚拟机已在使用”怎么办?一篇文章彻底解决!】
  • WebSocket网络编程深度实践:从协议原理到生产级应用
  • 数字健康新图景:AI健康小屋如何重塑我们的健康生活
  • ⚡ Linux sed 命令全面详解(包括参数、指令、模式空间、保持空间)
  • Codeforces Round 1049 (Div. 2) D题题解记录
  • 视频分类标注工具
  • 【学习】vue计算属性
  • Torch 安装
  • 如何使用 DeepSeek 帮助自己的工作?的技术文章大纲
  • Object.values(allImages).forEach(src => { }
  • git rebase 的使用场景
  • 嵌入式场景kvdb数据库的使用(二)——UnQLite数据库的移
  • 基于MQTT的实时消息推送系统设计与实现(Java后端+Vue前端)
  • 柔性数组与队列杂记