用脚本类IDS抵御Web攻击

 
   | |

导读:本文介绍脚本类IDS,即MysqlIds的工作原理和工作方式,使用MysqlIds可以更好的、更有效率的帮助网站管理员和程序员抵御和检测Sql注射漏洞。

关键词:脚本 IDS MysqlIds 原理 网站管理员 Sql注射 漏洞

 
正在加载数据...

  IDS是英文“Intrusion Detection Systems”的缩写,中文意思是“入侵检测系统”。传统的IDS是一个监听设备,这个设备通过网络链路挂接在服务器和客户端所有流量都必须流经的链路上,IDS就是通过特有IDS规则匹配黑客恶意攻击入侵行为的流量,进行即时的监测和报警。

  在历年来开源的Web程序中,被披露最多最严重的安全漏洞一直是SQL注射,为了减少SQL注射漏洞对各大网站造成的安全威胁,web安全研究组织80SEC在2008年编写了国内第一个脚本类IDS - MysqlIds,使用MysqlIds可以更好的、更有效率的帮助网站管理员和程序员抵御和检测Sql注射漏洞。

  现在流行的技术大部分是旁路监听,一般不会因为IDS的性能影响网站正常的访问流量,而Mysqlids也是按照类似的思路同样不会影响程序的性能。Mysqlids存在于应用程序和数据库操作之间的一个环节,完全以数据库的语法来分析执行的SQL语句,而不是采用传统的关键字检测的方法,对于一些非正常的SQL语句能进行阻止并且记录相关的信息,这样就可以很快地定位程序中存在注射漏洞的地方,为漏洞的及时修复提供必要的信息。

  MysqlIds原理

  MysqlIds是由PHP编写的,通过一个封装的安全函数,监测程序中运行的SQL查询语句,针对黑客经常使用的union查询、select子查询、不常用的SQL注释符、文件操作和benchmark等危险函数行为进行报警,这个IDS是无缝封装在程序里的数据库操作流程里的,也就是黑客通过程序漏洞进行恶意的SQL注射都能被非常详细的监测到,程序员或者网站站长甚至能使用IDS发现自己网站程序中未被察觉的0DAY漏洞。下面我就分析MysqlIds的部分代码,使大家可以从原理上更容易的理解MysqlIds,我们看看MysqlIds如何监测黑客SQL注入经常使用的恶意的联合查询。部分代码如下:

if (strpos($clean, 'union') !== false && preg_match('~(^|[^a-z])union($|[^[a-z])~s', $clean) != 0){
$fail = true;
$error="union detect";
}
  MysqlIds使用了PHP中strpos函数来判断程序执行的SQL语句是否存在恶意的SQL注射,这个函数可以高效率的查找指定字符串返回一个布尔值,当程序执行SQL语句中使用联合查询,规则条件就开始生效,启用preg_match函数调用IDS规则来匹配恶意的联合查询语句,这个IDS规则是精心构造的正则表达式,类似于大家使用的传统IDS规则,由于MysqlIds是在程序的数据库操作层来检测,所有能抓取到有效且实实在在的安全问题,且更有效更具有针对性。MysqlIds还针对程序运行的SQL语句出现的异常情况进行了监控,如SQL语句中出现异常的注释符,一般黑客进行SQL注射攻击,很多情况下需要注释符完成SQL注射攻击的SQL语句,同时黑客还有可能使用一些比较危险的MYSQL函数和功能,如sleep、benchmark、load_file和into outfile功能等,这些黑客在程序中使用SQL注射的恶意动作都能被MysqlIds监测到。

  MysqlIds与传统Web安全防御措施的区别

  传统的Web安全防御措施都非常滞后,在Web程序里未知的漏洞被攻击的情况下,管理员往往要排查很多东西才能找到问题的关键点,有的时候可能是使用的程序中存在一个未知的SQL注射漏洞被黑客利用,却无法确定黑客是如何攻击,而导致整个网站一而再,再而三的沦陷。合理地部署Mysqlids后,就可以帮助管理员第一时间准确的定位网站的Web程序漏洞,关键在于MysqlIds核心的日志功能,它能准确的将每次精确匹配报警后的信息存入日志,代码如下:

if (!empty($fail))
{

fputs(fopen($log_file,'a+'),"<?php die();?>||$db_string||$error\r\n");
die("Hacking Detect<br><a href=http://www.80sec.com/>http://www.80sec.com");
}

else {
return $db_string;
}
}
  当程序的SQL语句被监测到恶意行为后,会打开相应条件语句里的fail开关,也就是触发监测后根据信息会留下一条精确的日志信息。管理员排查日志就能精确定位程序中的SQL注射漏洞。

  如何部署MysqlIds

  MysqlIds暂时只支持PHP+MYSQL架构的Web程序,作为开源程序和其原理的灵活性,大家可以很方便将MysqlIds和自己程序无缝结合。比如国内站长采用比较广泛的一款PHP建站程序DeDecms,在DeDecms历史版本中被披露过很多安全问题,其中SQL注射是其安全问题中危害最大也最多的问题。为了解决SQL注射问题,DedeCms在其发布的最新版中的数据库类中封装了80sec的Mysqlids,以用来抵御和检测Sql注射漏洞。我们可以参考DeDecms的MYSQL数据库类,将MysqlIds部署在程序中:

  \include\dedesql.class.php

  DeDecms的MYSQL数据库类161行的ExecuteNoneQuery函数封装了MysqlIds,程序运行的SQL语句在进入MYSQL查询之前都会使用MysqlIds的CheckSql函数处理。

if($this->safeCheck) CheckSql($this->queryString,'update');
return mysql_query($this->queryString,$this->linkID);

  脚本类IDS展望

  近年来大家对安全越来越重视,Web程序的开发也越来越多的考虑程序的安全性,脚本类IDS作为一种花销很小当最有效的安全措施值得大力推广,也许以后的WEB程序在开发之初就会将这类脚本IDS的概念设计在自己的程序中,那么大家只需要打开程序中的一个设置开关就能被实时保护,并能最准确的定位安全问题。目前MysqlIds在80SEC的官方网站上仍然是1.0版,希望他们以后能提供功能更强大脚本IDS。

原文出处:http://safe.it168.com/a2009/0224/266/000000266608.shtml
 
来源:IT168    作者:岳飞    
 
 
 
 
 

Web应用安全/Web访问控制

 
如何配置IIS Web服务器权限,以提供适当和安全的访问控制,使它不仅满足终端用户,而且还确保更好的数据安全性?本文将向您介绍详细的操作步骤。
 
问:OSsurance Desktop能够有效防止服务器崩溃吗?因为据说这个产品支持Windows Server 2000和2003。他们声称能够防止缓冲器的溢出。但是这样能够防止服务器崩溃吗?
 
SQL注入是一类当你把用户输入用来构造SQL查询或是修改、管理数据库的命令时所产生的漏洞。如果在把用户输入追加到变化的SQL语句之前不先进行过滤处理
 
从我们记忆以来,恶意软件就一直存在。然而,它相对于越来越多的黑客通过脆弱的Web应用程序服务器窃取如山的机密信息而言很快就相形见绌了。
 
问:我听说有些攻击者用普遍的查询使搜索结果带上恶意入那件。避免这种设置的最好方法是什么?答:攻击者在开发向顶部的搜索结果中注入恶意网站已经很多年了……

热门技术手册排行

 

虚拟专用网络 VPN(Virtual Private Network )能通过公用网络Internet建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。VPN是对企业内部网的扩展,它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。许多公司使用VPN向公司外部的员工提供企业网络接入。本手册将围绕VPN进行全方位的讲解。

 

“最佳实践”来自英文Best Practice。维基百科对最佳实践的定义是一个管理学概念,认为存在某种技术、方法、过程、活动或机制可以使生产或者管理实践的结果达到最优,并减少出错的可能性。学习应用IT企业安全的最佳实践,其实就是借鉴别人成功的经验,让自己在保护企业安全方面少走弯路。在本手册中,将集合IT业内关于企业安全的最佳实践,并不断更新,以期在企业安全防护方面提供帮助。

 

虚拟化是数据中心的流行技术,它起源于20世纪60年代。它是把昂贵的计算机资源的利用最大化的方式。典型的服务器的利用率不足40%,虚拟化可以更有效地利用技术资源,并节约固定费用。虚拟化的最大优势是,它允许管理员从中央区域为个人电脑和客户设备提供软件。虚拟化不需要管理员对一般任务进行分别考虑。服务器的关机可以带动多用户的关机。

 

黑客策略和技术一直都在进步。黑客还在继续开发新的攻击工具和黑客方法,来恶意访问系统并攻击你的网络,这样企业在开发和采取恰当的方法防御黑客的攻击就变得非常困难。《黑客攻击技术和策略》的技术指南将介绍黑客的内心想法,并帮助你理解恶意攻击者的动机,也提供了一些黑客攻击具体信息的方式,采用的方法以及企业应该采用的保护敏感数据的方法。这里将会提供大量黑客技术和策路的信息,例如允许黑客获取网络系统或者文件访问的系统特征探测。

 

假如你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像SATAN或Saint的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。这时候你就应该学会使用Nessus! 2005年12月Nessus背后的公司Tenable Network Security Inc.发布了Nessus 3,引进了对该产品的全面检查。在写这篇文章时候的最近版本,Nessus 3.2是在2008年3月发布的。Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X。以下是这次Nessus3中的重大变化: 下面将介绍如何使用Nessus工具以及Nessus工具的更新。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录