欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-22 13:25:16
本文我们详细介绍了asp数据库被挂木马的详细解决方案之编程处理的方法,解决方案分为以下三步: 第一步: 为现有数据库做好备份。 第二步: 执行如下asp文件,这样就...

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

第一步:

为现有数据库做好备份。

第二步:

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

注:conn.asp自己去写了。

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

<!--#include file="conn.asp"--> 
 
<% 
 
server.scripttimeout=180 set rstschema = conn.openschema(20) 
 
k=1 
 
do until rstschema.eof '遍历数据库表 
 
if rstschema("table_type")="table" then 
 
response.write k&".<font color=red><b>"&rstschema("table_name") & "</b></font>:" '显示表名set 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 '遍历表中字段if int(rs(i).type)=129  
 
or int(rs(i).type)=130 or int(rs(i).type)=200 or int(rs(i).type)=201 or int(rs(i).type)=202 or int(rs(i).type)=203 then'只处理字段类型为字符型的字段 
 
conn.execute("update ["&rstschema("table_name")&"] set "&rs(i).name&" =replace(cast("&rs(i).name&" 
 
 as varchar(8000)),'这里放入js木马内容','')") response.write rs(i).name &" "&rs(i).type &" "'显示执行过的字段名。 
 
end if 
 
next 
 
response.write "<br>" 
 
end if 
 
rstschema.movenext 
 
kk=k+1 
 
loop 
 
response.write "执行成功" 
 
%> 

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

if rstschema("table_type")="table" then

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

if rstschema("table_type")="table" k>10 and k<20 then

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

第三步:

根据数据库js注入的特性(会包括<script、</script>和http://这样的字符),在conn.asp里面放入如下代码:

function cheack_sqljs()'防止数据库外链js注入:true为发现外链js注入。 
 
dim f_post,f_get 
 
cheack_sqljs=false 
 
if request.form<>"" then'表单提交时的检测for each f_post in request.form if (instr(lcase(request.form(f_post)), 
 
"<script")<>0 or instr(lcase(request.form(f_post)),"</script>")<>0)  
 
and instr(lcase(request.form(f_post)),"http://")<>0 then 
 
cheack_sqljs=true 
 
exit for 
 
end if 
 
next 
 
end if 
 
if request.querystring<>"" then'querystring提交时的检测for each f_get in request.querystring  
 
if (instr(lcase(request.form(f_get)),"<script")<>0 orinstr(lcase(request.form(f_get)),"</script>")<>0)  
 
and instr(lcase(request.form(f_get)),"http://")<>0 then 
 
cheack_sqljs=true 
 
exit for 
 
end if 
 
next 
 
end if 
 
end function 
 
function checkdatafrom()'检查提交数据来源:true为数据从站外提交过来的 
 
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 then 
 
checkdatafrom=false 
 
end if 
 
end function 
 
if cheack_sqljs or checkdatafrom then 
 
response.write "<script language=javascript>alert('禁止执行,非法操作。');</script>" response.end() 
 
end if 

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