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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2020-13768 — MiniShare 1.4.1 における、単一の HTTP PUT リクエストでトリガー可能なスタックベースのバッファオーバーフロー。 | Kitploit
ツール/GitHubGitHub/themalwareguardian/cve-2020-13768
脆弱性分析エクスプロイトシェルコードデバッガウェブセキュリティファジングペネトレーションテスト学習と教育ペイロード開発バイナリエクスプロイト
GitHubthemalwareguardian/cve-2020-13768

CVE-2020-13768

MiniShare 1.4.1 における、単一の HTTP PUT リクエストでトリガー可能なスタックベースのバッファオーバーフロー。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

🐞 CVE-2020-13768: MiniShare 1.4.1 - スタックベースのバッファオーバーフロー

MiniShare 1.4.1 におけるスタックベースのバッファオーバーフロー。単一の HTTP PUT リクエストで到達可能。




📑 目次

  • このリポジトリの意図
  • この脆弱性が興味深い理由
  • 背景と影響を受けるソフトウェア
  • 脆弱性について
  • クラッシュの再現
  • エクスプロイト



🎓 このリポジトリの意図

このリポジトリは、メモリ破壊エクスプロイトの教育用資料の一部です(普段の業務に加えて、私は複数のサイバーセキュリティコースで教鞭をとり、次世代のリバースエンジニアを育成しています)。

CVE-2020-13768 は、シンプルなネットワーク向けサーバが標準プロトコルメソッドを通じて古典的なスタックベースのバッファオーバーフローを露出し得ることを示す事例として使用しています。脆弱なエンドポイントは認証不要で、オーバーフローは直接的な EIP の上書きであり、エクスプロイトの経路はクリーンで明確に定義されています。これは、現実的な無認証リモートシナリオにおいて、完全なエクスプロイト手法を学ぶための理想的なケースです。

さらに、このケースが教育上の演習として興味深い点は、同じ根本原因(固定サイズのスタックバッファに未サニタイズの入力がコピーされる)が、同一バイナリに対する複数の CVE エントリに現れていることです。CVE-2018-19861、CVE-2018-19862、CVE-2019-17601 はすべて同一クラスの脆弱性を記述しており、異なる研究者が異なる HTTP メソッドやエンドポイントを通じて報告したために別々の CVE 番号が割り当てられました。これは、CVE 番号だけでなく根本原因に注目することを学生に教える良い機会となります。




💡 この脆弱性が興味深い理由

この脆弱性は MiniShare 1.4.1 に影響します。MiniShare は、シンプルなローカルファイル共有のために設計された、現在は開発が終了した軽量 Windows HTTP サーバです。このソフトウェアは最新のセキュリティ対策を念頭に置かずに作成されました。教育の観点からこのケースが特に興味深いのは、以下の要素が組み合わさっている点です。

  • 認証不要。HTTP PUT メソッドは資格情報のチェックなしに処理されます。ネットワーク上の任意のリモート攻撃者が、単一の細工されたリクエストで脆弱性を引き起こせます。
  • 攻撃ベクトルとしての標準プロトコルメソッド。オーバーフローは HTTP PUT リクエストを通じて発生します。カスタムプロトコルや不明瞭なコマンドではありません。これは、標準的でよく知られたプロトコルメソッドでも、プロプライエタリなインターフェースと同様にエクスプロイトペイロードを運べることを示しています。
  • 直接的な EIP の上書き。オーバーフローは保存されたリターンアドレスに直接到達して上書きするため、SEH チェーンを伴わない、教科書通りのバニラスタックバッファオーバーフローとなります。
  • 同一バイナリに複数の CVE。CVE-2018-19861、CVE-2018-19862、CVE-2019-17601 は同一ソフトウェアにおける同一クラスの脆弱性を記述しています。異なる研究者が異なる HTTP メソッドやエンドポイントを報告したため、別々の CVE エントリが割り当てられましたが、バイナリをリバースエンジニアリングすると、すべてが同じ根本原因(固定サイズのスタックバッファに長さチェックなしで未サニタイズの入力がコピーされる)を共有していることが明らかになります。

これらの組み合わせにより、CVE-2020-13768 は、現実的な無認証シナリオにおいてネットワークベースのバッファオーバーフローエクスプロイトの基礎を教えるための優れた事例となっています。




🔍 背景と影響を受けるソフトウェア

MiniShare は、LAN 上でのクイックなローカルファイル共有を目的として設計された最小限の Windows HTTP サーバです。TCP ポート 80 で待ち受け、GET や PUT を含む限られた HTTP メソッドのサブセットを処理します。PUT ハンドラは受信リクエストを処理し、URI パスを固定サイズのスタックバッファにコピーしますが、その長さを検証しません。

主な技術的詳細:

  • 脆弱性の種類: スタックベースのバッファオーバーフロー
  • 影響を受けるバージョン: MiniShare 1.4.1 およびそれ以前
  • 影響を受けるエンドポイント: HTTP PUT リクエスト
  • 脆弱なコンポーネント: PUT ハンドラ内の URI パス処理
  • 認証の必要性: 不要
  • 影響: リモートコード実行



⚠️ 脆弱性について

MiniShare は受信した HTTP リクエストを処理し、メソッドに基づいて適切なハンドラに振り分けます。PUT ハンドラはリクエストから URI パスを抽出し、長さをチェックせずに固定サイズのスタックバッファにコピーします。

脆弱なロジックを簡略化すると次のようになります。

root@kitploit:~
char path_buffer[256];

strcpy(path_buffer, uri_path);

宛先バッファは固定サイズであり、入力長が検証されないため、PUT リクエスト内に十分に長い URI を送信すると、コピーがバッファの末尾を超えて書き込まれ、最終的にスタック上の保存されたリターンアドレス (EIP) に到達して上書きします。

脆弱な関数がリターンすると、CPU は攻撃者が制御する値をスタックから EIP にロードし、そのアドレスにジャンプします。そのアドレスがシェルコードを含む攻撃者制御のデータを指している場合、任意のコード実行が達成されます。




💥 クラッシュの再現

クラッシュは、HTTP PUT リクエスト内に過剰に長い URI を送信することで再現できます。認証は不要です。Python を使用した例:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 3000

request = (
	b"PUT /" + payload + b" HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Connection: close\r\n"
	b"\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()

デバッガで実行すると、EIP がユーザ制御のデータで上書きされたクラッシュが発生します。

root@kitploit:~
EIP = 41414141

これにより、保存されたリターンアドレスがオーバーフローによって破損したことが確認できます。




💣 エクスプロイト

このリポジトリの目的は、クラッシュのデモンストレーションだけでなく、実際のスタックベースのエクスプロイトを開発する際に使用される手法に沿って、完全なエクスプロイトプロセスを段階的に解説することでもあります。

メインの README を簡潔に保つため、詳細なエクスプロイトノート、スクリプト、デバッガの手順は、このリポジトリ内の Vulnerability 📂 フォルダに配置しています。

そこには、この CVE をエクスプロイトするために使用した完全なワークフローが含まれており、以下の内容が含まれます。

  • PUT URI のファジングによるクラッシュの特定
  • EIP のスタック上の正確な位置を特定するためのオフセット探索
  • ペイロードを破損させるバイトを特定するための不良文字分析
  • ASLR がないロード済みモジュールからの JMP ESP ガジェットの特定
  • シェルコードの配置と実行
ツールをダウンロード