Vous n'êtes pas identifié(e).
Pages : 1
Bonjour les gars, cela des jours que je suis entrain de tester la sécurité de mon app web.
Maintenant que je suis aux injections sql, je voudrais savoir comment tester ces genres d'url http://localhost/sib/use/authentication/login.zul avec POST et id. C'est une page d'authentification mais l'injection devrais se passer au niveau de l'url. Je voudrais tester la sécurité de l'url contre les sqli.
Hors ligne
Tu veux le faire à la main ou automatisé ?
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Je préfère le faire manuellement.
Hors ligne
Coté page de test tu peux utiliser htmlentities(), addslashes(), voir avec des preg_match() ou preg_replace() directement pour filtrer le paramètre envoyé par POST. Les strtolower() ou strtoupper() aident à éviter des requêtes en camelCase (en alternant les min et majuscules). Je sais pas si tu utilise mysqli ou PDO (j'imagine que tu n'utilise normalement plus mysql donc je ne te recommanderai plus de mysql_real_escape_char(), qui au passage est loin d'être une formule miraculeuse), PDO étant le mieux car tu peux préparer tes requêtes SQL. Un petit var_dump($_POST) ca aide aussi a voir ce que tu envois
Tu dois bloquer/échapper les caractère ' et " forcément, le + (exemple un +and+1=1 devra être vu comme suspect) qui sert a remplacer l'espace dans la barre d'url aussi puis y a encore plein de combines. Y a les "technques" a base de commentaires (tu bloques --, /* et */), tu peux bloquer le ; qui sert de delimiter par défaut, l'hexadécimal (tu bloques \x27 et \x22 déjà), et ce qui permet d'envoyer des requêtes en hexa (comme 0x et char()). Tu as commandes de benchmark sql qui peuvent etre dangereuses aussi comme benchmark justement. Tu peux éventuellement bloquer le caractère @.
(Edit: avait oublié, le nullbyte peut être vicieux aussi \x00 )
Evidement, tu filtres aussi sur des mots clés comme and, or, union, select, drop, order+by, concat, group_concat, ... et le bien aimé information_schema
Ca fait déjà pas mal de choses à bloquer
[hint] Si le type de la valeur dans ton champs est un int, tu peux même carrément forcer à sortir une valeur numérique avec intval(), que tu peux coupler avec des modulo pour n'en retenir qu'une certaine taille.
C'est une page d'authentification mais l'injection devrais se passer au niveau de l'url. Je voudrais tester la sécurité de l'url contre les sqli.
Si c'est un POST tu ne l'auras pas sous forme de paramètres dans l'url, ca c'est pour GET. Pour récupérer les données qui passent par méthode POST en live tu as des extensions comme TamperData. Sinon tu peux tester d'envoyer du POST en ligne de commande (via curl ou wget par exemple) ou via des scripts python, ruby, perl (en jouant avec les socket), php, ajax, ...
Quelques exemples ici:
Ajax -> https://stackoverflow.com/questions/378 … thout-form (Darin Dimitrov).
PHP -> https://stackoverflow.com/questions/106 … -html-form (ilanco) (/!\ non testé donc je sais pas ce que ca vaut)
Et THE référence que tu dois avoir (si pas déjà) => OWASP (https://www.owasp.org/index.php/SQL_Injection)
Bon courage
Hors ligne
Voilà qui est complet, merci WarLocG
Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D
Hors ligne
Pages : 1