l'actualité du web, des technologies et aussi quelques bons tutoriaux ;-)

Injection SQL : le chemin le plus rapide pour hacker un site web

Quand un serveur web n'a que le port 80 d'ouvert (ce qui est généralement le cas sur tout site "sérieux"), vous n'obtiendrez rien de vos logiciels de recherche de failles. De plus, vous pouvez être sûr que l'admin patche correctement son système : les mises à jour sont automatisées de nos jours. Pour obtenir des informations, il ne reste alors plus que le web-hacking. L'injection SQL est une forme de web-hacking qui ne nécessite que le port 80 et peut marcher dans quasiment tous les cas en cherchant bien. Ces attaques concernent la base de données et le language applicatif (PHP, ASP, CGI...), pas le système ou le serveur web. Leur objet est le plus souvent de récupérer des données (mots de passe, emails) ou de modifier celles-ci (rendre le site inutilisable).

L'injection SQL consiste à envoyer des commandes non-autorisées au serveur par le biais de d'entrées utilisateur dans les pages web (formulaires). De nombreuses pages demandent des informations à l'utilisateur et exécutent des requêtes dans la base de données. Par exemple, quand vous entrez votre login et votre mot de passe pour accéder à un forum, le résultat de la publication du formulaire de saisie est d'interroger la base de donnée pour vérifier la validité de vos identifiants. Avec l'injection SQL, vous pouvez utiliser ces champs pour envoyer des commandes spécifiques à la base pour obtenir un résultat que vous avez choisi (afficher la liste des mots de passe par exemple).

Pour réaliser des injections SQL, vous n'avez besoin que d'un seul logiciel : un navigateur web. Cependant, attention à l'endroit d'où vous effectuez ces essais : ceux-ci seront loggés par le serveur, et l'utilisation d'un proxy est fortement recommandée.

Essayez de cherche des pages qui vous permettent de soumettre des données (page de login, page de recherche, formulaire de contact, etc.). Parfois, les pages HTML (statiques) utilisent la commande POST pour envoyer des paramètres à une page dynamique (PHP). Vous ne verrez pas de paramètres dans l'url, mais vous pouvez regarder le code source et chercher le tag "FORM ". Vous risquez de trouver ce type de code :

<FORM action=Recherche/recherche.php method=post>
<input type=hidden name=A value=C>
</FORM>


Tout ce qui se trouve entre les balises <FORM> et </FORM> recèle des paramètres qui sont potentiellement exploitables.

Si vous ne trouvez pas de page qui font appel à des entrées utilisateurs, essayez les pages qui passent des paramètres comme :

http://www.webinterdit.com/index.asp?id=7
(pas la peine d'essayer chez nous, nous avons des protections en place...)



Pour tester une éventuelle vulnérabilité, commencez par essayer le guillemet simple.

Entrez quelque chose comme :

hi' or 1=1--

dans la case login, ou password, ou même dans l'URL. Par exemple :
 Login : hi' or 1=1--
 Mot de passe : hi' or 1=1--
 http://www.webinterdit.com/index.asp?id=hi' or 1=1--


Si vous devez impérativement utiliser un champ avec le paramètre HIDDEN, téléchargez le source HTML puis modifiez l'URL et le champ masqué. Par exemple :

<FORM action=http://www.webinterdit.com/recherche/recherche.php method=post>
<input type=hidden name=A value="hi' or 1=1--">
</FORM>


Si vous avez de la chance (et que le webmaster est suicidaire), vous entrerez sans login ni mot de passe.

Pour ceux qui connaissent SQL, il est évident que ce type de commandes est la porte ouverte à la base de données : si on peut exécuter 1=1, on peut tout demander. La puissance du langage SQL n'est plus à démontrer.

Pour éviter l'injection SQL, il suffit de filtrer les caractères utilisés par le langage SQL (slash, guillemets simples et doubles, pipeline, etc.) dès qu'il s'agit :
 - D'entrées utilisateurs
 - De paramètres d'URL
 - Valeur d'un cookie

Cette introduction à l'injection SQL est une approche simplifiée. La somme des techniques utilisables est immense, vous trouverez de nombreuses infos à ce sujet sur le web. Mais si vous testez un peu, vous verrez que de nombreux sites (même les plus grands) sont susceptibles d'être hackés. Personne n'est à l'abri d'un stagiaire qui oublie de protéger ses champs...


Bloxor : cool aggregator !

Les aggrégateurs de flux rss sont un nom compliqué pour des lecteurs de news (ce que sont les fils rss).

La caractéristique de ce type de logiels (le plus souvent, ils s'agit de vrais logiciels, différents du navigateur) est la complexité. Type de fil (Atom ou RSS), réglages divers et variés... Bref, décourageant pour l'utilisateur lamba...

Heureusement, XUL est passé par là.

"Mais c'est quoi XUL ?" vous demandez vous. C'est une association de langages qui permettent de créer des logiciels web (web applications en anglais) qui tournent dans le navigateur web. Cette méthode de programmation est la réponse de la communauté du logiciel libre à Microsoft et son système propriétaire : .net.

Mais revenons en à Bloxor. Il s'agit d'une application de gestion de fils RSS (un aggrégateur), mais qui se consulte depuis Firefox. Extrêmement simple d'utilisation, elle apporte un avantage majeur des "web apps" : vous pouvez vous connecter de n'importe où sur votre compte bloxor et retrouver vos fils favoris.

L'écran ci dessous montre l'interface "à la outlook" proposée par bloxor :



En plus, le logiciel est aussi libre que XUL : vous pouvez proposer bloxor à vos visiteurs si vous administrez un site web. Tout ce que vous avez à faire est d'installer le logiciel sur votre serveur et à l'intégrer à votre gestion de membres (comme phpBB par exemple). C'est très simple et vous permet d'offrir à vos visiteurs un super service à vos couleurs.

Pour finir, si vous n'avez jamais touché aux fils RSS, bloxor vous rendra très vite accros : vous aurez votre revue de presse person en un coup d'oeil sans visiter tous les sites auquels vous êtes abonné. Et ce, où que vous soyez...