|
Mdcsoft-IPS入侵防御系统SQL注入防御 |
威盾防火墙 2014-12-05 |
|
SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。 SQL注入:利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。 随着B/S模式被广泛的应用,用这种模式编写应用程序的程序员也越来越多,但由于开发人员的水平和经验参差不齐,相当一部分的开发人员在编写代码的时候,没有对用户的输入数据或者是页面中所携带的信息(如Cookie)进行必要的合法性判断,导致了攻击者可以提交一段数据库查询代码,根据程序返回的结果,获得一些他想得到的数据。 SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。 MDCSOFT-IPS采用了专利技术的VSID(Venus SQL Injection Detection Algorithm )算法,对SQL注入攻击有显著的效果。 VSID算法是一种基于SQL注入攻击手法的检测算法,为各种SQL注入方法建立具备行为共性的检测模型。使用轻型虚拟机预分析技术对提交的URL、Cookie、Post Form进行进一步分析,判断这些提交信息中是否含有SQL注入攻击的企图。 其核心内容是首先收集、分析各种可能的SQL注入攻击方法,并提取出相应的有针对性的攻击机理。为这些SQL攻击方法建立SQL注入检测模型,所有的的这些检测虚拟机模型,就叫做VSID算法误用检测模型。根据这些虚拟机检测来自URL\COOKIE\ POST-Form中的各参数域值是否符合SQL注入模型,如果符合则表示发生了SQL注入攻击。
上图描述的就是Mdcsoft入侵防御系统SQL注入检测流程图。 VSID算法是一种将规则分析(建立虚拟机检测规则的过程)和异常分析(符合SQL注入模型的,就是SQL注入攻击)相结合的技术,是MDCSOFT入侵防御系统柔性化检测的又一体现。 在漏报率和误报率方面,都远低于现有产业界和学术界的研究成果,并且作为产品化了的技术,部署和实现方面也有其他方法所不能比拟的优势。 此外,我们还进行了大量的SQL注入攻击渗透测试(使用工具,渗透测试人员手动攻击),入侵防御系统对绝大部分的SQL攻击都可以实现实时的防御阻断。另外,在和其他友商的对比竞测中,MDCSOFTIPS也体现出了强大的优势。 SQL注入攻击作为深层威胁的一种,已经越来越多地受到用户的关注,如何准确、及时的判断并防御这种危害极大的深层攻击行为,是入侵防御系统责无旁贷的责任。这就要求入侵防御系统本身提供对这种无固定表现形式、种类繁多的攻击行为的准确检测。 MDCSOFT-IPS入侵防御系统依托于mdcsoft的强大入侵分析检测能力,对各种深层的攻击行为都有着优异的检测能力。特别的,对SQL注入这种攻击行为,更采用了专利技术算法,是当前对各种SQL注入变种/变形进行精确防御达到国际先进水平的入侵防御产品。
请求长度限制可以限制url、cookie等HTTP Header的长度规范http请求。
禁用PUT方法Method防止利用IIS直接上传后门脚本文件。
启用防溢出攻击阻止Shellcode等溢出字符,防止0DAY漏洞。
禁止漏洞扫描,阻止Acunetix WVS、Nikto等软件刺探web漏洞。
如一个正常的SQL语句:select * from users where name = %name 其中的select / from / where都是我们所说的关键字,所有SQL语句在提交web server时,都将进行随机化的编码,一个可能的SQL注入语句经过随机化编码后可能是:select123 * from123 users where123 name = ‘Mike’ OR 1=1,(标红的部分是攻击者提交的构造代码),由于OR 1=1是攻击者构造的数据,不会经过系统自身随机化的编码,所以待提交数据库的前置proxy进行解析时,对OR这个关键字将得不到正常结果,由此可以判断攻击发生。 这种方法的缺点和上面的一样,都是基于源码级别的修改,需要拥有和修改程序的源代码,是一种侵入式的解决方案,并且从上面的架构图中我们可以看到,这种解决方案的部署较为复杂。 基于Signature的关键字匹配技术 这是一种在产业界常见的解决方案,著名的免费软件SNORT就是采用的这种解决方案。该方案的技术出现点是:首先抽取SQL注入过程中都会出现的特殊字符(例如:’ – #等),抽取SQL注入过程经常会出现的SQL关键字(例如:’SELECT、UNION等)作为检测SQL注入的依据。利用上述步骤中提取的特征构建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;) 中间标红的字段就是检测数据包中是否含有\ - --等特殊字符。以此来判断是否产生了SQL注入攻击。 很显然这种方法有着极高的漏报和误报率,比如在USER字段提交Select,将会被认作攻击行为。并且做了编码转换或函数转换或者是关键字跨域之后,攻击者很容易躲避机械地匹配字符串方式的检测。 |
|
相关内容: |
最新内容: |
php防止SQL注入详解及防范[2014-12-05]
PHP登录环节防止sql注入的方法浅析[2014-12-05]
PHP与SQL注入攻击防范小技巧[2014-12-05]
闪存博客SQL注入[2014-12-05]
网站SQL注入防御实战[2014-12-05]
SQL注入原理[2014-12-05]
|
php防止SQL注入详解及防范[2014-12-05]
PHP登录环节防止sql注入的方法浅析[2014-12-05]
PHP与SQL注入攻击防范小技巧[2014-12-05]
闪存博客SQL注入[2014-12-05]
巧用IPSec加固Web服务器[2014-12-05]
网站SQL注入防御实战[2014-12-05]
|