Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-52614 — Ruoyi v4.8.3 后台存在 SQL 注入漏洞 | Kitploit
工具/GitHubGitHub/chinesespeople/cve-2026-52614
密码破解漏洞分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubchinesespeople/cve-2026-52614

CVE-2026-52614

Ruoyi v4.8.3 后台存在 SQL 注入漏洞

查看仓库
1111个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-52614 - RuoYi v4.8.3 filterKeyword 绕过SQL注入

中文 | 英文

需要授权 / 仅限授权测试
本仓库仅供安全研究和已获明确授权的测试使用。请勿对未授权系统使用。
本仓库仅用于安全研究与已获明确授权的测试。请勿对未授权系统使用。

中文说明

漏洞简介

RuoYi v4.8.3 代码生成模块的 /tool/gen/createTable 接口允许后台用户提交建表 SQL。接口调用 SqlUtil.filterKeyword() 进行关键字黑名单过滤,但实现中先删除输入里的全部空白字符,再匹配包含尾随空格的关键字(例如 select 、insert 、drop ),导致相关规则无法命中。

通过 CREATE TABLE ... AS SELECT ...(CTAS)语句,可在通过 Druid MySqlCreateTableStatement 类型检查的同时执行 SELECT。具有有效后台会话的攻击者可据此构造布尔盲注,读取数据库中的敏感信息并创建数据表。

影响条件

  • 目标为 RuoYi v4.8.3。
  • 攻击者已登录后台并持有有效的 JSESSIONID。
  • 当前账号可以访问代码生成模块相关接口。
  • 数据库及当前数据库账号允许执行 CTAS 建表操作。

漏洞原理

验证脚本使用以下逻辑提取 sys_user 表中 admin 用户的密码哈希和 salt:

  1. 通过 CTAS 创建中间表,复制 login_name、password 和 salt 字段。
  2. 为每一个待判断字符创建测试表,并在 WHERE 中加入 SUBSTRING() 条件。
  3. 条件为真时,CTAS 返回数据,测试表不会被自动导入代码生成表列表。
  4. 条件为假时,CTAS 返回零行,测试表会被自动导入,可通过 /tool/gen/list 查询到。
  5. 根据测试表是否出现在列表中,逐字符恢复密码哈希和 salt。

环境要求

  • Python 3.8+
  • 有效且已授权的 RuoYi 后台会话
  • Python 依赖:requests、urllib3

安装依赖:

root@kitploit:~
python -m pip install requests urllib3

使用方法

打开 exp.py,修改顶部配置区中的以下两行:

root@kitploit:~
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

其中:

  • TARGET:替换为待测试的 RuoYi URL,例如 http://127.0.0.1:8080。
  • COOKIE:替换为登录后台后获得的有效 JSESSIONID session。

修改完成后直接运行:

root@kitploit:~
python exp.py

脚本会在目标数据库中创建中间表和大量布尔判断测试表。请仅在隔离或授权环境中使用,并在测试完成后由数据库管理员清理相关表。

验证截图

exp.png 为本地授权环境中的成功验证截图:

成功验证截图

修复建议

  • 不要使用字符串黑名单判断 SQL 安全性,更不要直接执行用户提交的 SQL。
  • 修正 filterKeyword() 的规范化与匹配逻辑,但不要将其作为唯一防护。
  • 对代码生成接口实施严格的权限控制、操作审计和 CSRF 防护。
  • 禁止或移除任意 SQL 建表能力;如业务确有需要,应使用结构化参数构造固定语句。
  • 使用最小权限数据库账号,限制读取敏感表以及执行 CTAS/DDL 的权限。
  • 升级到官方已修复版本或应用官方安全补丁。

英文

摘要

RuoYi v4.8.3 代码生成模块中的 /tool/gen/createTable 端点接受来自已验证后台用户的建表 SQL。该端点调用 SqlUtil.filterKeyword() 来阻止危险的 SQL 关键字。然而,其实现会在检查包含尾随空格的黑名单条目(例如 select 、insert 、drop )之前移除输入中的所有空白字符,导致这些条目无法匹配规范化后的输入。

通过 CREATE TABLE ... AS SELECT ...(CTAS)语句,可以在通过 Druid MySqlCreateTableStatement 类型检查的同时执行 SELECT。拥有有效后台会话的攻击者可以利用此行为进行基于布尔的盲 SQL 注入、敏感数据提取和表创建。

前置条件

  • 目标运行 RuoYi v4.8.3。
  • 测试者拥有有效的已验证后台 JSESSIONID。
  • 已验证的账户可以访问代码生成端点。
  • 数据库及其配置的账户允许 CTAS 操作。

PoC 工作原理

该脚本通过以下 oracle 从 sys_user 中恢复 admin 的密码哈希和 salt:

  1. 创建一个包含 login_name、password 和 salt 的中间表。
  2. 为每个候选字符创建一个测试表,并附带 SUBSTRING() 条件。
  3. 当条件为真时,CTAS 返回一行,测试表不会自动导入到生成器表列表中。
  4. 当条件为假时,CTAS 返回零行,测试表会自动导入,从而可以通过 /tool/gen/list 看到。
  5. 利用这一差异逐字符恢复密码哈希和 salt。

环境要求

  • Python 3.8+
  • 有效且已授权的 RuoYi 后台会话
  • Python 包:requests、urllib3

安装依赖:

root@kitploit:~
python -m pip install requests urllib3

使用方法

打开 exp.py,替换文件顶部配置区中的以下两行:

root@kitploit:~
TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

其中:

  • TARGET 是要测试的 RuoYi 基础 URL,例如 http://127.0.0.1:8080。
  • COOKIE 是有效的已验证后台 JSESSIONID 会话。

替换 URL 和会话后,运行:

root@kitploit:~
python exp.py

该脚本会在目标数据库中创建一个中间表和许多布尔测试表。请仅在隔离或明确授权的环境中使用,并在测试后请数据库管理员移除生成的表。

截图

exp.png 显示了本地授权环境中的成功验证:

成功验证截图

缓解措施

  • 不要依赖 SQL 关键字黑名单,也不要直接执行用户提供的 SQL。
  • 修正 filterKeyword() 中的规范化与匹配逻辑,但不要将其作为唯一的安全控制手段。
  • 对代码生成端点实施严格的授权、审计和 CSRF 保护。
  • 移除任意的 SQL 建表能力;如果需要,应从结构化的经过验证的参数构建固定的语句。
  • 使用最小权限数据库账户,使其无法读取敏感表或执行不必要的 CTAS/DDL 操作。
  • 升级到官方已修复版本或应用供应商的安全补丁。

文件

  • exp.py - 验证脚本
  • exp.png - 成功验证截图
  • README.md - 中英双语漏洞说明
下载工具