Wie man mit dem Trojanischen Pferd umgeht, das in der Datenbank der ASP-Website hängt
Ich glaube, viele Leute haben schon erlebt, dass die Datenbank gehackt wurde. Hier werde ich darüber sprechen, wie ich damit umgehe.
Schritt eins: Erstellen Sie ein Backup Ihrer vorhandenen Datenbank.
Schritt zwei:
Führen Sie die folgende ASP-Datei aus, um den JS-Trojaner aus der Datenbank zu entfernen:
Hinweis: Ich habe conn.asp selbst geschrieben.
„Fügen Sie den JS-Trojaner-Inhalt hier ein: Bitte denken Sie daran, ihn in den JS-Trojaner-Inhalt in Ihrer Datenbank zu ändern.“
<!--#include file=conn.asp-->
<%
Server.ScriptTimeOut=180
Setze rstSchema = conn.OpenSchema(20)
k=1
Tun Sie dies, bis rstSchema.EOF 'die Datenbanktabelle durchläuft
Wenn rstSchema(TABLE_TYPE)=TABLE Dann
Response.write K&.<font color=red><b>&rstSchema(TABLE_NAME) & </b></font>: 'Tabellennamen anzeigen
Setze rs=Server.CreateObject(ADODB.Recordset)
sql=select * from [ & rstSchema(TABLE_NAME)&]
rs.open sql,conn,1,3
For i=0 to rs.fields.count-1 'Durchläuft die Felder in der Tabelle
Wenn int(rs(i).Type)=129 oder int(rs(i).Type)=130 oder int(rs(i).Type)=200 oder int(rs(i).Type)=201 oder int (rs(i).Type)=202 oder int(rs(i).Type)=203 Dann werden nur Felder verarbeitet, deren Feldtyp der Zeichentyp ist
conn.execute(update [&rstSchema(TABLE_NAME)&] set &rs(i).name& =replace(cast(&rs(i).name& as varchar(8000)),'Put JS Trojan content here',''))
Response.write rs(i).name & &rs(i).Type & 'Zeigt den Namen des ausgeführten Feldes an.
Ende wenn
Nächste
Antwort.write <br>
Ende wenn
rstSchema.MoveNext
k=k+1
Schleife
Response.Write erfolgreich ausgeführt
%>
Wenn viele Datenbanktabellen vorhanden sind, wird die oben beschriebene Durchquerung der Datenbankstruktur von IIS gestoppt, bevor sie abgeschlossen ist. Zu diesem Zeitpunkt können Sie
Wenn rstSchema(TABLE_TYPE)=TABLE Dann
Fügen Sie den Bereich der k-Werte entsprechend hinzu, z. B.:
Wenn rstSchema(TABLE_TYPE)=TABLE k>10 und k<20 Dann
In diesem Fall werden jeweils nur 9 Tische bedient.
Schritt drei:
Gemäß den Merkmalen der Datenbank-JS-Injection (die Zeichen wie <script, </script> und http:// umfasst),
Fügen Sie den folgenden Code in conn.asp ein:
Funktion Cheack_Sqljs()'Verhindert die JS-Injektion von externen Links in der Datenbank: „true“ zeigt an, dass die JS-Injection von externen Links entdeckt wurde.
Dimmen Sie F_Post,F_Get
Cheack_Sqljs=Falsch
If Request.Form<> Then' Erkennung, wenn das Formular gesendet wird
Für jeden F_Post in Request.Form
If (Instr(LCase(Request.Form(F_Post)),<script)<>0 oder Instr(LCase(Request.Form(F_Post)),</script>)<>0) und Instr(LCase(Request.Form (F_Post)),http://)<>0 Dann
Cheack_Sqljs=True
Ausgang für
Ende wenn
Nächste
Ende wenn
Wenn Request.QueryString<> Then'QueryString-Erkennung bei der Übermittlung
Für jedes F_Get in Request.QueryString
If (Instr(LCase(Request.Form(F_Get)),<script)<>0 oder Instr(LCase(Request.Form(F_Get)),</script>)<>0) und Instr(LCase(Request.Form (F_Get)),http://)<>0 Dann
Cheack_Sqljs=True
Ausgang für
Ende wenn
Nächste
Ende wenn
Funktion beenden
Funktion CheckDataFrom()'Überprüfen Sie die Quelle der übermittelten Daten: True bedeutet, dass die Daten von außerhalb der Site übermittelt werden
CheckDataFrom=True
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
if mid(server_v1,8,len(server_v2))<>server_v2 dann
CheckDataFrom=False
Ende wenn
Funktion beenden
Wenn Cheack_Sqljs oder CheckDataFrom, dann
Response.Write <Script Language=JavaScript>alert('Ausführung verboten, illegaler Vorgang.');</Script>
Response.End()
Ende wenn