彻底清除SQL挂马的方法
2008-11-10 21:48
176 查看
接到一个很有挑战性的任务:一个网站被Google报告有恶意网站,俺的任务就是将这几行字从Google上抹去!
首先的反应是网页被嵌入了iframe的恶意脚本,但是仔细检查后发现并不存在这样的问题,反而是从Google的诊断上看,数据库里的内容比较可疑。
下载下数据库一看,果然在所有设定长度较大的varchar字段和几乎所有的ntext字段上,都在最后被挂了诸如:<script scrr='xxx.com></script'>之类的代码。
问题找到了,但是解决的方法却是不能接受的,一个个清除恶意代码的代价太大,不得已,写了一个遍历清除垃圾码的脚本 :
declare c_cursor cursor local for
select a.name, b.name
from sysobjects as a
join syscolumns as b
on a.id = b.id
join systypes as c
on c.xusertype = b.Xtype
where
a.xtype = 'U'and c.name in('ntext','nvarchar','nchar','varchar','char')
declare @tabname sysname,@colname sysname, @trash varchar(100)
select @trash = 'src=http://www.64do.com/script.js'
open c_cursor
fetch next from c_cursor into @tabname,@colname
while @@fetch_status = 0
begin
--print('update cn98003.'+@tabname+' set '+@colname+'=cn98003.f_Clean('+@colname+') '+'where '+@colname+' like '+'''%'+@trash+'%''')
exec('update cn98003.'+@tabname+' set [url=mailto:'+@colname+'=replace(replace(convert(varchar(8000),'+@colname+'),''
'安全检查设置
Dim ar_str,ar_qstr,str_index,qstr_index,strlist,strlist1
strlist = "'|#|exec|insert|select|delete|update|%|chr|char|mid|master|truncate|declare|(|)|*|or|@|and|=|-"
strlist1 = "exec|insert|select|delete|update|truncate|declare|'"
If Request.Form <>"" Then
ar_str = split(strlist1,"|",-1,1)
For Each qstr_index In Request.Form
For str_index=0 To Ubound(ar_str)
If Instr(LCase(Request.Form(qstr_index)),ar_str(str_index)) <>0 Then
Response.Write " <Script Language=JavaScript>alert('请不要在参数中包含非法字符!');"
Response.Write " alert('如有问题请与网络管理员联系!');"
Response.write"javascript:history.go(-1) </SCRIPT>"
Response.End
End If
Next
Next
End If
If Request.QueryString <>"" Then
ar_str = split(strlist,"|",-1,1)
For Each qstr_index In Request.QueryString
For str_index=0 To UBound(ar_str)
If Instr(1,LCase(Request.QueryString(qstr_index)),ar_str(str_index),1) <>0 Then
Response.Write " <Script Language=JavaScript>alert('请不要在参数中包含非法字符!');"
Response.Write " alert('如有问题请与网络管理员联系!');"
Response.write"javascript:history.go(-1) </SCRIPT>"
Response.End
End if
Next
Next
End If
首先的反应是网页被嵌入了iframe的恶意脚本,但是仔细检查后发现并不存在这样的问题,反而是从Google的诊断上看,数据库里的内容比较可疑。
下载下数据库一看,果然在所有设定长度较大的varchar字段和几乎所有的ntext字段上,都在最后被挂了诸如:<script scrr='xxx.com></script'>之类的代码。
问题找到了,但是解决的方法却是不能接受的,一个个清除恶意代码的代价太大,不得已,写了一个遍历清除垃圾码的脚本 :
declare c_cursor cursor local for
select a.name, b.name
from sysobjects as a
join syscolumns as b
on a.id = b.id
join systypes as c
on c.xusertype = b.Xtype
where
a.xtype = 'U'and c.name in('ntext','nvarchar','nchar','varchar','char')
declare @tabname sysname,@colname sysname, @trash varchar(100)
select @trash = 'src=http://www.64do.com/script.js'
open c_cursor
fetch next from c_cursor into @tabname,@colname
while @@fetch_status = 0
begin
--print('update cn98003.'+@tabname+' set '+@colname+'=cn98003.f_Clean('+@colname+') '+'where '+@colname+' like '+'''%'+@trash+'%''')
exec('update cn98003.'+@tabname+' set [url=mailto:'+@colname+'=replace(replace(convert(varchar(8000),'+@colname+'),''
'安全检查设置
Dim ar_str,ar_qstr,str_index,qstr_index,strlist,strlist1
strlist = "'|#|exec|insert|select|delete|update|%|chr|char|mid|master|truncate|declare|(|)|*|or|@|and|=|-"
strlist1 = "exec|insert|select|delete|update|truncate|declare|'"
If Request.Form <>"" Then
ar_str = split(strlist1,"|",-1,1)
For Each qstr_index In Request.Form
For str_index=0 To Ubound(ar_str)
If Instr(LCase(Request.Form(qstr_index)),ar_str(str_index)) <>0 Then
Response.Write " <Script Language=JavaScript>alert('请不要在参数中包含非法字符!');"
Response.Write " alert('如有问题请与网络管理员联系!');"
Response.write"javascript:history.go(-1) </SCRIPT>"
Response.End
End If
Next
Next
End If
If Request.QueryString <>"" Then
ar_str = split(strlist,"|",-1,1)
For Each qstr_index In Request.QueryString
For str_index=0 To UBound(ar_str)
If Instr(1,LCase(Request.QueryString(qstr_index)),ar_str(str_index),1) <>0 Then
Response.Write " <Script Language=JavaScript>alert('请不要在参数中包含非法字符!');"
Response.Write " alert('如有问题请与网络管理员联系!');"
Response.write"javascript:history.go(-1) </SCRIPT>"
Response.End
End if
Next
Next
End If
相关文章推荐
- 彻底清除微软拼音输入法的方法.
- 在网页中挂马和清除木马的方法
- 彻底理解浮动float CSS浮动详解 清除浮动的方法
- “磁盘低格工具”帮你彻底清除磁盘数据不留痕迹的方法
- SQL中某字段设为自动编号及清除后ID重新从1开始计算的方法
- 看清原理 探究彻底清除木马的方法
- 最近流行的ARP病毒彻底清除方法
- 手工彻底清除各种顽固性 Trojan Horse 木马的方法
- SQL清除数据库日志方法
- 清除掉shared pool中某条sql语句方法
- 彻底清除备份域服务器数据元的方法
- 重装MS SQL Server 2000前必须彻底删除原安装文件的方法
- iOS7.x~系统 iG的彻底清除方法
- 如果你的硬盘有隐私数据,可以通过以下方法彻底清除
- 【捡肥皂】,sql挂起清除工具 MS SQL2000挂起工具,无毒绿色,MSSQL手动清除挂起方法
- android实现 彻底退出应用/清除数据/卸载应用的方法
- 彻底清除Trojan.DL.Delf.cxw的方法
- 清除***+修补漏洞=彻底解决网站挂马问题
- MS sql server数据库设置自动清除事务日志的方法
- 探究彻底清除木马的方法