当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:20:00  来源:本站整理

SQL注入技术和跨站脚本攻击的检测(1)[MSSQL防范]

赞助商链接



  本文“SQL注入技术和跨站脚本攻击的检测(1)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

1、概述  

  在这两年中,安全专家应当对网络利用层的攻击越发器重.因为无论你有多强壮的防火墙法则设置大概非常勤于补漏的修补机制,假如你的网络利用程序开辟者没有遵守安全代码举行开辟,攻击者将通过80端口进入你的系统.遍及被利用的两个主要攻击技术是SQL注入[ref1]和CSS[ref2]攻击.SQL注入是指:通过互联网的输入区域,插入SQL meta-characters(特别字符 代表一些数据)和指令,操作履行后端的SQL查询的技术.这些攻击主要针对其他组织的Web服务器.CSS攻击通过在URL里插入script标签,然后 诱导信任它们的用户点击它们,确保恶意JavaScript代码在受害人的机械上运行.这些攻击操纵了用户和服务器之间的信任关系,事实上服务器没有对输入、输出举行检测,从而未回绝Javascript代码.

  这篇文章谈论SQL注入和CSS攻击漏洞的检测技术.网上已经有很多关于这两种基于WEB攻击的谈论,比方若何实施攻击,他们的影响,怎样更好的编制和计划程序避免这些攻击. 但是, 对若何检测这些攻击并没有充足的谈论.我们采取风行的开源的IDS Snort[ref 3],组建按照检测这些攻击的法则的正则表达式.附带,Snort默许法则设定包含检测CSS的办法,但是这些简单被避开检测.比方大多通过hex进制编码,如%3C%73%63%72%69%70% 74%3E替换<script>避开检测.

依靠level of paranoia组织的本领,我们已经编写了多种检测相同攻击的法则.假如你但愿检测各种大概的SQL注入攻击,那么你需求简单的留神任何现行的SQL meta-characters,如单引号,分号和双重破折号.一样的一个极度检测CSS攻击的办法,只要简单地防备HTML标志的角括号.但这样会检测 出很多错误.为了避免这些,这些法则需求改正使它检测更切确些, 当仍旧不能避免错误.

  在Snort法则中利用pcre(Perl Compatible Regular Expressions)[ref4]关键字,每个法则可以带或不带其他法则行动.这些法则也可以被公用软件如grep(文档搜索工具)利用,来审视网络服务器日记. 但是,需求鉴戒的是,用户的输入只有当以GET提交恳求时,WEB服务器才会记录日记,假如是以POST提交的恳求在日记中是不会记录的. 

  2. SQL注入的正则表示式

  当 你为SQL注入攻击挑选正则表示式的时刻,重点要记着攻击者可以通过提交表单举行SQL注入,也可以通过Cookie区域.你的输入检测逻辑应当考虑用户 组织的各范例输入(比方表单或Cookie信息).并且假如你发现很多告诫来自一个法则,请留神单引号大概是分号,大概些字符是你的Web利用程序创造的 合理的在CookieS中的输入.因此, 您需求按照你的特别的WEB利用程序评价每个法则.

  按照前面提到,一个琐细的检测SQL射入攻击的正则表达式要留神SQL特别的meta-characters 比方单引号(’)双重扩则号(--),为了查出这些字符和他们hex等值数, 以下正则表达式实用: 

  2.1 检测SQL meta-characters的正则表达式
/(\%27)|(\’)|(\-\-)|(\%23)|(#)/ix

  注释:

  我 们首先查抄单引号等值的hex,单引号本身大概双重扩折号.这些是MS sql server或Oracle的字符, 表示后边的为评论, 随后的都将被忽视. 别的,假如你利用MySQL,你需求留神 ’#’和它等值的hex的呈现.注意我们不需求查抄双重破折号等值的hex, 因为这不是HTML meta-character, 浏览器不会举行编码. 并且, 假如攻击者设法手工改正双重破折号为它的hex值%2D(利用代理像Achilles[ref 5]), SQL注入将失利. 
加入上述正则表达式的新的Snort法则以下: 

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"SQL Injection - Paranoid"; flow:to_server,established;uricontent:".pl";pcre:"/(\%27)|(\’)|(\-\-)|(%23)|(#)/i"; classtype:Web-application-attack; sid:9099; rev:5;)

在本篇谈论中, uricontent关键字的值为".pl ", 因为在我们的测试环境里, CGI 程序是用Perl写的.uricontent关键字的值取决于您的特别利用, 这个值大概是".PHP ", 或" .ASP ", 或" .JSP ", 等. 从这点考虑, 我们不显示对应的Snort 法则, 但是我们会给出创造这些法则的正则表达式. 通过这些正则表达式你可以很简单的创造很多的Snort法则.在前面的正则表达式里, 我们检测双重破折号是因为:即便没有单引号的存在那边也大概是SQL射入点[ref 6]. 比方, SQL查询条目只包含数值,以下: 

select value1, value2, num_value3 from database 
where num_value3=some_user_supplied_number 

  这种情形,攻击者可以履行额外的SQL查询, 示范提交以下输入: 

  3; insert values into some_other_table 

  最后, pcre的修饰符’ i’ 和’ x ’ 是用于辨别匹配大小写和忽视空白处的. 上面的法则也可以别的扩大来查抄分号的存在.但是,分号很可以是正常HTTP应答的一部份.为了削减这种错误,也是为了任何正常的单引号和双重扩折号的呈现,上面的法则应当被改正成先检测=号的存.用户输入会呼应一个GET或POST恳求,普通输入提交以下:

  username=some_user_supplied_value&password=some_user_supplied_value 

  因此, SQL 注入尝试将招致用户的输入呈目前a = 号或它等效的hex值之后.

  2.2 改正检测SQL meta-characters的正则表达式 

  /((\%3D)|(=))[^\n]*((\%27)|(\’)|(\-\-)|(\%3B)|(:))/i

  注释:

  这个法则首先留神 = 号或它的hex值(%3D),然后考虑零个或多个除换行符以外的肆意字符,最后检测单引号,双重破折号或分号.

  典型的SQL注入会尝试环绕单引号的用处操作本来的查询,以便得到有效的代价.谈论这个攻击普通利用1’or’1’=’1字符串. 但是, 这个串的侦查很简单被躲避,比方用1’or2>1 --. 但是唯一恒定的部份是最初的字符的值,跟随一单引号,再加’or’.随后的布尔逻辑大概在一定范围上改变,可以是普通款式也大概是非常复杂的.这些攻击可 以相当切确被侦测,通过以下的正则表达式.2.3章节讲授.   以上是“SQL注入技术和跨站脚本攻击的检测(1)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 防备SQL注入式攻击
  • SQL注入漏洞全接触--高级篇(二)
  • SQL注入漏洞全接触--高级篇(一)
  • <b>SQL注入漏洞全接触--进阶篇(二)</b>
  • SQL注入漏洞全接触--进阶篇(一)
  • SQL注入漏洞全接触--入门篇(二)
  • SQL注入漏洞全接触--入门篇(一)
  • SQL Server利用程序中的高级SQL注入
  • SQL注入攻击及其防备检测技术研究
  • 闻名的SQL流量注入(SQL注入)攻击法
  • SQL注入奇招致胜 UNION查询轻松免费看片子
  • 安全入门:SQL注入漏洞全接触
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .