加入论坛 登录
上海儿童医学中心 心脏中心 返回首页

陆医生的个人空间 http://bbs.ibabyheart.com/?1 [收藏] [复制] [分享] [RSS]

日志

网站被挂马之解决办法

已有 351 次阅读2009-1-4 13:05 |个人分类:电脑技术|

    网站最近被“<script src=http://cn.daxia123.cn/cn.js></script>”修改了数据,每条信息(如果标题,内容)后面都此信息,并且是修改的数据库。恢复数据库没几天又回到老样子;
    上网一搜才发现问题很普遍,大家给出的解决办法很多,我试着先试验了第一个方法,看几天下来不知是否奏效;
方法一:
既然他用十六进制进行注入,那我们就用十六进制对付他好了。
分析他提交的十六进制码。过滤这引些十六进制码。
dim sql_leach,sql_leach_0,Sql_DATA,SQL_Get,Sql_Post
sql_leach = "',and,exec,insert,select,delete,update,count,chr,mid,master,truncate,char,declare,0x4445434C4152452040542056415243484,4152452040542056415243484152283235352,0x4445434C415245204054205,48415228323535292C4043205641524,22832353529204445434C415245205,61626C655F437572736F7220435552534F5220464F52205345,45435420612E6E616D652C622E6E616D652046524F4D207379736F626A656, <script,92C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435,F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970,5204054205641524348415228323535292C404320564152434,VaRcHaR,sYsDaTaBaSeS,sElEcT,dEcLaRe"
'以上是除了常规防注入字符集外。又加了本木马专有的十六进制字符集。
sql_leach_0 = split(sql_leach,",")

If Request.QueryString <>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(sql_leach_0)
if instr(Request.QueryString(SQL_Get),sql_leach_0(Sql_DATA))>0 Then
Response.Write "请不要提交可注入的字符串!非法字符为"&sql_leach_0(Sql_DATA)
Response.end
end if
next

Next
End If


If Request.Form <>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(sql_leach_0)
if instr(Request.Form(Sql_Post),sql_leach_0(Sql_DATA))>0 Then
Response.Write "请不要提交可注入的字符串!非法字符为"&sql_leach_0(Sql_DATA)
Response.end
end if
next
next
end if
入在CONN。ASP文件里。
我们公司的站也是周五被注入的。一个小时前加的上面的代码。现在没出现又被注的现象。
 
方法二(可能比较变态,没敢用):
<%dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare| <script|js"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString <>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then

Response.Write " <script>"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');for(;;){window.open('http://cbf001.com')}; </script>"
Response.end
end if
next
Next
End If
If Request.Form <>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
 
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then

Response.Write " <script>"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');"
Response.Write "alert('SQL注入系统拦截提示:↓\n\n你提交或打开的连接里可能存在SQL注入字串\n\n请不要在参数中包含非法字符尝试注入!\n\nHTTP://www.cbf001.com ');"
Response.Write "alert('为什么把鼠标放到这里?');alert('我不是说过不可以这样吗?');alert('你把我的话当什么了?');alert('你知道错了吗?');alert('什么?你居然....');alert('居然还没意识到自己做错了?');"
Response.Write "alert('那好,你要为此付出代价!');alert('我要你在这里点足一千下......');alert('什么?你开始有点后悔了?');alert('何必呢?');alert('你当初干什么去了?');alert('不原谅你!');alert('好从现在开始再点995下......');"
Response.Write "alert('你的手开始累了吗?');alert('什么?你已经没力气了?');alert('你一直在求我原谅你啊!');alert('看来你是真的知道错了!');alert('下次你还会这么做吗?');alert('真的不会了?');"
Response.Write "alert('那好,今天就放你一马!');alert('写封信给我说声对不起!');alert('你能这么做我很高兴!!!');for(;;){window.open('http://cbf001.com')}; </script>"
Response.end
end if
next
next
end if%>

用这段代码,增加到conn.asp里
别人注入时,弹死他们!!!
基本可以过滤得差不多,如果不行的话可以再优化下这面代码!
 
方法三:
这木马与asp页面无关.
解决办法如下:
1.打开mssql企业管理器,将Windows身份验证用户:BUILTIN\Administrators的安全性访问选为:拒绝访问.
2.打开查询分析器,将非法字符串replace掉,本人做了个小代码段,遍历数据库所有的[字符串字段],将定义的字符串去掉,可以为大家效劳一下.

/***********定义要去除的字符,请注意,可能不止一条,我的服务器就查到两条************/
declare @delStr nvarchar(500)
set @delStr='<script src=http://cn.daxia123.cn/cn.js></script>'
--set @delStr='<script src=http://cn.jxmmtv.com/cn.js></script>'
/****************************************/

/**********以下为操作实体************/
set nocount on

declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int
declare @sql nvarchar(500)

set @iResult=0
declare cur cursor for
select name,id from sysobjects where xtype='U'

open cur
fetch next from cur into @tableName,@tbID

while @@fetch_status=0
begin
   declare cur1 cursor for
        --xtype in (231,167,239,175) 为char,varchar,nchar,nvarchar类型
        select name from syscolumns where xtype in (231,167,239,175) and id=@tbID
   open cur1
   fetch next from cur1 into @columnName
   while @@fetch_status=0
   begin
      set @sql='update [' + @tableName + '] set ['+ @columnName +']= replace(['+@columnName+'],'''+@delStr+''','''') where ['+@columnName+'] like ''%'+@delStr+'%'''         
      exec sp_executesql @sql      
      set @iRow=@@rowcount
      set @iResult=@iResult+@iRow
      if @iRow>0
      begin
          print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;'
      end      
      fetch next from cur1 into @columnName


   end
   close cur1
   deallocate cur1
   
   fetch next from cur into @tableName,@tbID
end
print '数据库共有'+convert(varchar(10),@iResult)+'条记录被更新!!!'

close cur
deallocate cur
set nocount off
/*****以上为操作实体******/
2

路过

漂亮

酷毙

搞笑

鸡蛋

鲜花

加油

雷人

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 加入论坛

为宝宝找到心的方向!

社区首页| 家园首页| 群组首页|手机版|上海市东方路1678号 021-38626161|关于我们|沪ICP备15019786号-1|    

返回顶部