几个常见的 Web 应用安全缺陷及样例

          前两周在做一个项目,接近尾声时对应用系统进行了安全缺陷检查,主要是通过 IBM Rational AppScan 工具(之前是 WatchFire 的产品)自动进行的。通过对结果的整理、研究对 Web 应用的安全检测和漏洞防范有了新的理解和认识。在这里分享一下,实际上一些概念也比较常见了,其中还结合了几个实际的样例代码,希望大家能够有所交流、提高。

 

SQL Injection

          简单说SQL注入缺陷就是攻击者可以通过应用系统的漏洞提交SQL脚本代码,根据应用系统处理后返回的错误提示信息,这种错误消息能够使攻击者获得用于执行更精确的攻击所需要的信息,通过反复实验和推测获得某些攻击者需要的但本不应被访问到的数据,这就是所谓的SQL Injection,即SQL注入。

Blind SQL Injection

          这种安全缺陷与上述的“标准”的SQL注入缺陷类似,不过最大区别在于攻击者在没有应用系统返回的错误相关提示信息的情况下,仍然可以通过原本在在的SQL注入漏洞攻击应用系统。“标准”SQL注入攻击会使应用系统开发人员相信只要消除这种可能会被利用的提示消息就会解决引起SQL注入式攻击的潜在的问题,但开发人员可能不会认识到虽然这样会隐藏可能被利用的提示消息,但原有的安全缺陷性仍然存在。这样虽然会为攻击者增加困难,但却不能阻止攻击者使用错误消息收集信息,攻击者会不断地将伪造SQL“注入”给应用系统,以期获得非法访问的数据。

 

Blind SQL Injection

 Cross-Site Scripting

          跨站点脚本攻击(XSS/CSS)安全缺陷,往往存在于那些提供动态网页的Web应用系统中。这类Web站点提供动态的页面,这类页面由为用户动态建造的多个源站点的信息组成。如果应用系统存在该漏洞,则攻击者可以将恶意内容(一般为代码)插入到Web站点提供动态的页面中,以收集其他用户在使用被攻击页时提交的重要信息,或简单的在其它用户的浏览器上执行攻击脚本代码。

 

Cross-Site Scripting

HTTP Response Splitting

          这种缺陷是 CRLF Injection 的一种特例,其发生在 HTTP Header 中。攻击的基本原理是通过向存在漏洞的应用系统提交一段攻击目的脚本代码,并在代码之前传入CRLF(CRLF:Carriage Return (CR, ASCII 13, \r) Line Feed (LF, ASCII 10, \n)),这两个字符经常被用来作为换行,通过配合跨站点脚本攻击(XSS/CSS)方法,就可以通过HTTP Response内容,将由攻击者构造的脚本代码返回给被攻击用户的浏览器,进而窃取到攻击者感兴趣的信息。

 

HTTP Response Splitting

HTTP Referer Header SQL Injection

          利用该缺陷,攻击者可以通过在HTTP 请求头中的Referer域中添加特定的攻击脚本代码来获取应用系统或服务器信息,或者根据HTTP响应返回的错误提示信息获得用于执行更精确的攻击所需要的信息,往往通过方式完成SQL注入类攻击。

 

HTTP Referer Header SQL Injection

HTTP User-Agent Header SQL Injection

          这种安全缺陷与HTTP Referer Header SQL Injection缺陷是一样的,只是攻击者利用的是HTTP请求中的User-Agent域。

Login Error Messages Credential Enumeration

          用户登录出错信息泄漏缺陷,存在该漏洞的应用系统登录页面会随着攻击者输入不同的登录信息,返回不同的错误信息。在这种情况下,攻击者可以不断尝试登录操作,以获得用于执行更精确攻击所需要的信息。此种漏洞很容易被暴力攻击工具攻入(brute-force)。建议应用系统返回统一一致的错误信息以避免攻击。

Login Sequence Response Splitting

        该缺陷也是 CRLF Injection 的一种特例,指 CRLF 发生在登录相关的页面中。存在漏洞的应用系统允许攻击者在登录相关页面中提交包括CRLF和脚本代码,这样就可以通过HTTP Response内容,将由攻击者构造的脚本代码返回给被攻击用户的浏览器,进而窃取被攻击者感兴趣的信息。

 

Login Sequence Response Splitting

 

暂时就是这些,其中一些缺陷的名称可能 AppScan 与其它略有不同,不过表达的意思是相同的。

 

注明:以上所有内容和代码,如与我有关项目或文档有相似之处纯属巧合。

 

          写在最后,本来这个东西是写在Word 里的,不过一粘贴到 je 里来就乱了,真是害的我好头痛,最后无奈将所有样例都存成图片提交。希望 je 继续提升博客的编辑功能!上面提到的所有内容,在附件的 Word 文档中可以找到文字版本,尤其是涉及的样例部分。

 

// 2008.12.31 15:44 添加 ////

 

          Google 到一篇结合真实案例解释 Cross-Site Scripting 和 HTTP Response Splitting 安全缺陷原理的文章,写得不错。

老树开新花,再看 HTTP Response Splitting 攻击

 

// 2008.12.31 21:01 添加 ////

 

IBM Rational AppScan 官方网站,现在提供了试用版下载。

Rational AppScan

 

// 2009.01.14 17:08 添加 ////

 

又研究研究,这里做了一些补充。

几个常见的 Web 应用安全缺陷及样例(续)

 

// 2009.03.07 13:30 添加 ////


作者:lzy.je
出处:http://lzy.iteye.com
本文版权归作者所有,只允许以摘要和完整全文两种形式转载,不允许对文字进行裁剪。未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

你可能感兴趣的:(sql,应用服务器,Web,css,脚本)