web-dev-qa-db-fra.com

S'agit-il d'une tentative d'injection SQL?

En parcourant les journaux d'erreurs, j'ai trouvé de nombreuses demandes à une application Web où l'URL contient:

/if(now()=sysdate(),sleep(10),0)/*'XOR(if(now()=sysdate(),sleep(10),0))OR'"XOR(if(now()=sysdate(),sleep(10),0))OR"*/

J'ai lu que cela pourrait faire partie d'une attaque contre des sites Web développés en PHP que nous n'utilisons pas. Nous utilisons également un ORM pour interroger nos bases de données.

Est-ce donc une tentative d'injection SQL?

47
Tony

Il s'agit très probablement d'une injection SQL aveugle, testant si vous êtes vulnérable à l'injection SQL en vérifiant si votre serveur prend le temps spécifié ou plus pour répondre à la demande. Cela ne fait en fait aucune modification de données ni aucune exposition; il s'agit simplement de vérifier si vous êtes vulnérable.

Il convient également de noter que cela cible spécifiquement les bases de données MySQL, car les syntaxes if et sleep sont celles de ce moteur de base de données.

Si l'attaque est isolée, vous avez probablement été "sondé" par un scanner de vulnérabilité automatisé qui prépare une attaque à grande échelle, donc si votre webapp n'est pas vulnérable, vous n'avez rien à craindre.

Cependant, si vous recevez des demandes plus étranges avec des schémas d'attaque différents, vous pouvez être la cible spécifique de ces attaquants et devez prendre des mesures pour empêcher toutes les attaques qui peuvent réussir.

Voir Attaques d'injection SQL aveugles basées sur le temps pour plus d'informations.

62
BgrWorker

Les données que vous y avez publiées semblent être similaires à ce qu'un attaquant pourrait utiliser pour trouver des problèmes aveugles d'injection SQL.

Une technique courante pour trouver ces problèmes est d'avoir un test conditionnel qui, s'il est vrai, provoque l'exécution d'une fonction de délai d'attente ou de sommeil. De cette façon, l'attaquant peut dire s'il a réussi en observant le temps qu'il faut au site pour répondre (bien qu'il soit intéressant de noter que cette technique peut être un peu sujette aux erreurs si le site ne répond pas du tout ou répond lentement pour un autre, sans rapport, raison)

Le code que vous avez mentionné semble faire ce genre de test logique suivi d'une instruction sleep, il pourrait donc bien s'agir d'une tentative d'exploitation de SQL Injection. Certains types d'attaquants les feront exploser à la recherche de hits, ce qui pourrait ne pas être une attaque très ciblée et donc peu susceptible de fonctionner sur votre site.

10
Rory McCune