
Dockerベースのラボで、Apache CVE-2021-41773のパストラバーサルとRCEエクスプロイトをPythonエクスプロイトスクリプトで実践し、脆弱性分析と緩和策を実証します。
このリポジトリは、教育および研究目的のために、管理されたDockerラボ環境において公開されパッチが適用された脆弱性を再現します。
この環境は意図的に脆弱性を含んでおり、隔離されたテスト環境でのみデプロイする必要があります。明示的な許可なしにシステムを悪用しようとしないでください。
このプロジェクトの目的は、脆弱性の分析、悪用、および緩和戦略を実演することです。
パストラバーサル & リモートコード実行
# Navigate to the project folder
cd Apache-CVE-2021-41773
# Validate compose syntax
docker compose config
# Start the lab
docker compose up -d --build
# Check that everything is running
docker compose ps
Apache 2.4.49では、URLパス正規化にバグが導入されました。.%2e(..に相当)のようなエンコードされたシーケンスが適切にサニタイズされず、攻撃者がDocumentRootを超えてディレクトリツリーをトラバースできるようになります。
mod_cgiが有効で、ルートディレクトリ(/)がRequire all grantedで設定されている場合、攻撃者は以下のことができます:
/bin/shインタプリタを介してコマンドを実行する(RCE)exploit.py)外部依存関係はありません — Python標準ライブラリのみを使用します。
自動 python exploit.py 脆弱性をチェックし、デモとしてidを実行
ファイル読み取り python exploit.py -f /etc/shadow RCEを介して任意のファイルを読み取る
RCE python exploit.py -c "whoami" 単一のコマンドを実行
シェル python exploit.py -i インタラクティブな疑似シェル
カスタムターゲット python exploit.py -u http://target:8888 リモートホストをターゲットにする
まず、環境が脆弱であることを確認します。
予想通り、コマンドは id uid=0(root) gid=0(root) groups=0(root) を返しました。
リバースシェルを作成しましょう:
rootとしてログインしました
ご覧のとおり、/proc/1/environ に設定ミスがあり、SQLパスワードを入手しました。 これは、安全でないコンテナ設定によって露出した秘密情報を明らかにしています。
抽出した認証情報を使用して、MySQLデータベースに接続し、保存されたデータを表示します。

これらの設定を本番環境で再現しないでください。