Dans ce laboratoire, vous allez apprendre à connaître les vulnérabilités d'injection de commandes, qui sont l'une des vulnérabilités les plus courantes dans les applications web. Le laboratoire offre une expérience pratique pour comprendre les principes des vulnérabilités d'injection de commandes et leurs techniques d'exploitation. Grâce à deux exercices pratiques, vous apprendrez à identifier et à exploiter les vulnérabilités d'injection de commandes, à comprendre l'utilisation des caractères génériques pour fermer les commandes, et à explorer des méthodes pour contourner les filtres et escalader les privilèges.
Skills Graph
Comprendre les vulnérabilités d'injection de commandes
Dans cette étape, nous allons explorer les bases des vulnérabilités d'injection de commandes et comment vous pouvez les exploiter, tout cela de manière simple et adaptée aux débutants.
Alors, quelles sont les vulnérabilités d'injection de commandes? Elles surviennent lorsqu'une application web ne gère pas correctement les entrées utilisateur, qui finissent par être utilisées dans des commandes système. Cela pourrait potentiellement permettre à un utilisateur malveillant d'exécuter n'importe quelle commande qu'il souhaite sur le serveur, avec les mêmes autorisations que l'application web.
Regardons un extrait de code PHP présentant cette vulnérabilité :
Dans ce code, la fonction system() est utilisée pour exécuter une commande provenant du paramètre cmd dans l'URL. Un utilisateur malveillant peut en profiter en ajoutant des commandes dangereuses dans le paramètre cmd.
Pour exploiter avec succès cette vulnérabilité, vous devez savoir comment annuler la commande originale et ajouter d'autres commandes. Cela se fait en utilisant des séparateurs de commandes tels que ; (point-virgule), && (ET logique), | (pipe) ou || (OU logique).
Exploiter les vulnérabilités d'injection de commandes
Bienvenue à l'étape suivante de notre parcours! Maintenant, nous allons mettre nos connaissances en pratique et exploiter une vulnérabilité d'injection de commandes dans une application web.
Pour commencer, configurons notre environnement de laboratoire. Veuillez utiliser la commande suivante :
Regardons le code PHP suivant qui présente cette vulnérabilité :
<?php
if (!(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$/m', $_GET['ip']))) {
die("Invalid IP address");
}
system("ping -c 2 ".$_GET['ip']);
?>
Dans ce code, l'entrée utilisateur ($_GET['ip']) est vérifiée avec une expression régulière pour s'assurer qu'elle est au format d'une adresse IP. Si l'entrée est valide, la fonction system() exécute la commande ping en utilisant l'entrée utilisateur comme argument.
Mais que se passe-t-il si nous voulons contourner ce filtre et injecter nos propres commandes? C'est là que le caractère de nouvelle ligne %0a devient utile. Il est utilisé au format encodé pour les URL.
Par exemple, si vous voulez exécuter la commande uname -a, vous pouvez utiliser l'URL suivante :
Ce stratagème astucieux contourne le filtre d'adresse IP et exécute la commande uname -a immédiatement après la commande ping. C'est un exemple pratique de comment les connaissances peuvent être utilisées pour identifier et exploiter des vulnérabilités. Continuons notre parcours d'apprentissage!
Escalade de privilèges et exploitation approfondie
Bravo pour avoir atteint cette étape! Une fois que vous avez réussi à exploiter une vulnérabilité d'injection de commandes, vous pouvez monter en puissance. Vous pourriez vouloir essayer d'escalader vos privilèges ou de mener une reconnaissance plus détaillée sur le système cible.
Une technique populaire consiste à créer une connexion de shell inversé (reverse shell). Cela vous donne un shell interactif sur le système cible, et vous pouvez le faire en utilisant des outils tels que netcat (nc) ou bash.
Voici un exemple de création d'un shell inversé avec netcat (doit être installé sur la machine cible) :
Le résultat de l'exécution de la commande de shell inversé devrait ressembler à ceci :
Il suffit de remplacer le deuxième 127.0.0.1 et le 5555 par l'adresse IP et le numéro de port que vous souhaitez utiliser. C'est comme remplir des trous!
Alternativement, vous pouvez également essayer de trouver des fichiers sensibles sur le système cible. Cela pourrait vous fournir des informations précieuses pour de nouvelles exploitations ou une escalade de privilèges. C'est un peu comme être un détective, mais dans le monde numérique!
N'oubliez pas que la pratique fait parfait. Continuez à explorer et à apprendre, et vous deviendrez un pro en un rien de temps!
Résumé
Dans ce laboratoire, vous avez appris à connaître les vulnérabilités d'injection de commandes, qui surviennent lorsque les entrées utilisateur ne sont pas correctement gérées et sont transmises à des commandes système dans une application web. Vous avez exploré comment exploiter ces vulnérabilités en injectant des commandes malveillantes et en fermant la commande originale à l'aide de séparateurs tels que ;, &&, | et ||. De plus, vous avez pratiqué le contournement des filtres en utilisant des techniques telles que l'encodage des caractères de nouvelle ligne. Enfin, vous avez compris les étapes potentielles à suivre après avoir exploité une vulnérabilité d'injection de commandes, comme établir un shell inversé (reverse shell) ou énumérer les fichiers sensibles pour une exploitation supplémentaire ou une escalade de privilèges.
We use cookies for a number of reasons, such as keeping the website reliable and secure, to improve your experience on our website and to see how you interact with it. By accepting, you agree to our use of such cookies. Privacy Policy