Les tests d'intrusion sont l'acte de tester un réseau pour les vulnérabilités de sécurité avant d'être exploité par un attaquant malveillant ou des pirates. DE-ICE est une machine virtuelle qui contient une installation Linux Slax et il sert à pratiquer à la fois pour les débutants jusqu'aux praticiens avancés.
Slax est un Live CD du système d'exploitation GNU/Linux basé sur la distribution Slackware. Slax est un système d'exploitation Linux portable, il ne prend pas beaucoup de place et offre des performances rapides.
Slax fournit un référentiel de logiciels préinstallés et est largement utilisé par les administrateurs pour créer des plates-formes de test, des distributions spécifiques et utiles pour créer des outils de récupération, des tests d'intrusion, des simulations de sécurité et de réseau avec des machines virtuelles pour les administrateurs système et les développeurs de logiciels ou d'experts en sécurité, le système occupe environ 190 Mo. Une interface graphique peut être installée ou non, mais cela prendrait beaucoup de place et ralentirait le système.
De-ICE peut être installé dans VirtualBox ou gravé sur CD pour être utilisé comme LiveCD. Il existe plusieurs versions qui présentent différents niveaux de difficulté, la version pour débutants est DE-ICE1.100 et la plus complexe actuellement est DE-ICE1.140. Pour ce tutoriel, nous utiliserons la version DE-ICE 1.120 disponible sur https://www.vulnhub… .e-ice-s1120,10/.
Cette machine virtuelle est spécialement préparée pour tester nos connaissances et appliquer toutes les techniques ou outils de test d'intrusion.
Test de pente de De-ICE PenTest Lab 1.120
Pour les procédures de test de pénétration, installez la version DE-ICE.1.120 et j'utilise Linux Mint et VirtualBox pour installer DE-ICE. Il peut être utilisé à partir de n'importe quel système d'exploitation qui vous permet de créer une machine virtuelle.
Je commence à chercher mon IP actuelle depuis un terminal en utilisant la commande ifconfig et le résultat est le suivant :
IP : 192.168.0.11
Ensuite, j'utilise différents logiciels de mon choix, mais ils peuvent en essayer d'autres en fonction de l'utilisateur.
A) j'utilise Zenmap pour analyser tous les hôtes entre 1-254
Dans les tutos :
- Outil visuel Zenmap pour les tests de sécurité des ports
- Comment utiliser Nmap pour analyser les ports ouverts sur votre framework VPS et Metasploit pour tester la sécurité du serveur
Nous avons vu quelques outils pour l'analyse des ports et comment les utiliser.
On ouvre Zenmap, j'assigne l'IP et les paramètres pour qu'il scanne l'ensemble du réseau et me montre les équipements connectés et les IP.
L'IP 192.168.0.1 correspond à l'IP de la passerelle du routeur avec le port 80 ouvert et l'IP du routeur 192.168.0.10 avec tous les ports fermés.
En regardant la topologie et les caractéristiques de chaque hôte, je détermine que l'ip 192.168.0.38 est l'ip WiFi de la machine virtuelle et l'ip 192.168.0.40 est la connexion ethernet est la machine virtuelle.
J'accède à l'adresse IP de la machine virtuelle ou du VPS et trouve un site Web pour enregistrer des produits.
En principe [color = # b22222] un échec grave [/ color] serait que ce site Web n'a aucun type de contrôle d'accès des utilisateurs, de cette façon il aurait accès à tous les utilisateurs du réseau, peu importe combien il est dans un intranet.
Depuis Zenmap, j'observe également les ports scannés pour cet hôte.
Je trouve plusieurs ports ouverts pour tenter des attaques par force brute pour accéder en forçant l'utilisateur et le mot de passe avec des outils tels que Hydra ou John the Ripper, entre autres.
On peut aussi voir la topologie pour analyser chaque hôte et avec qui il est connecté.
Ainsi, de cette manière, nous pouvons voir les caractéristiques de l'équipement, comment le réseau est configuré et quels sont les hôtes que nous pouvons attaquer.
B) Analyse des vulnérabilités
J'utilise OSWAP ZAP pour faire un scan de vulnérabilité. Nous avons vu cet outil dans le tutoriel :
- Scannez une vulnérabilité de site Web avec ZAP
Il nous permet d'analyser les vulnérabilités d'un site Web en présentant des rapports sur les vulnérabilités trouvées.
En utilisant des règles de filtrage et d'analyse active et passive, nous pouvons trouver les vulnérabilités du Web. Il nous montre également toutes les pages que contient le Web, il indique même quelles sont celles qui reçoivent un type de paramètre par URL.
Après le scan je peux voir la structure du web avec les pages programmées en PHP et les vulnérabilités selon les filtres appliqués.
Dans le cas de la page d'insertion de produit, nous voyons qu'elle reçoit des paramètres via la méthode POST et nous pouvons également voir les champs ou les variables qu'elle reçoit.
C) Injection de code XSS
Ensuite, nous irons à la page pour ajouter un produit (Ajouter un produit) et appliquer Techniques d'injection XSS où j'injecte du code html et Javascript pour voir s'il est vulnérable à ce type d'attaque.
Comme premier test j'ajoute le code html d'une image externe dans la description du produit, vous pouvez sélectionner n'importe lequel en recherchant dans Google.
Si l'image est vulnérable, elle sera enregistrée dans la base de données et elle sera affichée dans la liste des produits que nous devrons rechercher dans le combo pour le code que nous attribuons, le résultat est le suivant :
[color = # b22222] Il est vulnérable au XSS [/ color] car nous pourrions entrer n'importe quel code html ou javascript, y compris des liens.
Nous insérons un iframe dans le champ de description et sauvegardons :
Ensuite on cherche le produit par le code 003 et on peut voir le résultat
En utilisant cette technique, nous pouvons entrer dans un formulaire avec simuler une connexion et que les données sont réellement enregistrées dans une base de données externe. Nous pouvons désactiver la liste des produits provoquant une redirection vers un autre site Web si, dans un champ d'enregistrement de produit, nous ajoutons le code html suivant :
Lorsque quelqu'un essaie de voir la liste des produits, il sera automatiquement redirigé vers le site Web indiqué dans ce cas Google.
RÉ) injection SQL Accès à la base de données
Sqlmap est un outil très utile pour tester la sécurité des serveurs de bases de données dans les tutoriels :
- Outil SQLMAP SQL Injection et piratage éthique de base de données
- BadStore : Web pour les tests de pentest.
J'utilise sqlmap pour déterminer si des bases de données sont disponibles à l'aide des commandes suivantes.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs
Nous pouvons voir que le serveur est Apache 2.2.11, qui utilise php 5.2.9 et que le serveur de base de données est MySQL 5.0.12, nous visualisons également toutes les bases de données disponibles, y compris celles qui sont la configuration des données MySQL du serveur de base.
Ensuite, j'utilise la commande pour vérifier s'il existe des tables dans la base de données merch, qui est celle qui, je suppose, contient la table des produits que nous entrons sur le Web.
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merch
Nous avons trouvé le tableau utilisé par le site Web. Ci-dessous, je peux regarder le tableau des produits avec la commande suivante
python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T produits
Je cherche à connaître les utilisateurs qui ont un compte Mysql essayant de trouver un administrateur, par défaut j'utilise le dictionnaire de données sqlmap situé dans le dossier sqlmap-dev/txt/wordlist.zip
Dans ce répertoire nous trouverons plusieurs dictionnaires, sqlmap se chargera de décompresser et d'utiliser le fichier, de rechercher des utilisateurs et des mots de passe pour aller tester si je peux découvrir et obtenir les noms d'utilisateurs configurés sur le serveur MySQL, pour cela j'utilise le commande suivante :
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
Ensuite je cherche le type d'utilisateur pour voir quels sont les privilèges d'accès de chaque utilisateur pour déterminer qui sont les administrateurs et quels sont leurs codes d'accès.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - dump
À la suite de l'exécution, les mots de passe de chaque utilisateur pour accéder aux bases de données et leurs privilèges sont révélés.
Lorsque l'analyse est terminée, à la fin de la liste, nous pouvons voir les privilèges de chaque utilisateur et déterminer quels utilisateurs sont administrateurs.
Je trouve qu'il y a plusieurs utilisateurs administrateurs, donc je vais prendre l'utilisateur jdavenport qui est administrateur et son mot de passe est babyl0n, pour essayer d'accéder au système
Ensuite, j'essaie de violer le port SSH 22 avec les données obtenues :
On peut voir que j'ai obtenu l'accès en tant qu'administrateur et que j'ai le contrôle total du serveur. À l'aide de la commande cd /, nous allons dans le répertoire racine et à partir de là, nous pouvons accéder à n'importe quel secteur, comme par exemple voir les dossiers et les comptes des autres utilisateurs
En ayant accès via SSH avec la combinaison du nom d'utilisateur et du mot de passe que nous avons obtenus. Notre prochain objectif sera l'élévation des privilèges, bien que nous ayons déjà un utilisateur root ou administrateur.
Pour manipuler les permissions nous devons consulter les fichiers qui contiennent les permissions, les utilisateurs, les groupes et les codes d'accès ces fichiers sont dans le répertoire /etc
- Utilisateur et Groupes avec leurs clés dans le répertoire : /etc/passwd
- Groupes et permissions dans le répertoire : /etc/sudores
Nous pouvons accéder au fichier des utilisateurs et des clés système via la commande suivante :
nano / etc / mot de passe
Nous pouvons parcourir les répertoires entre eux, nous pouvons voir les fichiers sur le Web que nous analysons et les télécharger plus tard via ftp ou depuis la console ssh, nous pouvons les copier dans notre répertoire local si nous voulons les éditer ou revoir le code pour le rendre plus sécurisé et tester à nouveau.
Maintenant que nous connaissons les données d'accès d'un administrateur, nous pouvons nous connecter à la machine virtuelle.
Comment éviter les attaques par injection SQL
La sécurité du web est ici très importante à cause d'un problème d'injection SQL nous prenons tout le serveur.
Il faut contrôler ce qui est envoyé en paramètre dans les urls, comme :
http://192.168.0.40/products.php?id=1Lors de la requête SQL, nous devons nous assurer que des caractères ou des paramètres qui ne correspondent pas peuvent être saisis, par exemple :
$ sql = SELECT * FROM utilisateurs WHERE utilisateur = 'jose' et mot de passe = '12345' OR '1' = '1';La phrase est très similaire à une connexion utilisateur où nous cherchons si l'utilisateur et le mot de passe existent, dans la table des utilisateurs, s'il y a quelqu'un enregistré avec un nom d'utilisateur que nous envoyons en paramètre et si son mot de passe est '12345 ou si 1 est le même à 1'.
Cette expression détermine que si la clé n'est pas correcte, l'expression 1 égale à 1 est vraie et nous serions en mesure d'entrer dans le système sans connaître le mot de passe.
Une méthode consiste à échapper les variables par exemple en PHP :
mysql_real_escape_string ($ _ POST ['utilisateur']);Si nous devons envoyer des paramètres par URL, nous devons les crypter à l'aide de md5, sha1 ou base64 et nous pouvons envoyer diverses données cryptées afin que le format final du paramètre ne soit pas directement lié aux données ou aux champs de la base de données.
De plus, il devrait y avoir un système qui évite le scan des ports et les connexions multiples depuis la même IP, un pare-feu dans ce cas avec iptables suffirait et un détecteur d'intrusion.
Un outil que nous pouvons utiliser est PortSentry ou alors Fail2Ban Il est installé à partir d'un référentiel linux et nous n'avons qu'à configurer quels ports doivent être protégés, si l'un de ces ports est scanné, il bloquera automatiquement l'IP qui nous attaque.
Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif