Pentester les vulnérabilités Web avec Damn Vulnerable Web App

Table des matières

L'objectif est que les utilisateurs débutants et professionnels intéressés par l'analyse et la résolution des problèmes de sécurité puissent mettre leurs connaissances, leurs compétences et leurs outils à l'épreuve dans un environnement simulé, ce type de les outils sont très utiles pour les développeurs web Ils peuvent comprendre les problèmes qu'une application ou un site Web peut rencontrer et améliorer la programmation ou rechercher des vulnérabilités.

Bien que la plupart des développeurs aient pris des précautions contre les vulnérabilités potentielles, de nombreuses vulnérabilités telles que Script inter-sites (XSS) ou alors injections SQL, qui affectent la sécurité de nombreux sites Web et donc des utilisateurs.

Dans ce tutoriel, nous allons installer et configurer un site Web à utiliser comme laboratoire de test pour les audits de sécurité Web, où l'on retrouvera différentes vulnérabilités, encore plus courantes, proposant différents niveaux de difficulté des vulnérabilités, qui pourront ensuite être analysées.

Nous utiliserons l'application Web Damn Vulnerabilty (DVWA), c'est un site Web à installer sur n'importe quel serveur dont nous disposons, y compris un serveur local pour pouvoir effectuer des tests de pentest. Nous pouvons le télécharger sur son site officiel.

Après l'avoir téléchargé nous avons besoin d'un serveur web ou d'un serveur local comme indiqué dans les tutoriels :

  • Comment installer Xampp pour transformer votre ordinateur en serveur Web
  • Serveur web portable Easyphp

Maintenant, après avoir téléchargé le fichier zip de Damn Vulnerabilty Web Application (DVWA), nous le décompressons et le copions dans le dossier de notre serveur web, dans ce cas nous utilisons Xampp sous Linux.

Ensuite, nous devons configurer la base de données pour cela, nous irons de phpmyadmin.

Si nous voulons le faire à partir d'une fenêtre de terminal, nous utiliserons la commande suivante, nous pouvons accéder via ssh :

 utilisateur ssh @ miip
Tout d'abord, nous allons nous connecter au serveur MySQL à partir de la ligne de commande avec la commande suivante :
 mysql -u racine -p
Dans ce cas, l'utilisateur root est spécifié avec l'indicateur -u, puis l'indicateur -p est utilisé pour indiquer que MySQL doit demander un mot de passe. Nous entrons la clé d'accès pour pouvoir se connecter à MYSQL.

Ensuite, nous pouvons créer la base de données à partir de la ligne de commande :

 créer une base de données dvwa;
Ensuite, nous allons dans le répertoire de configuration, puis éditons le fichier config.inc.php, ici nous modifions les données pour indiquer le nom de la base de données, l'utilisateur et le mot de passe d'accès :
 
Nous sauvegardons la configuration et nous devons aller dans le navigateur où nous avons le Web et cliquer sur Créer/Réinitialiser la base de données pour continuer l'installation.

Ensuite, nous allons créer les données de la base de données que nous configurons et nous pouvons voir certains outils apportés par le Web.

Puis après l'installation, lorsque nous revenons sur le web http://localhost/dvwa, nous obtiendrons un écran de connexion :

Pour accéder au site Web, nous utiliserons les données suivantes :

Utilisateur: administrateur
Mot de passe: le mot de passe

Dans la colonne de gauche du Web, nous avons un menu à la fin, nous pouvons voir l'option SÉCURITÉ DVWAÀ partir de là, nous pouvons configurer le niveau de difficulté des vulnérabilités, les niveaux de sécurité sont faibles, moyens, élevés ou impossibles.

Le niveau de sécurité modifie le niveau de vulnérabilité de DVWA :

Niveau de sécurité faibleCe niveau de sécurité est totalement vulnérable et ne comporte aucune mesure de sécurité, il nous permettra donc de tester plus facilement les techniques de piratage. Son utilisation est d'être un exemple de la façon dont les vulnérabilités des applications Web se manifestent par de mauvaises pratiques de codage et de servir de plate-forme pour enseigner ou apprendre les techniques de base d'exploitation, de craquage et de piratage.

Niveau de sécurité moyenCe niveau sert à montrer les vulnérabilités, lorsque le développeur n'a pas réussi à s'assurer que le code et le développement n'ont pas de vulnérabilités.

Niveau de sécurité élevéCe niveau vise aux utilisateurs les plus avancés à faire face à une difficulté moyenne, avec un mélange de mauvaises pratiques de programmation dans le code web. Ici, nous pouvons essayer des techniques avancées.

Niveau de sécurité ImpossibleCe niveau est le plus sûr contre toutes les vulnérabilités. Il est utilisé pour comparer le code source vulnérable au code source sécurisé. Ce niveau vise à démontrer comment un site Web doit être développé correctement et comment il doit réagir face à d'éventuelles attaques.

Nous définissons le niveau le plus bas pour pouvoir tester différentes techniques de piratage et de détection de vulnérabilité.

Tester la force brute pour casser une connexion avec votre propre script
Nous accédons au lien Brute Force et nous voyons qu'il existe un formulaire de connexion, nous entrons toutes les données dans le nom d'utilisateur et le mot de passe pour le faire échouer et voir si une erreur se produit.

Lorsque la connexion échoue, nous voyons une URL avec les données saisies, reprenant l'URL qui nous indique :
http: // localhost / dvw… voir & Login = Login #,

Par conséquent, nous pouvons créer un script qui teste différentes combinaisons pour l'utilisateur et le mot de passe ou utiliser un programme comme xHydra qui est une interface graphique pour Hydra ou directement à partir de la ligne de commande si c'est le seul accès via SSH au serveur.

Pour installer Hydra, nous utiliserons les commandes suivantes :

 sudo add-apt-repository ppa: pi-rho / securitysudo apt-get updatesudo apt-get install hydra hydra-gtk
Après l'installation, nous devrons rechercher ou créer les listes d'utilisateurs et les clés possibles au format txt ou rechercher un dictionnaire à utiliser comme nous l'avons fait dans le didacticiel.

Également un fichier texte avec des noms d'utilisateurs possibles, nous pouvons également utiliser certaines bases de données déjà fonctionnelles telles que ces dictionnaires de skullsecurity.org qui sont utilisés dans de nombreux outils, antivirus, etc., qui permettent le craquage ou le piratage de mots de passe. Toutes les sources de données sont libres d'utilisation.

Ensuite, nous utiliserons hydra avec les listes que nous avons en utilisant les commandes suivantes :

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login : Échec de la connexion "-w 10 -V 

Nous pouvons voir que certains résultats ont été positifs, montrant en vert les utilisateurs et le mot de passe qui ont obtenu la connexion acceptée. Si nous essayons avec l'utilisateur admin et le mot de passe, nous entrerons pour voir le panneau d'utilisateur

Vulnérabilité d'injection SQL
Au niveau de sécurité le plus bas, le web est vulnérable à l'injection SQL, avant de commencer à injecter du code dans le champ de texte, on peut observer le code qui consulte la table en PHP qui est vulnérable.

 
L'erreur est que les données ne doivent pas être envoyées par GET mais en utilisant POST et d'autre part, il faut vérifier que les données qui arrivent ne contiennent pas de code malveillant.

L'instruction SQL exécute directement ce qui arrive sans aucun contrôle ni vérification. Cela rend donc le code vulnérable aux injections SQL, par exemple on peut obtenir la liste complète des utilisateurs si dans la page d'injection SQL au lieu d'un identifiant on ajoute le code suivant :

 1' OU 1 = 1 UNION SELECT null, version () #
Le résultat sera la liste des utilisateurs.

Nous pouvons également obtenir la liste complète des tables si nous appliquons le code suivant dans le champ de texte.

 1 'OR 1 = 1 UNION SELECT null, nom_table FROM INFORMATION_SCHEMA.tables

On peut appliquer d'autres combinaisons pour obtenir la liste des utilisateurs et voir les données de chaque table.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave