Piratage éthique - Injection SQL

L'injection SQL est un ensemble de commandes SQL qui sont placées dans une chaîne d'URL ou dans des structures de données afin de récupérer une réponse que nous voulons à partir des bases de données connectées aux applications Web. Ce type d'attaques a généralement lieu sur des pages Web développées avec PHP ou ASP.NET.

Une attaque par injection SQL peut être effectuée avec les intentions suivantes -

  • Pour vider toute la base de données d'un système,

  • Pour modifier le contenu des bases de données, ou

  • Pour effectuer différentes requêtes qui ne sont pas autorisées par l'application.

Ce type d'attaque fonctionne lorsque les applications ne valident pas correctement les entrées, avant de les transmettre à une instruction SQL. Les injections sont normalement placées dans des barres d'adresse, des champs de recherche ou des champs de données.

Le moyen le plus simple de détecter si une application Web est vulnérable à une attaque par injection SQL consiste à utiliser le caractère "'" dans une chaîne et à voir si vous obtenez une erreur.

Exemple 1

Essayons de comprendre ce concept à l'aide de quelques exemples. Comme le montre la capture d'écran suivante, nous avons utilisé un caractère "'" dans le champ Nom.

Maintenant, cliquez sur le Loginbouton. Il devrait produire la réponse suivante -

Cela signifie que le champ «Nom» est vulnérable à l'injection SQL.

Exemple 2

Nous avons cette URL - http://10.10.10.101/mutillidae/index.php?page=site-footer-xssdiscussion.php

Et nous voulons tester la variable "page" mais observer comment nous avons injecté un caractère "'" dans la chaîne URL.

Lorsque nous appuyons sur Entrée, cela produira le résultat suivant qui contient des erreurs.

SQLMAP

SQLMAP est l'un des meilleurs outils disponibles pour détecter les injections SQL. Il peut être téléchargé depuishttp://sqlmap.org/

Il est pré-compilé dans la distribution Kali. Vous pouvez le localiser dans - Applications → Évaluation de la base de données → Sqlmap.

Après avoir ouvert SQLMAP, nous allons à la page sur laquelle nous avons l'injection SQL, puis obtenons la demande d'en-tête. À partir de l'en-tête, nous exécutons la commande suivante en SQL -

./sqlmap.py --headers="User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:25.0) 
Gecko/20100101 Firefox/25.0" --cookie="security=low;
PHPSESSID=oikbs8qcic2omf5gnd09kihsm7" -u '
http://localhost/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#' -
level=5 risk=3 -p id --suffix="-BR" -v3

Le SQLMAP testera toutes les variables et le résultat montrera que le paramètre «id» est vulnérable, comme le montre la capture d'écran suivante.

SQLNinja

SQLNinja est un autre outil d'injection SQL disponible dans la distribution Kali.

Injection JSQL

JSQL Injection est en Java et effectue des injections SQL automatisées.

Astuces rapides

Pour empêcher votre application Web d'attaques par injection SQL, vous devez garder à l'esprit les points suivants:

  • Les entrées utilisateur non vérifiées dans la base de données ne doivent pas être autorisées à passer par l'interface graphique de l'application.

  • Chaque variable qui passe dans l'application doit être nettoyée et validée.

  • L'entrée utilisateur qui est passée dans la base de données doit être citée.