Manuel de Deploiement Finale
Manuel de Deploiement Finale
Manuel de Deploiement Finale
AND
PREVENTION SYSTEM
Presente par:
Metasploitable 2.
Dans ce lab , nous allons déployer snort pour qu’il fonctionne en mode inline ;
pour cela la machine Ubuntu servira de routeur entre le réseau qu’on protège
et le réseau dans lequel se trouve l’attaquant. Ainsi aucun paquet ne pourra
quitter le réseau de l’attaquant vers le réseau qu’on protège et vis-versa sans
passer par la machine Ubuntu.
On installera donc snort par la suite sur Ubuntu afin qu’il analyse tous les
paquets provenant du réseau dangereux.
Les machines windows 7 et Metasploitable 2 serviront de machines victimes
pour les attaques que nous effectuerons se situeront dans le réseau qu’on
protège.
La machine Kali servira de machine attaquante et se situera dans le réseau
dangereux.
cd ~/snort/snort-2.9.8.3/etc/ sudo cp
*.conf* /etc/snort sudo cp *.map
/etc/snort sudo cp *.dtd /etc/snort
cd ~/snort/snort-2.9.8.3/src/dynamic-
preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/ sudo
cp * /usr/local/lib/snort_dynamicpreprocessor/
Ce sujet étant très vaste, nous ne pourrons pas mentionner tous les détails de
l'injection SQL, mais nous en expliquerons quelques-uns en commençant par
les bases. Pour Se faire? nous utiliserons l'application web Mutillidae de
metasploitable2, qui est vulnérable aux attaques par injection SQL, à des fins
de démonstration.
1- Démarrer metasploitable2.
2- Allez dans le navigateur de la machine attaquante et tapez l’adresse ip de
metasploitable2
dans la barre de recherche du navigateur. Vous aurez l’interface web de
metasploitable devant vous .
3-Sélectionnez le lien "Mutillidae" et allez dans l'onglet "Login/Register" et
enregistrez-vous pour créer un compte.
Fournissez les informations nécessaires et cliquez sur le bouton "Créer un
compte".
Utilisons maintenant des techniques d'injection SQL pour contourner la page
de connexion.
Le contournement de la page de connexion est, sans aucun doute, l'une des
techniques d'injection SQL les plus populaires.
Découverte d'injections SQL dans le champ POST
La structure de connexion de Mutilidae est simple. Elle contient deux champs
de saisie (nom d'utilisateur et mot de passe), qui sont tous deux vulnérables.
Le contenu du back-end crée une requête pour approuver le nom d'utilisateur
et le mot de passes donnés par l’utilisateur.
Voici un aperçu de la syntaxe du code SQL de la page qui permet de récupérer
les informations des identifiants fournis depuis la base de données :
($query = "SELECT * FROM users
WHERE username='$_POST[username]' AND password='$_POST[password]'"
;).
Note :
Dans le code sql précédent , l'instruction SELECT * est utilisée pour extraire
tous les données de la table spécifiée avec l’instruction FROM ; donc de ta
table users dans notre cas. Ensuite La clause WHERE est utilisée pour filtrer
les données selon les conditions spécifiées ;ainsi nous devons définir la
condition de filtrage. Dans notre exemple la requête récupère donc juste les
données relatives au nom d’utilisateur et au mot de passe fournit.
Pour mieux comprendre le concept des requêtes, voici un lien qui pourra vous
êtes utile : https://sql.sh/cours/select
Pour contourner la connexion et accéder aux zones restreintes, l'attaquant
doit construire une section SQL qui rendra la condition "WHERE" du code sql
vraie. Par exemple, les données de connexion ci-jointes donneraient accès à
l'agresseur en abusant de la faiblesse présente dans le paramètre du mot de
passe. Pour le nom d'utilisateur, mettez par exemple « Rafia" ou ce que vous
voulez et pour le mot de passe, mettez (admin' OR '1'='1) puis essayez de
vous connecter, et vous verrez apparaître une page de connexion admin ; ce
qui montre que l’attaque à réussi.
Examinons un instant la requête générée avec les identifiants qu’on a fourni :
Selon la syntaxe du code sql qui gère la page , la requête SQL générée devrait
être (SELECT * FROM users WHERE username=‘Rafia' AND password='admin'
OR '1'='1').
En raison de la priorité des opérateurs, la condition "AND" est évaluée en
premier. Ensuite, l'opérateur "OR" est évalué, ce qui rend l'instruction
"WHERE" vraie. La condition sera valable pour toutes les lignes de la table
"users". Elle implique que le nom d'utilisateur donné n'est pas pris en
compte, et que l'agresseur sera connecté en tant qu'utilisateur principal dans
la table "users". Cela signifie également que l'agresseur n'a pas besoin de
connaître un nom d'utilisateur pour accéder au site ; la requête en découvrira
un pour lui !
Dans ces exemples simples, nous avons vu qu'un agresseur peut contourner
un système d'authentification par une injection de requêtes SQL. Sans limiter
les conséquences désastreuses que cela peut avoir, il est essentiel de
mentionner qu'une injection SQL peut avoir un impact de sécurité beaucoup
plus important qu'un contournement de login. Vous trouverez ci-dessous une
liste de commandes qui peuvent être utilisées pour le contournement de
l'authentification par injection SQL or 1=1 or 1=1-- or 1=1# admin’-- admin’/*
admin’ or ‘1’=’1 admin’ or ‘1’=’1'-- admin”/* admin” or “1”=“1 admin” or
“1”=“1”-- admin” or “1”=“1”# admin” or “1”=“1”/* admin” or 1=1 or ““=“
admin” or 1=1 admin” or 1=1-- admin” or 1=1#
Règle Snort pour prévenir l’injection SQL
Pour prévenir cette attaque , nous pouvons écrire une règle snort permettant
de rejeter toutes les requêtes vers notre serveur web qui comportent des
méta-caractères utilisées pour l’injection sql. En voici une :
reject tcp !$HOME_NET any -> 10.10.10.0/24 $HTTP_PORTS (msg:"SQL meta
characters detected";pcre:"/(\%3D)|(=)[^\n]*(\%27)|(\')|(\-\- )|(\%3B)/i";
classtype:Web-application-attack; sid:1000049; rev:5;)
3. L'application a utilisé le nom que nous avons fourni pour former une
phrase. Que se
passe-t-il si, au lieu d'un nom valide, nous introduisons des caractères
spéciaux ou des chiffres ? Essayons avec <'c'est le 1er test’> :
4. Maintenant, nous voyons que tout ce que nous mettons dans la zone de
texte sera
reflété dans la réponse ; c'est-à-dire qu'il devient une partie de la page HTML
de réponse.
5. Essayez d'introduire un nom suivi d'un code de script très simple,
Bob<script>alert('XSS')</script> :
La page a exécuté le script, provoquant l'apparition d'une alerte, de sorte
qu’on puisse conclure que cette page est vulnérable à XSS
Les vulnérabilités XSS se produisent lorsque la validation de l'entrée est faible
ou inexistante et qu'il n'y a pas de codage correct de la sortie, tant du côté
serveur que du côté client. Cela signifie que l'application nous a permis
d'introduire des caractères qui sont également utilisés dans le code HTML et,
lorsqu'elle allait les envoyer à la page, n'a suivi aucun processus d'encodage
(comme l'utilisation des codes d'échappement HTML < ; et ...) pour éviter
qu'ils soient interprétés comme du code source HTML ou JavaScript.
Alerte de snort :
D-Attaque DDOS :
Première étape :
Alerte DDOS générée par snort :
Deuxième étape :
L’accès à l’application :
Rejet de l’attaque :
E-Attaque EthernalBlue
Première étape :
Scan de la cible :
L’exloit :
La prise de contrôle :
VII-CONCLUSION
En conclusion , nous pouvons constater que le système de détection et de
prévention Snort est un puissant dispositif qui permettra de détecter les
intrusions dans les réseaux d’entreprise et de les protéger contre les attaques
informatiques.
Comme nous l'avons vu, SNORT peut fonctionner comme un pare-feu
d'application web avec quelques limitations. Mais il est important de
comprendre que les vulnérabilités basées sur les applications sont différentes
dans chaque application et ne peuvent pas être résolues par une règle
générique, ce qui est possible dans la sécurité du réseau. De même, il n'y a
pas d'alternative au codage sécurisé ; l'ajout de telles règles génériques et la
protection de l'application ne sont qu'une ligne de défense supplémentaire et
ne peuvent être considérés comme une alternative à la validation correcte
des entrées. La meilleure approche pour toute organisation est d'effectuer
des tests de pénétration pour l'application, d'écrire des règles SNORT pour
protéger temporairement contre les attaques et de commencer à modifier
l’infrastructure pour une mise en oeuvre correcte de la sécurité.