Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-52614 — Il existe une vulnérabilité d'injection SQL dans le backend de Ruoyi v4.8.3 | Kitploit
Outils/GitHubGitHub/chinesespeople/cve-2026-52614
Cassage de Mots de PasseAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'Intrusion
GitHubchinesespeople/cve-2026-52614

CVE-2026-52614

Il existe une vulnérabilité d'injection SQL dans le backend de Ruoyi v4.8.3

Voir le dépôt
111il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-52614 - RuoYi v4.8.3 : contournement de filterKeyword par injection SQL

中文 | Anglais

Autorisation requise / 仅限授权测试
Ce dépôt est destiné uniquement à la recherche en sécurité et aux tests autorisés. Ne l'utilisez pas contre des systèmes sans autorisation explicite.
本仓库仅用于安全研究与已获明确授权的测试。请勿对未授权系统使用。

中文说明

漏洞简介

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 为本地授权环境中的成功验证截图:

Successful verification

修复建议

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

Anglais

Résumé

Le point d'entrée /tool/gen/createTable du module de génération de code de RuoYi v4.8.3 accepte des instructions SQL de création de tables de la part d'utilisateurs authentifiés du back‑office. Ce point d'entrée appelle SqlUtil.filterKeyword() pour bloquer les mots‑clés SQL dangereux. Cependant, l'implémentation supprime d'abord tous les espaces blancs de l'entrée avant de vérifier les mots clés de la liste noire qui contiennent une espace de fin, par exemple select , insert , drop . Ces entrées ne peuvent donc pas correspondre à l'entrée normalisée.

Une instruction CREATE TABLE ... AS SELECT ... (CTAS) peut passer la vérification de type Druid MySqlCreateTableStatement tout en exécutant une SELECT. Un attaquant disposant d'une session back‑office valide peut exploiter ce comportement pour réaliser une injection SQL aveugle booléenne, extraire des données sensibles et créer des tables.

Conditions préalables

  • La cible exécute RuoYi v4.8.3.
  • Le testeur dispose d'un JSESSIONID de back‑office authentifié et valide.
  • Le compte authentifié peut accéder aux points d'entrée du module de génération de code.
  • La base de données et son compte configuré autorisent les opérations CTAS.

Fonctionnement de la preuve de concept

Le script récupère le hachage du mot de passe de l'utilisateur admin et le sel depuis sys_user à l'aide de l'oracle suivant :

  1. Créer une table intermédiaire contenant login_name, password et salt.
  2. Créer une table de test par caractère candidat avec une condition SUBSTRING().
  3. Quand la condition est vraie, CTAS retourne une ligne et la table de test n'est pas automatiquement importée dans la liste des tables du générateur.
  4. Quand la condition est fausse, CTAS retourne zéro ligne et la table est automatiquement importée, ce qui la rend visible via /tool/gen/list.
  5. Utiliser cette différence pour récupérer le hachage du mot de passe et le sel caractère par caractère.

Prérequis

  • Python 3.8+
  • Une session back‑office RuoYi valide et autorisée
  • Paquets Python : requests, urllib3

Installer les dépendances :

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

Utilisation

Ouvrez exp.py et remplacez les deux lignes suivantes dans la section de configuration en haut du fichier :

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

Où :

  • TARGET est l'URL de base RuoYi à tester, par exemple http://127.0.0.1:8080.
  • COOKIE est une session JSESSIONID back‑office authentifiée valide.

Après avoir remplacé l'URL et la session, exécutez :

root@kitploit:~
python exp.py

Le script crée une table intermédiaire et de nombreuses tables de test booléen dans la base de données cible. Utilisez‑le uniquement dans un environnement isolé ou explicitement autorisé, et demandez à l'administrateur de la base de données de supprimer les tables générées après le test.

Capture d'écran

exp.png montre une vérification réussie dans un environnement local autorisé :

Successful verification

Atténuation

  • Ne pas se fier aux listes noires de mots‑clés SQL ni exécuter directement du SQL fourni par l'utilisateur.
  • Corriger la logique de normalisation et de correspondance dans filterKeyword(), mais ne pas en faire le seul contrôle de sécurité.
  • Appliquer une autorisation stricte, une journalisation des opérations et une protection CSRF aux points d'entrée du module de génération de code.
  • Supprimer la capacité de création arbitraire de tables SQL ; si nécessaire, construire des instructions fixes à partir de paramètres structurés et validés.
  • Utiliser un compte de base de données à privilèges minimaux qui ne peut pas lire les tables sensibles ni effectuer des opérations CTAS/DDL inutiles.
  • Mettre à niveau vers une version officielle corrigée ou appliquer le correctif de sécurité du fournisseur.

Fichiers

  • exp.py - script de vérification / 验证脚本
  • exp.png - capture d'écran de vérification réussie / 验证成功截图
  • README.md - documentation bilingue de la vulnérabilité / 中英双语漏洞说明
Télécharger l’outil