# N/A
## 概述
RuoYi v4.7.9 及更早版本中存在 SQL 注入漏洞。
## 影响版本
- RuoYi **v4.7.9 及之前版本**
## 漏洞细节
漏洞位于 `SqlUtil.java` 文件的 `createTable` 函数,攻击者可通过构造恶意输入利用 SQL 注入,继而执行任意代码。
## 影响
攻击者可利用该漏洞远程执行任意代码,可能导致数据泄露、系统被控等安全事件。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|---|---|---|
| 1 | None | https://github.com/mrlihd/CVE-2024-57521-SQL-Injection-PoC | POC详情 |
标题: CVE-2024-57521-SQL-Injection-PoC/README.md at main · mrlihd/CVE-2024-57521-SQL-Injection-PoC · GitHub -- 🔗来源链接
标签:
神龙速读:
## 关键信息摘要
### 漏洞概述
- **漏洞类型**: 验证后SQL注入,发生在RuoYi框架的`createTable`特性中。
- **漏洞编号**: CVE-2024-57521
- **影响范围**: RuoYi v4.7.9及以下版本
- **相关漏洞**: 它绕过了CVE-2024-42900的修复措施,因为原有的SQL注入过滤在`filterKeyword`函数中不够充分,可以通过替换空格为`%0b`来绕过。
### 漏洞详细分析
- **代码问题点**: 在`ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java`文件中的SQL关键词黑名单过滤机制可被绕过。
- **绕过方法**: 尽管‘/ *’字符串被加入黑名单,但`%0b`仍可作为合法的SQL空格替代符被利用,触发SQL注入。
### 漏洞复现步骤
1. 以管理员身份登录。
2. 向`/tool/gen/createTable`发起包含SQL注入payload的请求:
- 成功查询: 通过`sql`参数发送含有`select%0b`的创建表语句,如图所示。
- 失败查询: 类似发送但构造一个返回假的结果的SQL语句以验证注入的存在。
3. 使用提供的Python PoC工具,利用布尔型SQL注入泄露数据库信息(例如版本号)。
### 影响与修复建议
- **影响**: 具有管理员权限的攻击者可完全控制数据库,包括导出用户凭证和系统配置信息。
- **修复措施**:
1. 完善过滤机制,加入对`%0b`字符的过滤。
2. 精细化SQL关键词过滤,取消`select`关键词的末尾空格。
3. 强烈建议升级RuoYi CMS至4.8.0以获得完整安全增强。
标题: GitHub - mrlihd/CVE-2024-57521-SQL-Injection-PoC -- 🔗来源链接
标签:
神龙速读:
## 关键信息总结
### 漏洞详情
- **漏洞名称**: Authenticated SQL Injection in RuoYi v4.7.9
- **CVE编号**: CVE-2024-57521
- **相关CVE**: Bypass of CVE-2024-42900
### 影响版本
- **产品**: RuoYi Framework
- **版本**: ≤ 4.7.9
### 漏洞分析
- **原因**: 黑名单关键词过滤不充分,导致可以通过绕过SQL注入攻击。
- **具体问题**: 在`filterKeyword`方法中,正则表达式`select `无法匹配`select%0b`。攻击者可以利用`%0b`作为替代字符触发SQL注入。
### 复现步骤
1. 以管理员身份登录。
2. 发送`createTable`请求。
- **注入TRUE查询**: `sql=CREATE%20table%20j2iz96_666%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201=1`
- **注入FALSE查询**: `sql=CREATE%20table%20j2iz96_665%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201=3`
### 影响
- 攻击者可以以管理员权限转储整个数据库,包括其他用户凭据和系统配置。
### 建议
1. 过滤`%0b`字符。
2. 筛选关键字`select`,而不是`select `(移除尾部空格)。
3. 更新CMS到RuoYi的4.8.0版本。
标题: Ruoyi 4.7.9 SQL Injection · Issue #IBC976 · 若依/RuoYi - Gitee -- 🔗来源链接
标签:
神龙速读:
## 关键信息
### 漏洞描述
- **漏洞名称**: Ruoyi 4.7.9 SQL注入漏洞
- **CVE编号**: CVE-2022-4566
- **问题原因**: `ruoyi-common/src/main/java/com/ruoyi/util/SqlUtil.java` 文件中的 SQL 关键字验证不足,可以使用 `%0b` 代替空格绕过正则表达式,从而导致 SQL 注入。
### Proof of Concept (PoC)
1. **登录 admin 账号**
2. **发送 createTable 请求**
- **TRUE query**:
```sql
sql=CREATE%20table%20j2iz96_666%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201%3d0%20AND%0bIF((ascii(substring((select%0b%40%40version)%2c18%2c1))%3d45%2c%201%2c%200)%2f0)%3b
```
- **FALSE query**:
```sql
sql=CREATE%20table%20j2iz96_665%20as%20SELECT%0b111%20FROM%20sys_job%20WHERE%201%3d0%20AND%0bIF((ascii(substring((select%0b%40%40version)%2c5%2c1))%3d44%2c%201%2c%200)%2f0)%3b
```
### 修复意见
- **过滤 `%0b` 字符**
- **过滤 `"select"` 而不是 `"select "`(不包含空格)**
### 讨论细节
- **修复问题**: 使用 `%0b` 绕过正则表达式导致 SQL 注入。
- **复现问题**: 在 Burp Suite 中发送请求,复制到浏览器会再次进行 `urlencode`,导致漏洞被利用。
- **poc 脚本**: 测试成功,提供获取数据库版本的 POC 脚本。
- **PR 提交**: 提交修复版本 `4.7.9 SQL Injection`
暂无评论