logo Homepage
+  NewbieContest
|-+  Divers» Hacking» A propos des injections sql
Username:
Password:
Pages: [1]
  Imprimer  
Auteur Fil de discussion: A propos des injections sql  (Lu 2091 fois)
micka13
Profil challenge

Classement : 3244/49942

Membre Junior
**
Hors ligne Hors ligne
Messages: 86


Voir le profil
« le: 26 Janvier 2008 à 12:57:34 »

Bonjour j'ai rencontré un site ou il y a une methode de protection anti injection que je n'avais jamais rencontré.
En fait des lors qu'un "simple quote==> ' " est tapé dans la barre d'adresse a la suite d'un ? il nous marque une phrase.
exemple :
  • index.php ==>la page d'index normal.
  • indexphp?' ==>nous marque la phrase
  • index2.php ==> erreur 404
  • index2.php?' ==> la phrase...
J'en conclue qu'il n'y a pas de traitement au niveau de chaque page , puisque meme sur une page inexistante ca nous marque ca.
Comment un tel systeme peut etre mis en place?C'est une configuration du serveur qui permet de traiter d'abord les parties apres le "?" puis apres d'afficher la page demander?
Pourquoi un tel systeme n'est jamais proposé dans les solutions de protection , au lieu de devoir faire des protections sur ce que l'on recois a chaque fois?

Merci de m'eclairer.
Journalisée
_o_
Relecteur

Profil challenge

Classement : 34/49942

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1256


Voir le profil
« #1 le: 26 Janvier 2008 à 14:30:12 »

Comment un tel systeme peut etre mis en place?C'est une configuration du serveur qui permet de traiter d'abord les parties apres le "?" puis apres d'afficher la page demander?

C'est une possibilité, oui. Par exemple, sous Apache, on a le module mod_security qui permet de filtrer les requêtes (et les réponses !) suivant des expressions rationnelles.

Pourquoi un tel systeme n'est jamais proposé dans les solutions de protection , au lieu de devoir faire des protections sur ce que l'on recois a chaque fois?

Il est proposé parfois. Cela dit, il faut bien se rendre compte qu'un filtre, ça se contourne. Une injection SQL ou une XSS ne comporte pas forcément de quotes, et il existe des méthodes pour s'en passer. Mais cela ne doit pas être une raison pour coder une application avec les pieds, sous prétexte qu'on travaille avec un filet. Dans le domaine de la sécurité, on utilise ceinture ET bretelles (et si on peut ajouter une corde ou un élastique, c'est mieux). Du reste, seule l'application «sait» ce qui est une valeur valide et invalide, et c'est à elle de faire le tri. Mod_security, c'est bien, mais il n'existe aucune expression rationnelle capable de bloquer toutes injections SQL (ou XSS) possibles.

En fait, c'est juste une protection supplémentaire, et la seule situation dans laquelle c'est vraiment utile, c'est lorsqu'on utilise une application «boite noire» (par exemple, un binaire cgi fourni par une boite qui ne le maintient plus, dont le code source est indisponible). Il vaut mieux alors se méfier et multiplier les barrières, y compris pour éviter une éventuelle backdoor intégrée (ça s'est déjà vu).


 
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
micka13
Profil challenge

Classement : 3244/49942

Membre Junior
**
Hors ligne Hors ligne
Messages: 86


Voir le profil
« #2 le: 26 Janvier 2008 à 18:38:30 »

En effet il y a d'autre protection , au niveau du script cette fois.
J'ai essayé un "concat(" apres une variable , et la j'ai le droit a un autre message (du style celui de phpbb).
Mais bon le systeme qu'ils ont mis en place est assez cool je trouve!Ca ne bloque pas que les ' , mais aussi les " , les <> , les # , les * , enfin beaucoup de truc , et ca enleve enormement de possibilité d'injection!Bon apres je suis novice la dedans  , mais il me semble que si tout les serveurs etait comme ca , 90% des injections courantes ne serait plus!
Journalisée
Zmx

Profil challenge

Classement : 69/49942

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 554

http://please-no.tk/how-to-solve-most-nc-level


Voir le profil WWW
« #3 le: 26 Janvier 2008 à 21:33:49 »

mais il me semble que si tout les serveurs etait comme ca , 90% des injections courantes ne serait plus!

Ouais ça serais droles ce genre de filtre sur un forum ... impossible de poster "j'ai" (à cause de ') de dire que 3 > 1 (a cause de ">"), etc ...

Cette solution, ressemble fortement au "magic_quote" de php, qui va etre retiré de la prochaine version de php (a ce que j'ai entendu dire), et deja désactivé par defaut dans php5.
"Pourquoi" retiré une fonction de protection?

Tout simplement parceque ça fait chier .
Escaper les quote, ça ne sert QUE si on utilise une base de donnée avec (et encore pas toujours), ptet que nous on veux juste l'envoyer par mail ...
Les memes remarques sont à faire pour < > *, etc ... La validité de tes données depend de ce que tu en fait (comme l'a dit bar o bar)

J'avais justement vu une ebauche de framework de sécurité qui filtrais les "union" pour les remplacer par des _union_, ce qui est genant quand on veux discuter de l'union europénne :p
Journalisée

micka13
Profil challenge

Classement : 3244/49942

Membre Junior
**
Hors ligne Hors ligne
Messages: 86


Voir le profil
« #4 le: 27 Janvier 2008 à 11:32:55 »

C'est vrai que ca peux poser probleme pour un forum .
Bon ben plus de forum , plus de base de donné , rien que du html !Rien a cacher , rien a piller  .
Journalisée
Zmx

Profil challenge

Classement : 69/49942

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 554

http://please-no.tk/how-to-solve-most-nc-level


Voir le profil WWW
« #5 le: 27 Janvier 2008 à 20:26:18 »

C'est vrai que ca peux poser probleme pour un forum .
Bon ben plus de forum , plus de base de donné , rien que du html !Rien a cacher , rien a piller  .
C'est surtout que c'est au developeur de savoir ce qu'il veux faire de sa variable, et la "proteger" en conséquence.

Tu protege pas de la meme facon une chaine destiné a etre inseré en base de donnée, qu'une autre destiné a etre passé en parametre  à un CGI.
Journalisée

Spaulding

Profil challenge

Classement : 11/49942

Membre Complet
***
Hors ligne Hors ligne
Messages: 188


Voir le profil WWW
« #6 le: 30 Janvier 2008 à 17:21:28 »

J'ai deux petites questions concernant les injections SQL et j'ai un peu de mal à trouver les réponses dans les tutoriaux que j'ai pu trouver :
1/ Est-il possible de faire une injection "UNION INSERT INTO table" dans un "SELECT" (des fois je trouve que oui, des fois non... peut-être que ça dépend des versions php/mySQL) ?
2/ Est-ce que c'est différent et plus sécurisé en php de mettre "SELECT * FROM table WHERE value='".$data."'" que "SELECT * FROM table WHERE value='$data'" ou bien est-ce interprété différemment ?

Merci.
« Dernière édition: 30 Janvier 2008 à 18:18:56 par Spaulding » Journalisée

---------------
Zmx

Profil challenge

Classement : 69/49942

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 554

http://please-no.tk/how-to-solve-most-nc-level


Voir le profil WWW
« #7 le: 30 Janvier 2008 à 19:19:43 »

1) lit la doc (moi ça me parais space) mais c'est pas lié au injection SQL
2) les 2 sont tous aussi "insecure".
Journalisée

Pages: [1]
  Imprimer  
 
Aller à: