网站运营
位置:首页>> 网站运营>> 用脚本类IDS抵御针对WEB的攻击

用脚本类IDS抵御针对WEB的攻击

 来源:asp之家 发布时间:2009-06-28 09:44:00 

标签:脚本类,IDS,抵御,WEB,攻击

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+'),"  $db_string  $error\r\n");
die("Hacking Detect[url]http://www.80sec.com[/url]");
}

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,同时感谢80SEC给我们带来的全新WEB安全概念。

0
投稿

猜你喜欢

  • 如果域名品牌没构建好就建站的话那么你就失败了一半,回想刚开始注册域名的那情景,首先那个时候年轻冲动,初生牛崽不怕虎,很冲动地注册了一些自认为
  • 1、问:我的机器拥有多个IP地址,它们对应各自的域名,如何建立指向不同目录的多个WWW站点?答:你需要分别将各个Web站点的“Web站点”选
  • 1.代朋友问一下。 以前因为对政策不了解。 冒然做GG广告,被K了GG广告账户。 现在想"重新做人"。 可以么?有什么办
  • 没有人喜欢垃圾信息,除了制造者本人。如果你正运行着一个 WordPress 博客系统,你可能已经至少安装了一个垃圾信息控制部件,但
  • www的日志一般都在%winsystem%\system32\logfiles\w3svc1下面,包括www日志和ftp日志,一般先停止ww
  • 网站内部优化作弊和不合理优化方式认定标准1,关键词堆砌为了增加关键词密度,在网页上大量重复关键词的行为,希望提高关键词密度,提高网页针对关键
  • 信报讯 (记者 贺文华) 记者获悉,针对域名持有人投诉比较集中的域名转移困难的问题,CNNIC已经向各大注册商发出通知重申,只要域名在注册后
  • 在一个SNS站上,我们如何让用户看到他最想看到的feed,成了一个难题。feed是内容载体,并且依托用户关系进行传递。不过在选择feed显示
  • 在购买托管计划后,你的帐户并没有自动设置好。你还需要登陆,并在Hosting Control Center完成设置过程。首先. 登陆你的Ac
  • 网络赚钱的方法很多。目前,Google Adsense是多数人最佳的选择。一些基本的优化技巧可以使您的Google Adsense收入翻倍。
  • SEOer利用tag进行优化甚至是Spam的历史绝对可算“悠久”了。但利用tag来进行网站优化就真的那么容易吗?你是否在网站信息tag化的进
  • <script language="javascript" type="text/javascript&
  • 今天一朋友说DedeCMS后台广告管理模块修改广告时,无论是更新缓存还是生成页面,前台页面中的广告就是不更新!这里haibor总结一下!安装
  • 过去的三个月里 Google 宣布了在搜索结果的一系列新测试和新功能,值得回头来看看其间最频繁的,也研究下对于未来的优化工作会有什么潜在的影
  • Google 分析工具可以帮助您了解用户、流量来源、以及网站内容的表现。在掌握这些数据的基础上,您可以更有针对性地进行网站内容优化、增加流量
  • 外链在SEO优化中占有很重要的地位,但是外链应该重质还是量?Google关键词排名分析从Google查看关键词“租车”排名(2010.01.
  • 使用Godaddy空间的朋友们,在主机安装的过程中可能会出现问题,安装步骤如下:1> 进入 我的帐户,点击 Setup Account
  • 百度C2C推出之际屏蔽门等风波不断,这将对新平台带来严峻的考验;百度应该快速的平息这场风波,用协商对话的方式来应对,中国互联网需要和谐竞争,
  • 问题:企业的网站建起来了,如何让它真正发挥作用呢?解决方案: 这里向你推荐的8个网站推广技巧让你的门前车水马龙!是不是所有的商业网站都可以一
  • 做为论坛来说,运营思路和常见的CMS的操作是不一样的,CMS不用担心用户活跃,只需要引进用户,提供优质内容和体验留住用户就可以,但是BBS需
手机版 网站运营 asp之家 www.aspxhome.com