登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

伊人诚类的情感世界

~为理想插上翅膀^_^让语言轻舞飞扬~

 
 
 

日志

 
 

处理sql数据库批量注入  

2009-04-14 21:22:27|  分类: 《数据库》 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近垃圾黑客活动猖獗,每天都有大量网站的sql server数据库被批量注入代码,导致网站数据混乱或网站无法正常访问,我有几个客户的网站也同样中招了!首先让我们来强烈的鄙视那些非法入侵别人网站,不顾别人感受的垃圾黑客们,气愤之余,我们首要解决的还是网站sql数据库的数据恢复及防止sql数据库再次被注入!

我们先来了解一下sql注入的原理,其实如果你稍微懂些程序,会非常容易理解。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,一般是由于程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。知道了原理,防范起来就容易多了,我们需要做的就是要过滤掉那些请求的特殊字符,可以下载SQL通用防注入系统加在链接数据库的文件中!

那如果我们的sql数据库被批量注入代码要如何来清除呢?如果挨个的表去删除,那估计会把你累吐啊!这里可以分享一下批量清除sql数据库被注入的代码的方法:如果是sql server数据库,可以远程链接到数据库,使用查询分析器运行“update 数据库表 set 表的键值 =replace(cast(表的键值 as varchar(8000)),'被注入的代码','')”这段代码就可以了,但是也要挨个表的去清除!

比如:SQL注入c.nuclear3.com/css/c.js的解决办法
直接复制下面的代码保存一个ASP文件
#include
到数据库连接文件就OK
至于已经存在的咋数据库直接运行一下代码替换
update ass set title =replace(cast(title as varchar(8000)),’js
代码段’,”)

只能一个字段一个字段的进行替换,没有别的办法

[js.txt]:

<%
'--------定义部份------------------
Dim XH_Post,XH_Get,XH_Cookie,XH_In,XH_Inf,XH_Xh,XH_Inf2,XH_In2
'自定义需要过滤的字串, "|" 分隔
XH_In = "'|;|and|exec|insert|select|delete%20from|update|count|*|%|chr|mid|master|truncate|char|declare|drop%20table|from|net%20user|xp_cmdshell|/add|ne
t%20localgroup%20administrators|Asc|char"
XH_In2 = "'|;|and|exec|insert|select|delete%20from|update|count|chr|mid|master|truncate|char|declare|drop%20table|from|net%20user|xp_cmdshell|/add|net%20localgroup%20administrators|Asc|char"
'----------------------------------
%>
 
<%
XH_Inf = split(XH_In,"|")
XH_Inf2 = split(XH_In2,"|")
'--------POST部份------------------
If Request.Form<>"" Then
For Each XH_Post In Request.Form
 
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.Form(XH_Post)),XH_Inf(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&XH_Post&"<br>"
Response.Write "提交数据:"&Request.Form(XH_Post)
Response.End
End If
Next
Next
End If
'----------------------------------
 
'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each XH_Get In Request.QueryString
 
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.QueryString(XH_Get)),XH_Inf(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&XH_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(XH_Get)
Response.End
End If
Next
Next
End If
'----------------------------------
 
'--------COOKIE部份-------------------
If Request.Cookies<>"" Then
For Each XH_Cookie In Request.Cookies
 
For XH_Xh=0 To Ubound(XH_Inf2)
If Instr(LCase(Request.Cookies(XH_Cookie)),XH_Inf2(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:Cookie<br>"
Response.Write "提交参数:"&XH_Cookie&"<br>"
Response.Write "提交数据:"&Request.Cookies(XH_Cookie)
Response.End
End If
Next
Next
End If
'----------------------------------
%>
 
如果有必要用cookie做认证的可以用下面试验下,可以保证躲过这次的自动攻击,但手动攻击不保证能防住,有条
件的还是把cookie认证改成session认证保险点
如果没有COOKIE认证,可以直接用这个,代码不需要修改
代码如下
 
<%
 
'--------定义部份------------------
Dim XH_Post,XH_Get,XH_Cookie,XH_In,XH_Inf,XH_Xh
'自定义需要过滤的字串, "|" 分隔
XH_In = "'|;|and|exec|insert|select|delete%20from|update|count|*|%|chr|mid|master|truncate|char|declare|drop%20table|from|net%20user|xp_cmdshell|/ad
d|net%20localgroup%20administrators|Asc|char"
 
'----------------------------------
%>
 
<%
XH_Inf = split(XH_In,"|")
 
'--------POST部份------------------
If Request.Form<>"" Then
For Each XH_Post In Request.Form
 
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.Form(XH_Post)),XH_Inf(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交参数:"&XH_Post&"<br>"
Response.Write "提交数据:"&Request.Form(XH_Post)
Response.End
End If
Next
Next
End If
'----------------------------------
 
'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each XH_Get In Request.QueryString
 
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.QueryString(XH_Get)),XH_Inf(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交参数:"&XH_Get&"<br>"
Response.Write "提交数据:"&Request.QueryString(XH_Get)
Response.End
End If
Next
Next
End If
'----------------------------------
 
'--------COOKIE部份-------------------
If Request.Cookies<>"" Then
For Each XH_Cookie In Request.Cookies
 
For XH_Xh=0 To Ubound(XH_Inf)
If Instr(LCase(Request.Cookies(XH_Cookie)),XH_Inf(XH_Xh))<>0 Then
Response.Write "非法操作!系统做了如下记录↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作时间:"&Now&"<br>"
Response.Write "操作页面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:Cookie<br>"
Response.Write "提交参数:"&XH_Cookie&"<br>"
Response.Write "提交数据:"&Request.Cookies(XH_Cookie)
Response.End
End If
Next
Next
End If
'----------------------------------
%>
 
再说点与程序无关的吧。因为现在各大网站或多或少是用别人的代码拼起来的,所以一旦原程序出现漏
洞,那么这个网站也会跟着受害。在此,所以建议网站管理员不要拿起别人的程序就用,如果你实
在不会写ASP,你总会改数据库的结构吧,实在不会写你总会设IIS让其不报错吧。这里再说两种防
ASP页面暴出错误信息的方法:
  方法1:打开你的IIS管理器(IIS6.0为例),选择你的网站=》属性页面=》主目录选项卡=》点击
配置按钮=》调试选项卡=》向客户端发送下列文本错误消息
  这样,即使入侵者找到了注入点,注入后,得到也只是服务器返回的固定的错误消息。不能得到任
何有价值的错误信息。
  方法2:在你的ASP语句中(一般是在最开头的地方),加上一句
  On Error Resume Next
  (注意,这句必须加在里面,不然IIS可不认。)
  这就是著名的容错语句,当ASP语句执行时发生错误,就跳过错误,继续向下执行,而且不会返回错误信息。
(当然写程序的时候就不要加了哦,方便我们自己找错嘛。)
  评论这张
 
阅读(392)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018