SQL注入技术和跨站攻击的检测
当发动CSS攻击或检测一个网站漏洞的时候, 攻击者可能首先使简单的HTML标签如<b>(粗体),<i>(斜体)或<u>(下划线),或者他可能尝试简单的 script标签如<script>alert("OK")</script>. 因为大多数出版物和网络传播的检测网站是否有css漏洞都拿这个作为例子。这些尝试都可以很简单的被检测出来。然而,高明点的攻击者可能用它的hex值替换整个字符串。这样<script>标签会以%3C%73%63%72%69%70%74%3E出现。另一方面,攻击者可能使用web代理服务器像Achilles会自动转换一些特殊字符如<换成%3C、>换成%3E.这样攻击发生时,URL 中通常以hex等值代替角括号。
下列正则表达式将检测任何文本中包含的html的<、>。它将捉住试图使用< b>、<u>、或<script>。这正则表达式应该忽略大小写。我们需要同时检测角括号和它的hex等值(% 3C|<)。检测hex进制转化的整个字符串,我们必须检测用户输入的数字和%号,即使用[a-z0-9%] 。这可能会导致一些错误出现,不是大部分会检测到真实攻击的。
3.1 一般 CSS 攻击的正则表达式
/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/ix
解释:
((\%3C)|<) -检查<和它hex等值
((\%2F)|\/)*-结束标签/或它的 hex等值
[a-z0-9\%]+ -检查标签里的字母或它hex等值
((\%3E)|>) -检查>或它的hex等值
Snort 规则:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"NII Cross-site scripting attempt"; flow:to_server,established; pcre:"/((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/i"; classtype:Web-application-attack; sid:9000; rev:5;)
跨站脚本同样可以使用<img src=>技术。现行默认的snort规则可以被轻易避开。
3.2章节提供了防止这种技术的方法。
3.2 "<img src" CSS 攻击正则表达式
/((\%3C)|<)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^\n]+((\%3E)|>)/I
解释:
(\%3 C)|<) -<或它的hex等值
(\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -’img’字母或它的大小写hex等值的变化组合
[^\n]+ -除了换行符以外的任何跟随<img的字符
(\%3E)|>) ->或它的hex等值
3.3 CSS 攻击的极端的正则表达式
/((\%3C)|<)[^\n]+((\%3E)|>)/I
解释:
这个规则简单寻找<+除换行符外的任何字符+>。由于你的web服务器和web应用程序的构架,这个规则可能产生一些错误。但它能保证捉住任何CCS或者类似CSS的攻击。
总结:
在这篇文章中,我们提出了不同种类的正则表达式规则来检测SQL注入和跨站脚本攻击。有些规则简单而极端,一个潜在的攻击都将提高警惕。但这些极端的规则可能导致一些主动的错误。考虑到这点,我们修改了这些简单的规则,利用了另外的样式,他们可以检查的更准确些。在这些网络应用成的攻击检测中,我们推荐将这些作为调试你IDS或日志分析方法的起点。再经过几次修改后,在你对正常网交易部分的非恶意应答进行评估以后,你应该可以准备的检测那些攻击了。
参考
1. SQL Injection
http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf2. Cross Site Scripting FAQ
http://www.cgisecurity.com/articles/xss-faq.shtml
3. The Snort IDS
http://www.snort.org4. Perl-compatible regular expressions (pcre)
http://www.pcre.org5. Web application proxy, Achilles
http://achilles.mavensecurity.com3. Advanced SQL Injection
http://www.nextgenss.com/papers/advanced_sql_injection.pdf7. Secure Programming HOWTO, David Wheeler
www.dwheeler.com8. Threats and Countermeasures, MSDN, Microsoft