snortsqlserver:教你利用SNORT规则防御SQL注入

  1 .文档概述
  本文档详细阐述了 SQL 注入规则集合设计过程和理论依据并对每类规则检测原理和修正过程进行了相关分析
  2 .规则部署要求
  适用于包含 SNORT 2.3 及以上版本检测引擎
  
  3 .规则详细设计
  3.1. 对 select+union+select 利用检测
  SELECT+union 用于利用现有脚本 SQL 语句对数据库其他表进行窥探和暴表攻击原理是:首先利用歧义 SQL ( or 11 的类)安全避过脚本中原有 SQL 然后利用 UNION+SQLECT 构造第 2段 SQL 构造难度在于猜测需要窥探表字段个数和类型当个数和类型都符合时候般可以在正常页面实现暴表系统表般存有非常重要信息所以这种攻击旦成功基本可以认为系统安全已经崩溃考察正常探测情况攻击者般构造形如 1%20%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21%20from%20admin">http://127.0.0.1/rule_manage_system/code/edit_rule.php?sid=1430%20and%2011%20%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21%20from%20admin URL 这种攻击利用空格+ union 是都有特征;其次 2 次 SQL 语句中 select 最后是 2 次 sql 末尾 from 另外?号和=号也是必不可少特征在 URL 中按照先后次序应该是:?= union select 基本可以认定为 SQL 注入攻击
  
  规则设计:
  首先正则表达式为:
  /(\%3D|=)+((\S|\s))+((\%75)|u|U|(\%55))((\%6E)|n|N|(\%4E))((\%69)|i|I|(\%49))((\%6F)|o|O|(\%4F))((\%6E)|n|n|(\%4E))((%20)|(\w+)|\S|\s)+((\%73)|s|S|(\%53))((\%65)|e|E|(\%45))((\%6C)|l|L|(\%4C))((\%65)|e|E|(\%45))((\%63)|c|C|(\%43))((\%74)|t|T|(\%54))/ix
  解释 :
  \w - 零个或多个或者下划线
  正则表达式首先检测是否有 URL =号这是有参数 URL 首要特征;其次检测=号后有没有 UNION 大写、小写或者 16 进制代码组合;随后检测 UNION1 个或多个其他;最后检测 UNION 后 URL 中是否含有 SELECT 大写、小写或者 16 进制代码组合;这种关键字检测组合是任何 UNION + SELECT 借用最基本特征
  在 URL 中参数提交般为 xxx.asp?a=xxx 为了提高效率和准确率故而在规则中增加检测?修正后完整规则是:
  1) alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:" 检测到 SQL 注入攻击特征 "; flow:to_server,established;uricontent:"?"; pcre:" /(\%3D|=)+((\S|\s))+((\%75)|u|U|(\%55))((\%6E)|n|N|(\%4E))((\%69)|i|I|(\%49))((\%6F)|o|O|(\%4F))((\%6E)|n|n|(\%4E))((%20)|(\w+)|\S|\s)+((\%73)|s|S|(\%53))((\%65)|e|E|(\%45))((\%6C)|l|L|(\%4C))((\%65)|e|E|(\%45))((\%63)|c|C|(\%43))((\%74)|t|T|(\%54))/ix";no; sid:10114; rev:1;)
  
  3.2. 对 select+load_file ()利用检测
  SELECT+LOAD_FILE 用于利用现有脚本 SQL 语句对系统重要文件窥探和暴露攻击原理是:首先利用歧义 SQL ( or 11 的类)安全避过脚本中原有 SQL 然后利用 UNION+LOADFILE 构造第 2段 SQL 构造难度在于猜测需要窥探表字段个数和类型当个数和类型都符合时候般可以在正常页面实现重要文件暴露这种攻击旦成功后果相当严重考察正常探测情况攻击者般构造形如 1%20%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,LOAD_FILE(’/home/hek/1.txt’),17,18,19,20,21%20from%20admin%23">http://127.0.0.1/rule_manage_system/code/edit_rule.php?sid=1430%20and%2011%20%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15,LOAD_FILE(’/home/hek/1.txt’),17,18,19,20,21%20from%20admin%23 考察这种攻击利用必不可少特征首先是 UNION 其次是 2 次 SQL 语句中 LOAD_FILE 另外?号和=号也是必不可少特征在 URL 中按照先后次序出现如下这类基本可以认定为 SQL 注入攻击由此构造正则表达式
  
  规则设计:
  正则表达式为:
  /(\%3D|=)+(\S|\s)+((\%75)|u|U|(\%55))((\%6E)|n|N|(\%
Tags:  sql注入攻击 sql注入工具 sql注入 snortsqlserver

延伸阅读

最新评论

发表评论