ASP网站中数据库被挂木马的解决方案

ASP教程 2025-08-05

我们在用ASP连接数据库开发应用程序时,可能会遇到ASP数据库被挂木马的情况,本文我们就介绍了ASP数据库被挂木马时的编程处理方法,希望会对您有所帮助。

本文我们详细介绍了ASP数据库被挂木马的详细解决方案之编程处理的方法,解决方案分为以下三步:

第一步:

为现有数据库做好备份。

第二步:

执行如下ASP文件,这样就可以去掉数据库当中的JS木马:

注:conn.asp自己去写了。

'这里放入JS木马内容:请记得改为自己数据库中的JS木马内容。

  1. <%
  2. Server.ScriptTimeOut=180SetrstSchema=conn.OpenSchema(20)
  3. k=1
  4. DoUntilrstSchema.EOF'遍历数据库表
  5. IfrstSchema(TABLE_TYPE)=TABLEThen
  6. response.writeK&.&rstSchema(TABLE_NAME)&:'显示表名Setrs=Server.CreateObject(ADODB.Recordset)
  7. sql=select*from[&rstSchema(TABLE_NAME)&]
  8. rs.opensql,conn,1,3Fori=0tors.fields.count-1'遍历表中字段Ifint(rs(i).Type)=129
  9. orint(rs(i).Type)=130orint(rs(i).Type)=200orint(rs(i).Type)=201orint(rs(i).Type)=202orint(rs(i).Type)=203Then'只处理字段类型为字符型的字段
  10. conn.execute(update[&rstSchema(TABLE_NAME)&]set&rs(i).name&=replace(cast(&rs(i).name&
  11. asvarchar(8000)),'这里放入JS木马内容',''))response.writers(i).name&&rs(i).Type&'显示执行过的字段名。
  12. EndIf
  13. Next
  14. response.write
  15. EndIf
  16. rstSchema.MoveNext
  17. kk=k+1
  18. Loop
  19. response.Write执行成功
  20. %>

如果数据库表很多的话,上面的遍历数据库结构未执行完就被IIS给停止了。在这时候可以在:

If rstSchema(TABLE_TYPE)=TABLE Then

当中适当加入k值的范围,如:

If rstSchema(TABLE_TYPE)=TABLE k>10 and k<20 Then

这样的话就一次只操作9个表。

第三步:

根据数据库JS注入的特性(会包括和http://这样*?*???*??符),在conn.asp里面放入如下代码:

  1. FunctionCheack_Sqljs()'防止数据库外链JS注入:true为发现外链JS注入。
  2. DimF_Post,F_Get
  3. Cheack_Sqljs=False
  4. IfRequest.Form<>Then'表单提交时的检测ForEachF_PostInRequest.FormIf(Instr(LCase(Request.Form(F_Post)),
  5. 0orInstr(LCase(Request.Form(F_Post)),)<>0)
  6. andInstr(LCase(Request.Form(F_Post)),http://)&l*t;&g**t;0Then
  7. Cheack_Sqljs=True
  8. ExitFor
  9. EndIf
  10. Next
  11. EndIf
  12. IfRequest.QueryString<>Then'QueryString提交时的检测ForEachF_GetInRequest.QueryString
  13. If(Instr(LCase(Request.Form(F_Get)),0orInstr(LCase(Request.Form(F_Get)),)<>0)
  14. andInstr(LCase(Request.Form(F_Get)),http://)&l*t;&g**t;0Then
  15. Cheack_Sqljs=True
  16. ExitFor
  17. EndIf
  18. Next
  19. EndIf
  20. EndFunction
  21. FunctionCheckDataFrom()'检查提交数据来源:True为数据从站外提交过来的
  22. CheckDataFrom=True
  23. server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))server_v2=Cstr(Request.ServerVariables(SERVER_NAME))
  24. ifmid(server_v1,8,len(server_v2))<>server_v2then
  25. CheckDataFrom=False
  26. endif
  27. EndFunction
  28. IfCheack_SqljsorCheckDataFromThen
  29. Response.Writealert('禁止执行,非法操作。');Response.End()
  30. EndIf

关于ASP数据库被挂木马时的编程处理方法就介绍到这里了,希望本次的介绍能够带给您一些收获,谢谢!