WEB版IDS抵御WEB攻击pc软件 文章资讯 手机软件

您当前的位置→图文中心安全防范WEB版IDS抵御WEB攻击

WEB版IDS抵御WEB攻击


2009/4/13  编辑:佚名 来源:本站整理  关键词:

WEB版IDS抵御WEB攻击

 

IDS是英文“Intrusion Detection Systems”的缩写, 中文意思是“入侵检测系统system”。 传统的IDS是一个监听设备, 这个设备可以通过网络net链路挂接就在服务器和客户端所有流量都就一定要流经的链路上, 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注入经常使用的恶意的联合查询。 部分代码如下: 


Code highlighting produced by Actipro CodeHighlighter (freeware) 
http://www.CodeHighlighter.com/ 

-->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核心的日志功能, 它能准确的将每次精确匹配报警后的信息存入日志, 代码如下: 


Code highlighting produced by Actipro CodeHighlighter (freeware) 
http://www.CodeHighlighter.com/ 

-->if (!empty($fail)) 

fputs(fopen($log_file,’a+’),"||$db_string||$error\r\n"); 
die("Hacking Detect 
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函数处理。  

Code highlighting produced by Actipro CodeHighlighter (freeware) 
http://www.CodeHighlighter.com/ 

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

  脚本类IDS展望 

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

  MysqlIds下载: 

  http://www.ixpub.net/thread-900711-1-1.html
 

相关文章
  • teamviewer如何刺穿内网
  • spring boot 1.5.4 web容器定制(端口号等修改)方法
  • ASP 、PHP、JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。...
  • Kanye West:「我是一个外星变形人,我被派遣到地球拯救人类」
  • WPS表格中如何使用WEEKDAY/WEEKNUM函数
  • Deep Web: 暗网中的「白帽黑客」是这样的!
  • DEEP WEB 外星人文件揭露 |Area 51 指南(1-4)合集
  • WinASO EasyTweak(系统优化工具集)V3.2.1 绿色特别版
  • wepqq登陆不了怎么回事
  • Webbot外太空与UFO预测
  • 发表评论
    阅读排行
    相关热门
    网站帮助 - 广告合作 - 下载声明 - 网站地图