Retour sur la vulnérabilité critique CVE-2021-41773

Introduction

Une vulnérabilité critique a été révélée sur Apache 2.4.49 ce mardi 5 Octobre. La vulnérabilité permet à un attaquant distant de réaliser une attaque de “Path traversal”. 

En conséquence, cela mène à une lecture de fichier arbitraire sur le serveur. Elle aurait été découverte par des hackers, et serait exploitée depuis plusieurs mois. Elle est actuellement référencée en tant que  CVE-2021-41773.

Explication

La vulnérabilité peut être exploitée si les fichiers en dehors de la racine du serveur ne sont pas protégés par l’option « require all denied » dans la configuration d’Apache. (source : lien)

Il existe de nombreux serveurs Apache en version 2.4.49 potentiellement vulnérables. En effet, Shodan en référence plus de 112 000. 

Cependant, de nombreuses personnes configurent le serveur Apache afin de ne pas divulguer la version utilisée. Cela laisse sous-entendre qu’il y a potentiellement d’autres serveurs vulnérables à cette attaque.

La vulnérabilité a été publiée dans ce commit disponible sur le Github d’Apache : https://github.com/apache/httpd/commit/e150697086e70c552b2588f369f2d17815cb1782.

Par conséquent, en lisant le code on réalise qu’il est possible de remonter l’arborescence grâce à “.%2e” qui correspond à “..” en URL encoding.

Proof of concept

L’exploitation est assez simple.

En effet, il suffit de remonter dans l’arborescence du serveur de fichier pour lire le fichier désiré.

Ensuite, certains fichiers sensibles peuvent être lus, comme des fichiers de configuration.

Par conséquent, cette accessibilité engendre des problèmes de confidentialité assez importants.

Évidemment, il sera possible de lire uniquement les fichiers lisibles par l’utilisateur Apache.

Aussi, il est possible de tester si plusieurs hôtes sont vulnérables grâce au script suivant : 

Correction

Afin de corriger cette vulnérabilité, Apache a rapidement publié un patch de sécurité, présent dans la version 2.4.50.

 

[ UPDATE du 08 octobre 2021 ]

1. La version qui corrige la faille n’est pas le patch 2.4.50 mais 2.4.51.

2. Un nouveau Proof of Concept est apparu !

 

Un nouveau Proof of concept est apparu quelques jours après la publication de la CVE. Cette nouvelle exploitation permet une exécution de commandes arbitraires (RCE) sur le serveur. Le principe est d’utiliser la vulnérabilité Path Traversal pour charger le fichier /bin/sh, et d’envoyer en argument dans le corps de la requête, la commande à exécuter.

curl -s -d ‘echo; id;ls -la /’ « http://localhost/cgi-bin/.%2e/%2e%2e/%2e%2e/bin/sh »