Site partenaire
 IP Scan :
Home
  Accueil
SH en favoris
- FORUMS -
Livre d'Or
- CHAT -
NewsLetter
Suggestions
La Team du Site
Accès Team SH
Faites un don !
Contacts
 
Services
  Liens
Source HTML viewer
DownLoad
Mail Anonyme
 
Les Articles
  Cracking
Théorie
Programmation
Failles [techniques]
Les Adresses IP
FingerPrinting
Utilisation de proxy
Divers
 
WallPapers Galerie
   
Partenaires
  The Hackademy Web, Journal et School

 
 Main Message
 
Le recrutement au sein de la Team SH est suspendu pour une durée indéterminée...

Pour surfer sur ce site, vous devez accepter le disclaimer.

Vous pouvez contribuer au développement du site en faisant un don. SecurityHack a besoin de vous !

 
 SQL Injection
 
SQL Injection

SQL injection

Réalisé par : sn0oPy

Disclaimer
Comme vous vous faites toujours emmerder par les disclaimers, et que vous n'en faites qu'à votre tête bien évidemment, je ne vais pas vous en parler cette fois. Mais sachez quand même que ni moi, ni ma Team et encore moins notre hébergeur ne seront tenus responsables de ce que vous pourrez faire avec les informations contenues dans mon tutorial, surtout qu'ils ne sont là qu'à titre informatif. Donc amusez-vous bien, si ça vous chante de risquer votre avenir ça vous regarde, mais sachez que vous êtes le seul responsable.


Ce tutorial va vous paraître un peu dépassé, vu que ça fais beaucoup de temps qu'on entend parler de cette faille, mais cela ne va pas sans dire qu'elle est archi-présente sur le Web, un nombre très important de Webmasters ignorent toujours le risque auquel ils sont confrontés en ignorant l'importance de cette belle faille, trop facile à exploiter elle est donc à la portée de tout le monde et un site dont l'admin est non-averti peut se voir défacer en entier par quelqu'un qui utilise pour la première fois un formulaire d'authentification.

le problème réside sur le script qui gère les connexions entre le site Web ou plutôt de tableau de bord des admin et la base de données du site en question.

J'ai déjà parlé de ce problème dans mon tutorial sur le defaced que vous pourrez retrouver sur cette page : http://www.securityhack.net/pages/defaced_disclaimer.htm mais cela n'était pas assez détaillé à mon avis et à celui des nombreux lecteurs qui m'ont écrit, donc sur celui là ça sera le seul sujet.

Ce dont vous aurez besoin :

un explorateur + mon tutorial lol + des victimes + de la patience

Pour le dernier ingrédient rien de plus simple, allez sur Google, et faites comme recherche : allinurl: admin.html site:.gov

N.B: 1--toutes les extensions connues peuvent être utilisées dans la recherche (admin.php, admin.cgi ...)

2--vous n'allez pas tomber forcément dès la première page sur un formulaire d'authentification, et au cas où vous avez un user + pass devant vous, il se peut que ça ne soit pas faillible, donc patience.

D'où vient le problème :

Étudions de plus près un script d'authentification trouvé sur une page d'exemple, attention, ces scripts peuvent varier selon le langage utilisé sur le site et selon l'ingéniosité de celui ou celle qui les a écrit.

Voilà ci-dessous un petit exemple de script admin.html :

<body>
<form method=get action="auth.asp">
&nbsp;Nom d'utilisateur&nbsp; <input type="text" name="login">
</form>
<p>&nbsp;Password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="text" name="pass">
</p>
<p><input type="submit" value="sign in">
</p>
</body>

Ce qui ressemble à cela :

Form

Comme vous l'avez remarqué ce script fait appel à un autre "auth.asp" celui-ci contient dans sa source quelques lignes qui sont assez intéressantes :

log=Request.form("login")

pwd=Request.form("pass")


La valeur log dans le second script "auth.asp" va prendre la valeur "login" la valeur que l'utilisateur a entrée dans la case "Nom d'utilisateur" et toujours sur le second script, la valeur pwd prendra la valeur que l'utilisateur entrera dans la case Password.

Vous trouverez aussi sur le second script le nom de la base de données, son emplacement, et surtout la requête que va prendre notre demande d'authentification sur leur base :
Select * from table1 where login='" &log& "' and password='" &pwd& "'

Ce qui veut dire en langage courant, choisir tout sur la table1 (c'est le nom de la table sur laquelle sont stockés les user et mot de passe) quand la case login sur notre table contient une valeur égale à log (rappelez-vous, c'est le Nom d'utilisateur) et la case password une valeur identique à pwd.

Si le script trouve que ces conditions sont bonnes il affichera ce que celui qui a écrit le script a mis sur son code, genre afficher un formulaire de news avec possibilité de rééditer les news du site, malheureusement cela n'est pas piratable dans cette partie, donc en quelque sorte tu peux exploiter l'accès admin ou autre, mais tu ne peux faire que ce l'accès admin ou autre permet de faire.

Donc on disait que par exemple si tu entres comme Nom d'utilisateur "sn0oPy" et comme password "wasirbhalk", la requête prendra la forme suivante :
Select * from table1 where login='"sn0oPy"' and password='"wasirbhalk"'

Là si effectivement il y a un user "sn0oPy avec un password "wasirbhalk" cette ligne de script nous dirigera sur notre section :
response.write("Connexion établie")

Si tel n'est pas le cas, ça sera ce script qui s'en occupera :
response.write("petit malin, ce compte n'existe pas sur notre base de données ")

Mais que va-t-il se passer si on essaie d'inclure des commande SQL sur les champs que nous avons, genre donner à la requête la forme suivante :
Select * from table1 where login="'sn0oPy'" and password="'wasirbhalk' or 'a' = 'a'"

Traduit en langage courant : choisir tout du champ où il y a login = a sn0oPy et ou le password = a wasirbhalk, ce qui n'est pas le cas comme, ou bien que la condition suivante a=a soit vrai, ce qui est tout à fait logique.

Donc on accèédera directement sur le compte sn0oPy si celui-ci existe bien sur sur notre base de données, sinon pour remédier à cela, rien de plus simple :
Select * from table1 where login=" 'sn0oPy' or '1'='1' " and password=" 'wasirbhalk' or 'a' = 'a' "

Ce qui nous donnera accès là à n'importe quel enregistrement de la table et par défaut le premier, donc par défaut toujours celui de l'administrateur.

Ne me dites pas que vous n'avez pas compris comment changer ces requêtes, parce que sinon je serais vraiment fâché, mais bon...

Donc pour cela il vous suffit de mettre la valeur sn0oPy "or" a "=" a , mais attention quelques détails peuvent changer d'une base de données à une autre genre à la place des (" ") on utilise des (' ')...

Aussi vous pourrez toujours ignorer la suite de la requête, et par conséquent la vérification du password si vous mettez cela dans la case Nom d'utilisateur :
sn0oPy ' --
sn0oPy " --

Traduit en langage courant par l'accès au compte sn0oPy et STOP, vérifier juste que l'user sn0oPy existe sur la table et y accéder sans vérifier le password.

Et voilà quelques commandes qui peuvent vous être utiles :
ALTER DATABASE -- changer une base de données
ALTER DOMAIN -- changer la définition d'un domaine
ALTER FUNCTION -- changer la définition d'une fonction
ALTER GROUP -- changer un groupe d'utilisateur
ALTER TABLE -- changer la définition d'une table
ALTER USER -- changer un compte utilisateur
ANALYZE -- analyser la base de données
CREATE DATABASE -- créer une nouvelle base de données
CREATE DOMAIN -- créer un nouveau domaine
CREATE GROUP -- créer un nouveau groupe d'utilisateur
CREATE INDEX -- créer un nouvel index pour la base de données
CREATE TABLE -- créer une nouvelle table
CREATE USER -- créer un nouveau compte d'utilisateur
DELETE -- supprimer les enregistrement d'une table
DROP DATABASE -- supprimer une base de données
DROP GROUP -- supprimer un group d'utilisateur
DROP INDEX --supprimer l'index
DROP TABLE -- supprimer une table
DROP USER -- supprimer un compte utilisateur
GRANT -- définir les accès
INSERT -- insérer une valeur dans la table
LOCK -- fermer une table
REVOKE -- supprimer les accès

Cette liste n'est pas complète, car c'est juste à titre d'exemple que je vous donne cela.

Donc voilà notre partie théorique touche à sa fin, nous allons sans perdre de temps passer à la partie pratique qui est à mon avis la plus importante.

Ce soir je ne trouve rien à faire, hhmmmm je m'ennuis '0_o' ... hé mais pourquoi pas defacer un site (ne prenez pas tout ce que je dis au sérieux), alors je prend mon scanner Win préféré; Google, ah oui parce que sur windoz c'est le meilleur scanner de failles pour débutants et initiés ;)

Je mets comme thème de recherche : allinurl: admin.html site:.gov

J'ai eu plus de résultats que je n'imaginais, mais j'ai laissé tomber les gov pour l'instant, je ne veux pas me faire griller pour faire un simple petit test, donc je me dirige vers d'autres sites.

Ploooof, voilà une bonne victime, un site de commerce on-line, avec une partie d'administration des articles proposés et des autres composantes du site, ce site fera l'objet de notre petit tutorial.

N.B:

1 : Ce test a été fait sans l'accord de l'admin du site, vu que ce dernier refusait toutes forme de communication, je lui ai proposé de l'aider, je lui écris en français, en anglais, j'ai traduit mon message en allemand, mais pas de réponse.

2 : Ce même site a été piraté à plusieurs reprises, et celui qui s'occupe du site ne faisait que rechanger l'index défacé, et c'est tout.

3 : Le test a été effectué avec un win2000.

Et voilà les images :

Le site normal :

[IMG1]

Ici le site est tel quel, bien fait, rien ne sort de travers, tout est en règles, mais croyez moi ça va pas durer ... suivez le guide.

[IMG2]

Sur l'image en dessus c'est la partie admin du site et comme vous pouvez le constater, j'ai utilisé l'user admin avec '-- pour ignorer le reste de la requête, mais sachez que si le compte admin n'existe pas je ne pourrais accéder à absolument rien, mais je savais que sur notre site de test l'user id admin existait sur leur base de données.

Bref une fois cliqué sur le bouton login pour se loguer je tombe directement sur la panneau de contrôle qui normalement est réservé aux admins.

[IMG3]

Voilà comme vous pouvez vous en apercevoir, une fois l'accès eu, tu peux décider de l'avenir du site lol, modifier les produits proposés, en ajouter de nouveaux, modifier les textes sur le site, et comme par chance, tout ce qui est sur l'index est directement modifiable à partir de cette session.

Donc pour en avoir le coeur net on va essayer de mettre une toute petite phrase sur l'index du site, ce qui nuira terriblement à l'image du site. Pour cela on va aller dans la partie d'ajout et modification des nouveaux articles, vu que ces derniers sont directement visibles sur la première page du site.

[IMG4]

Une petite modif sur un article qui parait sur l'index et voilà le travail :

[IMG5]

Et nous voilà sur les hot news ...

Donc voilà je crois que vous avez compris à quel point il peut être facile de soit disant pirater un site Web ...

Notre petit tutorial touche à sa fin, j'espère que vous en avez tiré le maximum, et que vous n'oublierez pas mes greetz :)=
Vous pouvez reproduire cet article sur votre site, votre forum, ou autres, à condition qu'il reste inchangé et de garder la source ...

Pour vos questions et remarques n'hésitez pas à me contacter sur mon adresse: sn0oPy Hub de la liberté N°1 Maroc (sn0opy)

© copyright sn0oPy de la Team SecurityHack--2004

 

sn0oPy

Welcome To SecurityHack.net Articles catalogue

securityhack.net v 4_2
 
Les Sous-domaines
  Projet JackShell
+ Challenge BigContest +
JackTrojan
Forums
Chat IRC
 
Chat Box
 
Up Down
Pseudo :
Message :

 
Box News !
 
 

01 visiteur(s) online
© 2003, 2004 www.SecurityHack.net | Admin : Shad0w ; Webmasters : P41f0x, Dark-Jedi