Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/rideckszz/poc-cve-2019-9053
パスワードクラッキング脆弱性分析ウェブアプリケーション悪用CTF学習と教育ラボと実践
GitHubrideckszz/poc-cve-2019-9053

poc-CVE-2019-9053

Python 3で書かれたCVE-2019-9053向けの教育用PoCです。CMS Made Simple <= 2.2.9における時間ベースのブラインドSQLインジェクションです。このバージョンはCTF/ラボでの使用に合わせて調整されており、抽出時間を短縮するためのプリ設定済みプレフィックスとポルトガル語の説明メッセージが含まれています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

PoC CVE-2019-9053 - CMS Made Simple SQL Injection

CVE-2019-9053 の教育的な Python 3 PoC です。CMS Made Simple <= 2.2.9 の time-based blind SQL Injection の脆弱性を利用します。

このバージョンは CTF/ラボでの使用向けに変更されています。抽出時間を短縮するための事前設定されたプレフィックスと、学生がエクスプロイトの仕組みを理解できるようにするポルトガル語での説明メッセージが含まれています。

警告

このプロジェクトは、教育目的、管理されたラボ、CTF 環境のみを対象としています。

明示的な許可なく、第三者システムに対してこのコードを使用しないでください。

このリポジトリの作者は、この資料の不正使用について一切責任を負いません。

脆弱性

CVE-2019-9053 は、古いバージョンの CMS Made Simple に影響し、エンドポイントの m1_idlist パラメータを介して認証なしの SQL Injection を許可します。

/moduleinterface.php?mact=News,m1_,default,0

SQL クエリの応答はページに直接表示されないため、このエクスプロイトは time-based blind SQL Injection と呼ばれる技術を使用します。

エクスプロイトの仕組み

このエクスプロイトは、条件が真の場合にデータベースが sleep(1) を実行するようなペイロードを送信します。

概念例:

AND (
  SELECT sleep(1)
  FROM cms_users
  WHERE password LIKE '0c01%'
)

サーバーの応答が遅い場合、スクリプトはテストしたプレフィックスが正しいと判断します。

このようにして、以下のような機密情報を1文字ずつ再構築します:

  • パスワードのソルト
  • ユーザー名
  • メールアドレス
  • パスワードのハッシュ

この CTF バージョンでは、アクティビティ中に必要な時間を短縮するために、いくつかのプレフィックスがコード内に含まれています。

time-based blind SQL Injection とは?

SQL Injection は、アプリケーションがユーザー制御のデータを適切な処理なしに SQL クエリ内に挿入するときに発生します。

この場合、クエリの結果が HTTP レスポンスに直接表示されないため、注入は blind です。

また、攻撃者がサーバーの応答時間を応答チャネルとして使用するため、time-based です。テストした条件が真の場合、データベースは sleep() で遅延を実行します。偽の場合、応答は通常どおり返ります。

簡略化した例:

Pergunta feita pelo exploit:
"O hash da senha começa com 0c01?"

Se sim:
O banco executa sleep(1), e a resposta demora.

Se não:
A resposta vem sem atraso perceptível.

このプロセスを1文字ずつ繰り返すことで、エクスプロイトはページ上に直接表示されなくてもデータベースの値を再構築できます。

salt とは?

salt は、ハッシュを生成する前にパスワードと一緒に使用される追加の値です。

このチャレンジでは、CMS Made Simple は次のようなロジックを使用します:

md5(salt + password)

例:

salt = 1dac0d92e9fa6bb2
password = exemplo123

ハッシュは次から計算されます:

1dac0d92e9fa6bb2exemplo123

salt は、事前計算されたテーブルを使った攻撃を困難にし、同じパスワードでも異なるコンテキストでは異なるハッシュを生成できるようにするために使われます。

それでも、md5(salt + password) は古くて脆弱なパスワード保存方法です。現代のシステムでは、以下のようなパスワード専用のアルゴリズムを使用する必要があります:

  • Argon2
  • bcrypt
  • scrypt
  • PBKDF2

この CTF バージョンの変更点

このバージョンは、実践的なアクティビティでの使用を容易にするために調整されています。

主な変更点:

  • コードを Python 3 に対応。
  • ポルトガル語の説明バナー。
  • エクスプロイトの仕組みについてのターミナルでの簡単な説明。
  • 抽出を高速化するための既知のプレフィックス。
  • salt とハッシュ用に最適化された16進文字セット。
  • salt とハッシュのサイズ制限。
  • ワードリストを使ったクラッキングオプション。

チャレンジで使用される値:

Salt completo: 1dac0d92e9fa6bb2
Username: mitch
Email: [email protected]
Hash completo: 0c01f4468bd75d7a84c7eb73846e8d96

エクスプロイトに設定されたプレフィックス:

Salt prefix: 1dac0d92
Username prefix: mit
Email prefix: admin@
Hash prefix: 0c01f446

これらのプレフィックスは攻撃のロジックを削除するものではなく、ラボでのアクティビティに必要な時間を短縮するだけです。

リポジトリ構造

poc-CVE-2019-9053/
├── exploit_ctf.py
├── requirements.txt
├── README.md
├── wordlist-example.txt
└── .gitignore

必要条件

  • Python 3
  • requests
  • termcolor

インストール

リポジトリをクローンします:

git clone https://github.com/SEU_USUARIO/poc-CVE-2019-9053.git
cd poc-CVE-2019-9053

仮想環境を作成します:

python3 -m venv .venv

仮想環境を有効にします:

source .venv/bin/activate

依存関係をインストールします:

pip install -r requirements.txt

requirements.txt

requirements.txt ファイルには次が含まれている必要があります:

requests
termcolor

使用方法

基本的な実行:

python3 exploit_ctf.py -u http://target/cms

ワードリストを使用してパスワードのクラックを試みる実行:

python3 exploit_ctf.py -u http://target/cms --crack -w wordlist-example.txt

スクリプトのヘルプを表示:

python3 exploit_ctf.py -h

ワードリストの例

wordlist-example.txt ファイルには次が含まれます:

wrongpassword
admin123
dieema123
password
123456

期待される出力例

[+] Salt da senha encontrado: 1dac0d92e9fa6bb2
[+] Username encontrado: mitch
[+] Email encontrado: [email protected]
[+] Hash da senha encontrado: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Senha encontrada: dieema123

クラッキングの説明

エクスプロイトがパスワードのソルトとハッシュを抽出した後、ワードリストを使用して平文のパスワードを発見しようと試みることができます。

テストされるロジックは次のとおりです:

md5(salt + senha_candidata)

ワードリストの各パスワードについて、スクリプトはハッシュを計算し、データベースから抽出したハッシュと比較します。

概念例:

candidate_hash = md5("1dac0d92e9fa6bb2" + "dieema123")

結果が抽出したハッシュと一致すれば、パスワードが見つかったことになります。

実行時間に関する注意事項

Time-based SQL Injection は、各文字を複数のリクエストでテストする必要があるため、通常は遅いです。

このバージョンでは、以下を使用して時間を短縮しています:

  • 既知のプレフィックス。
  • salt とハッシュ用の16進文字セット。
  • salt とハッシュの既知の最大サイズ。
  • 正しい文字ごとに1秒の遅延。

それでも、時間は以下によって変わる可能性があります:

  • ネットワークの遅延。
  • サーバーの負荷。
  • データベースのパフォーマンス。
  • TIME_DELAY に設定された値。

偽陽性または偽陰性が多すぎる場合は、コード内の TIME_DELAY の値を増やしてください。

クレジット

CTF 向けに修正された Python 3 バージョン: Derick G. Andrighetti。

元々は Certimeter Group の Daniele Scanu によって公開された古い Python 2 の公開 PoC に基づいています。

参考

  • CVE-2019-9053
  • CMS Made Simple <= 2.2.9
  • 技術: time-based blind SQL Injection

ライセンス

教育目的での使用。

この資料は、学習、ラボでのデモンストレーション、CTF アクティビティを目的として作成されました。

ツールをダウンロード