Acredito que muitas pessoas encontraram o banco de dados sendo hackeado. Aqui vou falar sobre como eu lido com isso.
Etapa um: Faça um backup do seu banco de dados existente.
Etapa dois:
Execute o seguinte arquivo ASP para remover o Trojan JS do banco de dados:
Nota: eu mesmo escrevi conn.asp.
código do programa
'Coloque o conteúdo do Trojan JS aqui: lembre-se de alterá-lo para o conteúdo do Trojan JS em seu banco de dados.
<!--#include file="conn.asp"-->
<%
Servidor.ScriptTimeOut=180
Definir rstSchema = conn.OpenSchema(20)
k = 1
Do Until rstSchema.EOF 'Percorre a tabela do banco de dados
If rstSchema("TABLE_TYPE")="TABLE" Então
response.write K&".<font color=red><b>"&rstSchema("TABLE_NAME") & "</b></font>:" 'Exibir nome da tabela
Definir rs=Server.CreateObject("ADODB.Recordset")
sql="selecione * de [" & rstSchema("TABLE_NAME")&"]"
rs.open sql,conn,1,3
For i=0 to rs.fields.count-1 'Percorre os campos da tabela
Se int(rs(i).Type)=129 ou int(rs(i).Type)=130 ou int(rs(i).Type)=200 ou int(rs(i).Type)=201 ou int (rs(i).Type)=202 ou int(rs(i).Type)=203 Then' processa apenas campos cujo tipo de campo é tipo de caractere
conn.execute("update ["&rstSchema("TABLE_NAME")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" as varchar(8000)),'Coloque aqui JS Conteúdo de Trojan','')")
response.write rs(i).name &" "&rs(i).Type &" "'Exibe o nome do campo executado.
Terminar se
Próximo
resposta.write "<br>"
Terminar se
rstSchema.MoveNext
k=k+1
Laço
resposta.Escreva "Execução bem-sucedida"
%>
Se houver muitas tabelas de banco de dados, a passagem acima da estrutura do banco de dados será interrompida pelo IIS antes de ser concluída. Neste momento você pode
código do programa
If rstSchema("TABLE_TYPE")="TABLE" Então
Adicione apropriadamente o intervalo de valores k, como:
código do programa
Se rstSchema("TABLE_TYPE")="TABLE" k>10 e k<20 Então
Neste caso, serão operadas apenas 9 mesas por vez.
Etapa três:
De acordo com as características da injeção JS do banco de dados (que incluirá caracteres como <script, </script> e http://),
Coloque o seguinte código em conn.asp:
código do programa
Função Cheack_Sqljs()'Impede a injeção de JS de links externos no banco de dados: true indica que a injeção de JS de links externos foi descoberta.
Dim F_Post,F_Get
Cheack_Sqljs=Falso
If Request.Form<>"" Then' Detecção quando o formulário é enviado
Para cada F_Post em Request.Form
If (Instr(LCase(Request.Form(F_Post)),"<script")<>0 ou Instr(LCase(Request.Form(F_Post)),"</script>")<>0) e Instr(LCase (Request.Form(F_Post))," http://")<>0 Então
Check_Sqljs = Verdadeiro
Sair para
Terminar se
Próximo
Terminar se
If Request.QueryString<>"" Then'QueryString detecção no envio
Para cada F_Get em Request.QueryString
If (Instr(LCase(Request.Form(F_Get)),"<script")<>0 ou Instr(LCase(Request.Form(F_Get)),"</script>")<>0) e Instr(LCase (Request.Form(F_Get))," http://")<>0 Então
Check_Sqljs = Verdadeiro
Sair para
Terminar se
Próximo
Terminar se
Função final
Função CheckDataFrom()'Verifica a fonte dos dados enviados: True significa que os dados são enviados de fora do site
CheckDataFrom = Verdadeiro
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
se mid(servidor_v1,8,len(servidor_v2))<>servidor_v2 então
CheckDataFrom=Falso
terminar se
Função final
Se Cheack_Sqljs ou CheckDataFrom Then
Response.Write "<Script Language=JavaScript>alert('Execução proibida, operação ilegal.');</Script>"
Resposta.End()
Terminar se