Scanner d'injection SQL avancé - IIS & DBO
Mécanismes avancés de l'injection SQL qui peuvent être utilisés par les utilisateurs malveillants pour obtenir des informations critiques et en profiter pour prendre le contrôle complet d'un système informatique.
Note explicative
Cet article ne tente pas d'expliquer une nouvelle technique de compromis sur les systèmes informatiques, la technique de l'injection SQL est très ancienne et connue, mais peut en même temps être très puissante. L'article ne reflète pas non plus l'exploit d'une vulnérabilité inconnue, ceci est connu et a déjà été signalé, ce qui peut refléter des mécanismes avancés non publiés de l'injection SQL qui peuvent être utilisés par les utilisateurs malveillants pour obtenir des informations critiques et en profiter pour obtenir le contrôle complet d'un système informatique.
La combinaison de cette technique avec un serveur Web IIS avec des autorisations utilisateur élevées (DBO) dans la base de données Microsoft SQL Server peut entraîner une perte complète de contrôle du serveur affecté.
Cet article tentera d'expliquer le risque potentiel causé par une mauvaise configuration d'une base de données SQL qui interagit avec une page Web externe via un serveur Web IIS et donne des détails sur la façon dont les utilisateurs malveillants peuvent en bénéficier.
Résumé court (Wikipedia)
L'injection SQL est une technique d'injection de code, utilisée pour attaquer les applications axées sur les données, dans lesquelles des instructions néfastes SQL sont insérées dans un champ d'entrée pour l'exécution (par exemple, pour vider le contenu de la base de données à l'attaquant). L'injection SQL doit exploiter une vulnérabilité de sécurité dans le logiciel d'une application, par exemple, lorsque la saisie de l'utilisateur est soit mal filtrée pour les caractères d'échappement littéraux de chaîne intégrés dans des instructions SQL ou la saisie de l'utilisateur n'est pas fortement typée et exécutée de manière inattendue. L'injection SQL est principalement connue comme un vecteur d'attaque pour les sites Web, mais peut être utilisée pour attaquer tout type de base de données SQL.
Les attaques d'injection SQL permettent aux attaquants de parcourir l'identité, de salir les données existantes, de provoquer des problèmes de répudiation tels que l'annulation des transactions ou la modification des soldes, permettent la divulgation complète de toutes les données du système, détruisent les données ou les rendent autrement indisponibles, et deviennent des administrateurs du serveur de base de données.
Vulnérabilité
En supposant que dans la page Web, il y a des problèmes de sécurité avec le passage des paramètres pour permettre l'injection SQL, le principal problème est que le serveur Web IIS est en mesure d'afficher des informations critiques à l'utilisateur en utilisant une fonction de conversion de transact-SQL non valide. Imaginez l'URL suivante où le paramètre ID permet l'injection.
https://www.victim.com/index.aspx?id=1
Un utilisateur malveillant pourrait remplacer la valeur du paramètre ID par la fonction de converti transaction-sql
converti (int, (select + utilisateur)); -
L'URL finale serait de ce style:
https://www.victim.com/index.aspx?id=Convert(int, (select + user)); -
La fonction de conversion essaie de convertir une chaîne en entier, ce qui provoque une exception où le serveur Web IIS fait une erreur grave montrant la valeur de la requête exécutée.
Une sortie typique serait quelque chose comme ceci:
La conversion a échoué lors de la conversion de la valeur nvarchar '{user}' en type de données int.
Comme nous pouvons le voir, la valeur {utilisateur} correspond à la valeur actuelle de l'utilisateur de la base de données, en plus de tout cela si la valeur renvoyée est DBO nous dira que l'utilisateur de la base de données a des privilèges d'exécution maximum, de sorte que cela pourra exécuter des commandes shell à l'aide de la fonction XP_CMDSHELL Transact-SQL.
L'utilisation d'une page Web avec un utilisateur de base de données avec un maximum de privilèges est une grave erreur de sécurité où les administrateurs système ne devraient pas tomber.
En résumé, pourrait dire que la vulnérabilité se compose de trois facteurs:
- Erreur de gestion des paramètres Get / Post qui permettent l'injection SQL. (Développeur de logiciels)
- IIS Server Web qui affiche les informations de fonction de conversion. (Microsoft)
- Utilisez un utilisateur de base de données dans la page Web avec un maximum de privilèges. (Administrateur système / développeur de logiciels)
Version 4.0 (privé)
La version 4.0 étendue du scanner est dans un référentiel privé (visible par les sponsors) avec toutes ses fonctionnalités.
- https://github.com/iricartb/advanced-sql-injection-scanner-release
Plus d'informations
https://advanced-sql-injection.blogspot.com/2017/06/ivan-ricart-borges-advanced-sql.html