Pentester, attaquer et défendre les applications Web avec bWAPP

bWAPP est un site Web qui a été développé avec des vulnérabilités afin que les débutants et les experts puissent effectuer des tests de pentes et des pratiques de piratage éthique.. Il peut être hébergé sur Linux ou Windows sur Apache ou IIS et MySQL. Il est pris en charge dans WAMP ou XAMPP. Une autre possibilité est d'utiliser une machine virtuelle qui fonctionne pour VMware ou pour VirtualBox.

bWAPP est gratuit et ouvert, il peut être téléchargé en deux versions, l'une à utiliser localement et l'autre à installer dans une machine virtuelle. Le site est développé en PHP et MySQL, il est donc multiplateforme. Nous téléchargeons install bWAPP localement, si nous voulons installer dans une machine virtuelle le projet est Bee-Box.

Bee-box est une machine virtuelle Linux avec tout pré-installé. De cette façon, nous n'avons qu'à explorer toutes les vulnérabilités du bWAPP sans courir le risque de dégrader le site Web du bWAPP. De plus, avec la machine virtuelle, nous pouvons essayer d'obtenir un accès root.

bWAPP a plus de 100 bogues Afin d'enquêter et de découvrir, il couvre toutes les principales vulnérabilités Web connues, y compris tous les risques de sécurité. Le projet permet non seulement de découvrir des vulnérabilités, mais aussi de trouver la solution.

Dans ce tutoriel nous allons installer la version Bee-Box de bWAPPPour ce faire, nous décompressons le fichier que nous avons téléchargé et créons un dossier avec de nombreux fichiers vmdk sur notre serveur local. Ensuite, nous allons créer la machine virtuelle en attribuant une version Linux Ubuntu 32 bits.

Ensuite, nous devons sélectionner le fichier téléchargé appelé bee-box.vdmk

Avant de démarrer la machine virtuelle, rappelez-vous que nous devrons configurer le réseau, nous le faisons à partir de Réglage afin d'avoir une adresse IP et pouvoir accéder à la machine virtuelle depuis un autre ordinateur.

Nous cliquons sur créer puis sur Démarrer, pour que la machine virtuelle commence à fonctionner, une fois chargée, nous verrons le bureau.

Ensuite, nous allons ouvrir le terminal pour voir ce que l'IP utilise la commande ifconfig.

Nous pouvons voir que l'IP dans ce cas est 192.168.0.14, si nous testons cette IP sur l'ordinateur en dehors de la machine virtuelle, nous devrions pouvoir accéder au Web :

 http://192.168.0.14/bWAPP
Et le résultat sera le suivant :

Ensuite, nous pouvons commencer par la page de connexion, par défaut l'utilisateur est abeille et le mot de passe est bug pour accéder au panneau de configuration. Dans le menu Bugs, nous aurons plusieurs exemples à utiliser et tester certaines vulnérabilités des plus simples aux plus complexes. Voyons quelques vulnérabilités selon le type d'attaque.

Le les vulnérabilités sont divisées en catégories ou chapitres qui sont les suivants :

Injections A1Ici sont regroupées les vulnérabilités de Injection HTML, SQL, XSS, XPATH et tous ceux qui ont à voir avec l'envoi de paramètres via les navigateurs.

A2 Pause Authentification et SessionsIci, on dirait violer les captchas et les formulaires de connexion à l'aide de techniques de remplacement d'URL, de capture de paramètres et d'utilisation d'ID de session.

A3 Cross Site Scripting (XSS)Voici les Vulnérabilités liées au XSS qui ne sont pas très dangereux mais plutôt ennuyeux.

A4 Objets et répertoires non sécurisésIci il s'agit modifier les paramètres dans les liens à partir du code avant de soumettre le formulaire.

A5 Sécurité et configurationIci, nous verrons certaines attaques comme DDOS et attaque intermédiaire, qui cherchera à affecter les services tels que le courrier et les services qui fonctionnent.

A6 Exposition de données sensiblesIci, nous allons voir une série de vulnérabilités qui permet les données du serveur sont exposées dans le navigateur.

Ce sont quelques-unes des vulnérabilités, dans ce tutoriel nous nous concentrerons sur les attaques les plus connues et la possibilité de prendre le contrôle du serveur.

1. Injection HTML


L'injection réfléchie HTML est ce qui vous permet d'insérer du code HTML dans un champ de texte, puis de l'afficher sur le Web. Nous sélectionnons la première méthode Injection by GET, nous avons deux zones de texte, si nous entrons, par exemple, un lien dans chacune :
 Message urgent | Vos ventes
Lors de l'envoi du formulaire, nous verrons ci-dessous que les deux liens sont affichés et le laissent attendre que quelqu'un clique. On peut aussi essayer la méthode POST.

AGRANDIR

Un autre problème de ne pas contrôler la saisie des données HTML est que nous pourrions envoyer un formulaire faisant croire à l'utilisateur qu'il doit se connecter ou saisir des données, et envoyer ces données vers une autre page.

 Vous avez été déconnecté. 
Entrez votre nom d'utilisateur et votre mot de passe pour continuer l'utilisateur :
mot de passe:

AGRANDIR

2. injection SQL


Voyons une autre attaque telle que SQL Injection, si nous recherchons BUG pour l'option SQL Injection (GET / Search), dans cette section, nous pouvons rechercher des films, par exemple Iron Man, résultant en les données du film.

AGRANDIR

Ensuite on peut essayer d'injecter du code SQL pour tester si la base de données est vulnérable, pour cela on utilise le code suivant qui renverra la liste des bases de données si :

 iron man 'union select 1, table_name, 3,4,5,6,7 from INFORMATION_SCHEMA.TABLES où table_schema = database () -'
Le résultat est la liste des tables, donc la base de données est vulnérable :

AGRANDIR

Sachant que la base de données est vulnérable, nous pouvons utiliser certaines techniques que nous avons vues dans le tutoriel SQLMAP, outil d'injection SQL et hacking éthique de base de données, où nous atteignons le niveau racine à la recherche des clés administrateur.

Depuis la fenêtre du terminal, nous écrivons la commande suivante, nous utilisons la page que nous recherchons pour le film car elle a un paramètre qui peut être vulnérable.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --dbs

Il nous montre les bases de données, l'une d'entre elles est bWAPP, nous allons donc essayer d'obtenir la liste des tables sachant que le moteur de la base de données est MySQL 5. Pour obtenir la liste des tables, nous utiliserons la commande suivante.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -tables

Nous pouvons voir qu'il répertorie toutes les tables, non seulement du Web, mais aussi du système, afin que nous puissions obtenir les données de l'administrateur Linux. Nous pouvons également exploiter la session PHP à l'aide de Firebug, nous pouvons voir le numéro de session, car lors de la création d'un utilisateur, de la connexion ou de la génération de contenu dynamique tel qu'une recherche, la réponse du serveur créera une session PHP.

AGRANDIR

Utilisation de la commande --utilisateurs et la session ou avec la commande sans session nous pourrons voir les utilisateurs du système.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --users
Une autre commande d'option avec l'ID de session :
 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --cookie = "PHPSESSID = e6f734f935bca3bf86013add7ea2e3f9; security_level = 0" --users

Ensuite, nous allons rechercher les utilisateurs du système à l'aide de la commande suivante :

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" dba --is-dba --privileges --dbs -dump 
En conséquence, nous obtiendrons des tables où il y a un mot de passe, l'un d'eux est celui des utilisateurs qui ont les données de l'administrateur et un autre est celui des héros de la table et des utilisateurs (utilisateurs) que nous utiliserons pour nous connecter en tant qu'utilisateurs.

La table des utilisateurs contient les données de l'administrateur du site Web :

Ensuite, nous allons obtenir le mot de passe root des utilisateurs que nous trouvons ci-dessus, pour cela, nous utilisons la commande suivante :

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -f -b --current-user --is-dba --is-dba --privileges --dbs - décharger
A la fin des commandes via une attaque par force brute, on constate que le mot de passe administrateur système est bug et que l'utilisateur est root.

On va essayer depuis le terminal, se connecter via ssh à la machine virtuelle pour prendre le contrôle à distance de l'ordinateur à l'aide de la commande suivante :

 racine [email protected]
Le résultat en utilisant l'utilisateur root et le mot de passe de bogue est la connexion avec des autorisations d'administrateur à la machine virtuelle.

Ensuite, nous testons si nous pouvons nous connecter à la section héros et utilisateurs avec les données précédemment obtenues, par exemple l'utilisateur néo et le mot de passe trinity.

Nous avons réussi à accéder avec ces données d'utilisateur sans problème. Si nous utilisons la table des utilisateurs, nous pouvons également nous connecter.

3. Injection HTML/XPATH


L'une des attaques les moins pensées passe par les navigateurs qui permettent l'édition de code, si nous modifions un lien vers un site malveillant, l'utilisateur ne le remarquera pas et le changement sera perdu lorsque le Web sera actualisé.

Par exemple, nous allons changer le mot de passe et faire un clic droit pour ouvrir un inspecteur ou un éditeur de code et changer l'url change_password.php en http://google.com et fermer l'éditeur

AGRANDIR

Ainsi, lorsque l'utilisateur cliquera sur ce lien, il sera redirigé vers une autre page, c'est très inefficace car lors du rafraîchissement ou de la modification de la page, le lien revient à l'original. C'est à nous de regarder avant de cliquer sur un lien qui nous amène à un site Web sécurisé ou au sein du même domaine.

4. Injection côté serveur


L'injection côté serveur se produit lorsqu'un site Web est vulnérable et permet de saisir des commandes à partir d'un langage ou du système d'exploitation pour exécuter des actions sur le serveur.

Un attaquant envoie un code malveillant ou une commande via un champ de texte d'une application Web exécutée par le serveur Web. Voyons un exemple qui vous permettra de lister des répertoires à l'aide de la commande Linux ls, que nous écrirons comme suit :

 

AGRANDIR

Le résultat sera la liste de tous les répertoires sur le serveur, il faut donc vérifier qu'aucune commande ne peut être saisie.

AGRANDIR

L'un des outils que nous propose le projet bWAPP est le ZAP (Zed Attack Proxy), nous avons vu cet outil dans le tutoriel Analyser une vulnérabilité de site Web avec ZAP, il est largement utilisé pour analyser les vulnérabilités et effectuer des tests d'intrusion sur les sites Web. Nous pouvons télécharger la version la plus récente à partir du lien suivant :

TÉLÉCHARGER ZAP

Choisissez la version selon le système d'exploitation dont nous disposons ou une version multiplateforme développée en Java. Une fois installé, nous essaierons de scanner le Web bWAPP avec ZAP et de rechercher certaines vulnérabilités.

AGRANDIR

Lorsque nous démarrons ZAP et effectuons un scan, nous verrons qu'il détecte la plupart des vulnérabilités, pour définir les règles de scan, nous pouvons aller dans le menu Analyser> Règles d'analyse puis nous double-cliquons sur Stratégie par défaut.

Voyons dans l'une des pages de connexion qu'il a constaté que le niveau d'utilisateur est envoyé en paramètre, dans ce cas l'administrateur.

AGRANDIR

Nous pouvons également utiliser les filtres comme nous l'avons vu dans le didacticiel ZAP pour effectuer des injections SQL et d'autres attaques.

La sécurité des applications Web est un aspect très important en dehors de la bonne conception et du contenu. bWAPP est une plate-forme qui nous permettra de connaître et de tester de nombreuses vulnérabilités, puis d'appliquer ces connaissances sur notre site Web et sert également à permettre aux spécialistes, développeurs et étudiants de découvrir et de prévenir les vulnérabilités Web.

bWAPP est largement utilisé pour les tests de pénétration des applications Web et les projets de piratage éthique. bWAPP couvre toutes les principales vulnérabilités Web connues, incluant tous les risques du projet OWASP Top 10, qui collecte les vulnérabilités d'année en année dans 10 catégories.

Enfin, nous vous recommandons cet article avec une explication des types de cyberattaques.

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

wave wave wave wave wave