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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2018-18912 — Easy File Sharing Web Server 7.2におけるSEHベースのバッファオーバーフロー - 認証されたHTTP POSTパラメータが例外ハンドラチェーンを破壊する方法の実証 | Kitploit
ツール/GitHubGitHub/themalwareguardian/cve-2018-18912
脆弱性分析エクスプロイトリバースエンジニアリングシェルコードウェブアプリケーション悪用デバッガ学習と教育ペイロード開発バイナリエクスプロイト
GitHubthemalwareguardian/cve-2018-18912

CVE-2018-18912

Easy File Sharing Web Server 7.2におけるSEHベースのバッファオーバーフロー - 認証されたHTTP POSTパラメータが例外ハンドラチェーンを破壊する方法の実証

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

人気

すべて見る →

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

すべてのツールを探索

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

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

🐞 CVE-2018-18912: Easy File Sharing Web Server 7.2 - スタックベースのバッファオーバーフロー (SEH)

Easy File Sharing Web Server 7.2 における SEH ベースのバッファオーバーフロー。認証された HTTP POST パラメータが例外ハンドラチェーンを破壊する方法を示しています。




📑 目次

  • このリポジトリの存在理由
  • この脆弱性が興味深い理由
  • コンテキストと影響を受けるソフトウェア
  • 脆弱性について
  • クラッシュのトリガー
  • エクスプロイト



🎓 このリポジトリの存在理由

このリポジトリは、メモリ破壊エクスプロイトを教える際に使用する教材の一部です(通常の業務に加えて、さまざまなサイバーセキュリティコースで教鞭をとり、次世代のリバースエンジニアの育成を支援しています)。

CVE-2018-18912 は、単純な EIP 上書きから SEH ベースのエクスプロイトに移行するために使用するケースです。学生が直接リターンアドレス上書きの仕組みを理解したら、次のステップとして、スタックが破壊されすぎてプログラムがリターン前に例外をトリガーする場合に何が起こるか、そして例外ハンドラチェーンが代わりに攻撃対象となることを理解します。この CVE はその移行を明確に示しています。オーバーフローは SEH チェーンに到達するのに十分な深さがあり、エクスプロイトのパスは、すべてのエクスプロイト開発者が理解すべき古典的な POP POP RETN テクニックに従います。ROP によるオプションの DEP バイパスは、さらに進みたい学生のための拡張として残されています。同じオーバーフロー、異なるガジェット戦略、はるかに難しい問題です。




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

この脆弱性は、Easy File Sharing Web Server 7.2 に影響を与えます。これは、単純なファイル共有に広く使用されていた軽量な Windows ウェブサーバーアプリケーションです。このソフトウェアは、現代のセキュリティ緩和策を考慮せずに書かれていました。教育の観点からこのケースが特に興味深いのは、関与する要因の組み合わせです:

  • 認証が必要ですが、基本レベルにすぎません。 これは、攻撃者が認証情報を入手したシナリオをモデル化しており、実際のポストエクスプロイトでは一般的です。
  • オーバーフローは SEH ベースです。 クラッシュはリターンアドレスを直接上書きしません。代わりに、スタック上の構造化例外ハンドラチェーンを破壊し、異なるエクスプロイト技法を必要とします。
  • 脆弱なエンドポイントは POST リクエストです。 標準的な HTTP ツールで簡単に再現でき、Web アプリケーションを扱ったことがある人には馴染みがあります。
  • DEP バイパスはオプションです。 エクスプロイトは、DEP が無効なシステムでは、直接的な SEH + ショートジャンプ + シェルコードのアプローチで動作します。DEP が有効な場合、同じオーバーフローを拡張して、ImageLoad.dll のガジェットを使用した ROP チェーンで VirtualProtect を呼び出してからシェルコードに制御を移すことができます。

この組み合わせにより、CVE-2018-18912 は基本を超えたエクスプロイト開発技法を教えるための優れたケースとなっています。




🔍 コンテキストと影響を受けるソフトウェア

Easy File Sharing Web Server 7.2 は、ユーザーが HTTP 経由でファイルを共有できる Windows アプリケーションです。ファイルブラウジング、ユーザー認証、組み込みのフォーラムシステムなどの機能が含まれています。

フォーラム機能は、新しいトピックを作成するための POST リクエストを受け付けます。このエンドポイントで処理されるフォームフィールドの 1 つは author パラメータです。内部的には、アプリケーションはこのユーザー制御の値を、長さを検証せずに固定サイズのスタックバッファにコピーします。

この脆弱性は 2018 年に発見され報告されました。その後すぐに元の PoC が公開され、クラッシュと、バンドルされた ImageLoad.dll モジュールからの ROP ガジェットを含む動作するエクスプロイトチェーンの両方を示しています。

主な技術的詳細:

  • 脆弱性タイプ: スタックベースのバッファオーバーフロー (SEH)
  • 影響を受けるバージョン: Easy File Sharing Web Server 7.2
  • 影響を受けるエンドポイント: POST /forum.ghp
  • 脆弱なパラメータ: author
  • 影響: リモートコード実行



⚠️ 脆弱性について

Easy File Sharing Web Server は、ユーザーが新しいフォーラムトピックを作成するときに、/forum.ghp への HTTP POST リクエストを処理します。受け入れられるパラメータの 1 つは author であり、長さチェックなしでローカルのスタックバッファにコピーされます。

バイナリをリバースエンジニアリングすると、このフォームフィールドのハンドラが固定サイズのバッファと安全でないコピー操作を使用していることが観察できます。脆弱なロジックの簡略化されたバージョンは次のようになります:

root@kitploit:~
char author_buffer[64];

strcpy(author_buffer, user_input);

宛先バッファは固定サイズであり、入力長が検証されないため、author フィールドに十分に長い文字列を送信すると、コピーがバッファの終端を超えて書き込まれます。

より多くのデータが書き込まれるにつれて、スタックレイアウトが破壊されます。単純なリターンアドレスの上書きとは異なり、オーバーフローはスタックに保存された構造化例外ハンドラ (SEH) チェーンに到達します。破壊されたスタックの結果として例外がトリガーされると、OS は SEH チェーンを辿り、攻撃者が制御するハンドラアドレスに制御を移します。

したがって、エクスプロイトの流れは SEH 上書きテクニックに従います:

  1. 長い入力がスタックを上書きし、nSEH および SEH ハンドラポインタを含みます。
  2. メモリ破壊により例外がトリガーされます。
  3. OS が上書きされたハンドラアドレスを呼び出します。
  4. POP POP RETN ガジェットを使用して、nSEH 領域に実行を転送します。
  5. 前方へのショートジャンプが SEH レコードをスキップし、シェルコード領域に実行をリダイレクトします。
  6. シェルコードが実行されます。

これにより、この脆弱性は基本的な EIP 上書きよりもエクスプロイトが複雑になりますが、現実世界のシナリオをよりよく代表するものになります。




💥 クラッシュのトリガー

クラッシュは、有効な認証情報で認証した後、/forum.ghp への POST リクエストの author パラメータに長い文字列を送信することで再現できます。Python を使用した例:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 500

request = (
	b"POST /forum.ghp?forumid=1 HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Cookie: UserID=test; PassWD=test; SESSIONID=1234\r\n"
	b"Connection: close\r\n"
	b"\r\n"
	b"author=" + payload + b"&passwd=test&title=test&content=test&Submit=Submit\r\n"
)

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

デバッガで実行すると、クラッシュは破損した SEH チェーンとアクセス違反を示し、ユーザー制御のデータが例外ハンドラポインタを上書きしたことを確認できます。




💣 エクスプロイト

このリポジトリの目標は、クラッシュを示すだけでなく、実際の SEH ベースのエクスプロイトを開発する際に使用される方法論に従って、完全なエクスプロイトプロセスを段階的に説明することです。

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

そこには、この CVE をエクスプロイトするために使用された完全なワークフローが含まれています:

  • author パラメータをファジングしてクラッシュを特定する。
  • スタック上の nSEH と SEH の正確な位置を特定するためのオフセット発見。
  • ペイロードを破壊するバイトを特定するための悪い文字解析。
  • ロードされたモジュールから POP POP RETN ガジェットを使用した SEH チェーン上書き。
  • シェルコードの配置と実行。
ツールをダウンロード