Est-il possible de tester les vulnérabilités d'injection SQL en utilisant sqlmap avec une URL qui utilise la réécriture de mod (ou quelque chose comme ça) pour rendre les URL propres?
Je sais comment tester mes sites qui ont des URL comme: http://mysite.com/?id=1
Mais qu'en est-il de mes sites qui ont des URL propres, comme: http://mysite.com/1
Tu devrais utiliser *
dans votre URI, créant des points d'injection d'URI. Donc au lieu d'utiliser:
sqlmap.py -u "website.com/script/paramrewrited1/paramrewrited2"
utilisation:
sqlmap.py -u "website.com/script/paramrewrited1*/paramrewrited2*"
Voir sqlmap wiki pour plus d'options d'utilisation. Depuis cette page:
Point d'injection URI
Il existe des cas particuliers lorsque le point d'injection se trouve dans l'URI lui-même. sqlmap n'effectue aucun test automatique sur les chemins URI, sauf s'il est pointé manuellement. Vous devez spécifier ces points d'injection dans la ligne de commande en ajoutant un astérisque (
*
) après chaque point URI que vous souhaitez que sqlmap teste et exploite une injection SQL.Ceci est particulièrement utile lorsque, par exemple, le module mod_rewrite du serveur Web Apache est utilisé ou d'autres technologies similaires.
Un exemple de ligne de commande valide serait:
$ python sqlmap.py -u "http://targeturl/param1/value1*/param2/value2/"
Si je comprends votre question, je crois que sqlmap n'est pas conçu pour faire face à cette situation (où le serveur Web ne suit pas les normes Web pour représenter les paramètres de demande). Donc, je peux penser à quelques options:
Désactiver la réécriture d'URL. Désactiver temporairement la réécriture des paramètres de requête sur votre serveur Web (s'il existe un moyen simple de le faire), pour vous permettre d'exécuter sqlmap.
Essayez POST requêtes. Vous nous avez montré que votre serveur Web encode les paramètres de requête pour les requêtes GET de manière non standard. Comment encode-t-il les paramètres de requête pour POST requêtes? S'il transmet les paramètres de requête du serveur Web de manière plus standard, et si chaque requête est accessible via GET et POST (une mauvaise configuration, mais une un), vous pouvez tester votre serveur en envoyant des requêtes POST au lieu des requêtes GET. Voir le --data
option pour sqlmap.
tilisez un autre outil. Recherchez un autre outil, car sqlmap ne semble pas conçu pour ce cas particulier.
Modifier sqlmap. sqlmap est open source. Vous pouvez plonger dans le code source et l'étendre pour prendre en charge le cas d'utilisation que vous avez en tête. (Vous voudrez peut-être regarder le code qui gère le -p
option pour sqlmap.) Heck, c'est gratuit; vous devez vous attendre à ce que si vous avez une situation inhabituelle, elle ne le gère peut-être pas déjà, et vous devrez peut-être faire un peu de travail par vous-même. Si vous suivez cette voie, redonnez à la communauté en faisant don de votre code aux mainteneurs sqlmap.