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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2002-1120 — Savant Web Server 3.1 における古典的なスタックベースのバッファオーバーフロー。細工された HTTP リクエストによって、2000年代初頭のリモートメモリ破損を示しています。 | Kitploit
ツール/GitHubGitHub/themalwareguardian/cve-2002-1120
脆弱性分析エクスプロイトリバースエンジニアリングシェルコードデバッガウェブセキュリティファジングペネトレーションテスト学習と教育ペイロード開発バイナリエクスプロイト
GitHub
15ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
themalwareguardian/cve-2002-1120

CVE-2002-1120

Savant Web Server 3.1 における古典的なスタックベースのバッファオーバーフロー。細工された HTTP リクエストによって、2000年代初頭のリモートメモリ破損を示しています。

リポジトリを見る

🐞 CVE-2002-1120: Savant Web Server 3.1 - スタックベースのバッファオーバーフロー (エッグハンター)

2000年代初頭のリモートメモリ破壊を、巧妙に細工されたHTTPリクエストで実演するSavant Web Server 3.1の古典的なスタックベースのバッファオーバーフロー(2025年のほとんどのバッファオーバーフローCVEよりも初心者に多くの知識を要求する2002年の脆弱性)。




📑 目次

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



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

このリポジトリは、メモリ破壊エクスプロイトを教える際に使用する教材の一部です(通常業務に加えて、次世代のリバースエンジニアを育成するさまざまなサイバーセキュリティコースでも指導を行っています)。授業でスタックベースのバッファオーバーフローを取り上げる際には、おもちゃの例ではなく実際の事例を扱っており、このCVEは特に、基本的なEIP上書きの経験を持つ学生に挑戦させるために使用するものです。

その理由は、CVE識別子の年号はエクスプロイトの難易度を何も示さないからです。多くの学生は、古いCVEは単純で、オーバーフロー→JMP ESP→完了、というものだと思い込んでいます。しかし、このCVEはその逆を証明します。私が教える2025年のCVEの中には、この脆弱性クラスがより単純だったり制約が少なかったりするため、基本的にこれよりも簡単なものもあります。CVE-2002-1120 では、現代のエクスプロイトでは要求されないことを理解する必要があります。なぜ特定のオペコードをリクエストの一部で使用できないのか、無条件ジャンプがブロックされているときに必ず発動する条件付きジャンプをどのように作成するのか、通常シェルコードを置く場所に収まらない場合にどのように届けるのか、そしてエッグハンターがどのようにして、そうでなければエクスプロイトを不可能にするスペース問題を解決するのか、といったことです。

これは、受講者が本当に理解しているかどうかを確認するために私が割り当てるCVEです。




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

この脆弱性は、2002年のフリーウェアWindows HTTPサーバーであるSavant 3.1に影響します。2025年に研究する価値がある理由は、その古さではなく、導入される制約の組み合わせと、それを回避するために必要なテクニックにあります。

  • EIP後のスペースがない。 使用可能なバッファはリターンアドレスの前で約267バイト。それ以上は脆弱なバッファに到達しないため、シェルコードは通常のEIP後の位置に配置できません。
  • HTTPメソッドフィールドは実行可能。 Savantはメソッドをメモリにコピーして実行します。通常「GET」と綴られるバイトはコードとして扱われ、攻撃者はそこでオペコードを配置できますが、それは厳格な不良文字フィルターを通過するオペコードに限られます。
  • 2つの別々の不良文字リスト。 URIとメソッドフィールドは、Savant内部で異なるフィルタリングロジックを持っています。両方を独立して分析する必要があります。メソッドゾーンはURIよりもはるかに多くのバイトをブロックします。
  • 無条件JMPは不良文字。 \xeb はメソッドゾーンのフィルターを通過しません。常に発動する条件付きジャンプは、3つのオペコード(レジスタに値をロードし、より小さい値と比較し、その結果が以下でない場合にジャンプ)を使用して手動で構築する必要があります。
  • シェルコードが収まらない。 ジャンプが機能して実行がURIバッファに到達しても、約264バイトではリバースシェルには不十分です。実際のペイロードは別の場所、HTTPボディに配置する必要があります。Savantはこれをスタックとは別のヒープ領域に保存し、実行時にそれを探すためにエッグハンターが必要です。

これらの制約のそれぞれが、それ自体で教訓となります。




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

Savantは、任意のデスクトップコンピュータをWebサーバーに変えるために設計されたフリーウェアのオープンソースWindows HTTPサーバーです。TCPポート80で待機し、標準のHTTP GETリクエストを処理します。オーバーフローは、URIパスを固定サイズのスタックバッファにその長さを検証せずにコピーするハンドラで発生します。

主な技術的詳細:

  • 脆弱性タイプ:スタックベースのバッファオーバーフロー
  • 影響を受けるバージョン:Savant Web Server 3.1
  • 影響を受けるエンドポイント:HTTP GETリクエスト
  • 脆弱なコンポーネント:GETハンドラ内のURIパス処理
  • 必要な認証:なし
  • 影響:リモートコード実行



⚠️ 脆弱性について

ツールをダウンロード

Savantは着信HTTP GETリクエストを処理し、URIパスをその長さをチェックせずに固定サイズのスタックバッファにコピーします。脆弱なロジックを簡略化すると次のようになります。

root@kitploit:~
char uri_buffer[270];

strcpy(uri_buffer, uri_path);

URIが約271バイトのGETリクエストを送信すると、スタック上の保存されたリターンアドレスが上書きされます。オーバーフローには制約があり、それ以上送信するとEIPが制御できなくなる方法でクラッシュが発生するため、使用可能なウィンドウは狭くなります。

このエクスプロイトは、標準のEIP上書きよりも複雑です。サーバーにはさらに2つの特性があるためです。HTTPメソッドフィールドもメモリにコピーされて実行されること、およびHTTPリクエストのボディはスタックではなく別のヒープ領域に保存されることです(これらの特性は両方ともエクスプロイトチェーンの必須部分になります)。




💥 クラッシュの発生

十分に長いURIを持つGETリクエストを送信することで、クラッシュを再現できます。認証は不要です。Pythonを使用した例:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 271

request = (
	b"GET /" + 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

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




💣 エクスプロイト

このリポジトリの目的は、クラッシュの実演だけでなく、完全なエクスプロイトプロセスを段階的に解説することです。標準のEIP上書きよりもこのケースを難しくしているすべての制約と、それらを回避するために行われたすべての決定を含みます。

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

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

  • GET URIのファジングによるクラッシュウィンドウの特定
  • 手動オフセットの発見(ここでは循環パターンは使用できません)
  • URIゾーンとHTTPメソッドフィールドの別々の不良文字分析
  • EIP上書きのためのSavant.exe内のPOP / RETガジェットの検索
  • ガジェット発動後に実行がメソッドフィールドに到達することの確認
  • メソッドフィールドからURIバッファに到達するための条件付きJNLEジャンプの作成
  • ヒープ内のHTTPボディの位置特定と利用可能なスペースの測定
  • URIバッファへのエッグハンターの配置と、エッグでタグ付けされたシェルコードのHTTPボディへの配置