Test de sécurité - Injection

La technique d'injection consiste à injecter une requête SQL ou une commande en utilisant les champs de saisie de l'application.

Application Web - Injection

Une injection SQL réussie peut lire, modifier des données sensibles de la base de données et peut également supprimer des données d'une base de données. Il permet également au pirate d'effectuer des opérations administratives sur la base de données telles que l'arrêt du SGBD / suppression de bases de données.

Comprenons les agents de menace, les vecteurs d'attaque, la faiblesse de la sécurité, l'impact technique et les impacts commerciaux de cette faille à l'aide d'un diagramme simple.

Exemples

L'application utilise des données non approuvées dans la construction de l'appel SQL vulnérable suivant -

String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";

Mains sur

Step 1 - Accédez à la zone d'injection SQL de l'application comme indiqué ci-dessous.

Step 2- Comme indiqué dans l'exercice, nous utilisons une injection String SQL pour contourner l'authentification. Utilisez l'injection SQL pour vous connecter en tant que patron («Neville») sans utiliser le mot de passe correct. Vérifiez que le profil de Neville peut être consulté et que toutes les fonctions sont disponibles (y compris Rechercher, Créer et Supprimer).

Step 3 - Nous allons injecter un SQL tel que nous pouvons contourner le mot de passe en envoyant le paramètre comme 'a' = 'a' ou 1 = 1

Step 4 - Post Exploitation, nous pouvons nous connecter en tant que Neville qui est l'administrateur comme indiqué ci-dessous.

Empêcher l'injection SQL

Il existe de nombreuses façons d'empêcher l'injection SQL. Lorsque les développeurs écrivent le code, ils doivent s'assurer qu'ils gèrent les caractères spéciaux en conséquence. Il existe des feuilles de triche / techniques de prévention disponibles auprès de l'OWASP, ce qui est certainement un guide pour les développeurs.

  • Utilisation de requêtes paramétrées
  • Échapper à toutes les entrées fournies par l'utilisateur
  • Activer le moindre privilège pour la base de données pour les utilisateurs finaux