2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Les vulnérabilités d’injection secondaire sont une forme de vulnérabilité de sécurité répandue dans les applications Web. Par rapport à la vulnérabilité d'injection principale, la vulnérabilité d'injection secondaire est plus difficile à détecter, mais elle a la même puissance d'attaque que la vulnérabilité d'injection primaire.
Les pirates construisent des données sous la forme de soumissions de requêtes de paquets de données HTTP au serveur pour traitement dans un navigateur ou un autre logiciel. La requête de paquets de données soumise peut contenir des instructions ou des commandes SQL construites par le pirate informatique.
L'application côté serveur stockera les informations de données soumises par le pirate informatique, généralement dans une base de données. La fonction principale des informations de données enregistrées est de fournir des données d'entrée originales pour que l'application puisse exécuter d'autres fonctions et répondre aux demandes des clients.
Le pirate informatique envoie au serveur un deuxième message de demande de données différent du premier.
Une fois que le serveur a reçu les informations de la deuxième demande soumises par le pirate informatique, afin de traiter la demande, le serveur interrogera les informations de données déjà stockées dans la base de données et les traitera, provoquant l'instruction ou la commande SQL construite par le pirate informatique dans la première demande. être dans le service exécuté dans l’environnement du terminal.
Le serveur renvoie les informations sur les données de résultat d'exécution. Les pirates peuvent utiliser les informations de données de résultat renvoyées pour déterminer si la vulnérabilité d'injection secondaire est exploitée avec succès.
En résumé, l'injection secondaire est due à l'échec du filtrage des données lors de leur stockage dans la base de données. Tout d'abord, la demande de caractère spécial construite est soumise pour être stockée dans la base de données, puis lorsque la deuxième demande est soumise, les caractères qui le sont. ont été soumis à la base de données pour la première fois. Fonction, formant une nouvelle instruction SQL à exécuter.Prenons l'exemple de sqli-labs niveau 24
sqli-labs moins-24
1. Cliquez ci-dessous pour enregistrer un utilisateur
Le nom d'utilisateur enregistré ici est admin'#
À ce stade, nous vérifions la base de données, les utilisateurs enregistrés ont été stockés et le mot de passe de l'administrateur est DDD.
2. Connectez-vous avec le compte enregistré et changez le mot de passe en ccccc
À ce stade, il vous sera demandé que le mot de passe a été modifié avec succès.
À ce moment-là, nous avons constaté que le mot de passe de l'administrateur avait été modifié en ccccc, mais que le mot de passe de notre utilisateur enregistré admin'# n'avait pas été modifié.
Cause de la vulnérabilité
1. Les caractères spéciaux tels que ' et # sont autorisés lors de l'enregistrement de l'utilisateur.
2. Dans le code source de la page de changement de mot de passe, il a été constaté qu'il existe une vulnérabilité d'injection évidente.
$sql = "MISE À JOUR des utilisateurs DÉFINIR LE MOT DE PASSE='$pass' où le nom d'utilisateur='$username' et le mot de passe='$curr_pass' ";
Lorsque nous nous connectons au compte admin'# et modifions le mot de passe, l'instruction sql devient la suivante, #Commentez le code suivant, de sorte que le mot de passe de l'utilisateur admin est remplacé par ccccc
$sql = "MISE À JOUR des utilisateurs DÉFINIR LE MOT DE PASSE='$pass' où nom d'utilisateur='admin'#' et mot de passe='$curr_pass' ";
Lien d'origine : https://blog.csdn.net/qq_44159028/article/details/114325805