Web安全渗透测试 掌握绝大多数Web漏洞原理及攻防手段

437 阅读7分钟

Web安全渗透测试 掌握绝大多数Web漏洞原理及攻防手段

download: www.ukoou.com/resource/14…

Web安全渗透测试 - 五个常见的Web应用漏洞及其解决方法

注入攻击和跨站脚本攻击
Web应用主要有2种最常见的严重缺陷。首先是各种形式的注入攻击,其中包括SQL、操作系统、电子邮件和LDAP注入,它们的攻击方式都是在发给应用的命令或查询中夹带恶意数据。别有用心的数据可以让应用执行一些恶意命令或访问未授权数据。如果网站使用用户数据生成SQL查询,而不检查用户数据的合法性,那么攻击者就可能执行SQL注入。这样攻击者就可以直接向数据库提交恶意SQL查询和传输命令。跨站脚本(XSS)攻击会将客户端脚本代码(如JavaScript)注入到Web应用的输出中,从而攻击应用的用户。只要访问受攻击的输出或页面,浏览器就会执行代码,让攻击者劫持用户会话,将用户重定向到一个恶意站点或者破坏网页显示效果。XSS攻击很可能出现在动态生成的页面内容中,通常应用会接受用户提供的数据而没有正确验证或转码。
为了防御注入攻击和XSS攻击,应用程序应该配置为假定所有数据——无论是来自表单、URL、Cookie或应用的数据库,都是不可信来源。要检查所有处理用户提供数据的代码,保证它是有效的。验证函数需要清理所有可能有恶意作用的字符或字符串,然后再将它传给脚本和数据库。要检查输入数据的类型、长度、格式和范围。开发者应该使用现有的安全控制库,如OWASP的企业安全API或微软的反跨站脚本攻击库,而不要自行编写验证代码。此外,一定要检查所有从客户端接受的值,进行过滤和编码,然后再传回给用户。
身份验证和会话管理被攻破
Web应用程序必须处理用户验证,并建立会话跟踪每一个用户请求,因为HTTP本身不具备这个功能。除非任何时候所有的身份验证信息和会话身份标识都进行加密,保证不受其他缺陷(如XSS)的攻击,否则攻击者就有可能劫持一个激活的会话,伪装成某个用户的身份。如果一个攻击者发现某个原始用户未注销的会话(路过攻击),那么所有帐号管理功能和事务都必须重新验证,即使用户有一个有效的会话ID。此外,在重要的事务中还应该考虑使用双因子身份验证。
为了发现身份验证和会话管理问题,大家要以执行代码检查和渗透测试。开发者可以使用自动化代码和漏洞扫描程序,发现潜在的安全问题。有一些地方通常需要特别注意,其中包括会话身份标识的处理方式和用户修改用户身份信息的方法。如果没有预算购买商业版本,那么也可以使用许多开源和简化版本软件,它们可以发现一些需要更仔细检查的代码或进程。
不安全的直接对象引用
这是应用设计不当引起的另一个缺陷,它的根源是错误地假定用户总是会遵循应用程序的规则。例如,如果用户的帐号ID显示在页面的URL或隐藏域中,恶意用户可能会猜测其他用户的ID,然后再次提交请求访问他们的数据,特别是当ID值是可以猜测的时候。防止这种漏洞的最佳方法是使用随机、不可猜测的ID、文件名和对象名,而且不要暴露对象的真实名称。常见的错误暴露数据的位置是URL和超链接、隐藏表单域、ASP.NET的未保护视图状态、直接列表框、JavaScript代码和客户端对象(如Java Applet)。每次访问敏感文件或内容时,都要验证访问数据的用户已获得授权。
安全性配置不当
支持Web应用程序的基础架构包含各种各样的设备和软件——服务器、防火墙、数据库、操作系统和应用软件。所有这些元素都必须正确配置和保证安全,应用程序只是运行在最低权限配置上,但是许多系统本身还不够安全。系统管理不当的一个主要原因是Web应用程序管理人员和基础架构支持人员从未接受过必要的培训。

Web安全渗透测试 - 掌握绝大多数Web漏洞原理及攻防手段 - 攻防实战

Jarlsberg是用Python编写的,因此略懂Python会帮助理解本文,但即使不懂也无所谓,因为漏洞和修复漏洞的方法基本上是与语言无关的。另外我们会涉及到黑盒黑客和白盒黑客,所谓黑盒黑客就是通过操纵输入字段或URL参数,观察Web应用程序的响应和变化,尝试找出让它出错的一种攻击手段,这里我们通常会查看HTTP/HTTPS请求和响应,推荐两款很棒的辅助工具Burp和WebScarab;所谓白盒黑客就是分析Web应用程序源代码,尝试找出bug并进行攻击的手段。

你完全可以根据本文介绍的内容搭建一个渗透测试环境,自己做做练习,以提升自己的技能,当然最重要的是通过学习达到举一反三,以后自己也能发现和修复漏洞,Jarlsberg的下载地址是jarlsberg.appspot.com/jarlsberg-c…

如果想在本地运行Jarlsberg,需要先安装Python 2.5,其它版本可能不行,执行Jarlsberg安装的命令如下:

$ cd

$ ./jarlsberg.py
跨站脚本(XSS)

跨站脚本(XSS)指的是黑客通过网站漏洞在不受自己控制的网站内容(通常是HTML或JavaScript)中植入代码,当受害者浏览这样的网页时,植入的代码就会在受害者浏览器中执行,这样就可以顺理成章地窃取受害者与网站请求相关的个人信息。

在一个反射式XSS攻击中,攻击通常是嵌入在请求URL中,受害者浏览黑客构造的恶意URL时就被攻击了。在存储式XSS攻击中,攻击者将攻击代码保存在应用程序内,受害者浏览到这样的网页时就触发攻击代码的执行。

假设www.google.com/search?q=fl…

Your search for 'flowers'

returned the following results:

查询参数q的值被嵌入到Google返回的页面中,如果www.google.com不做任何验证或忽略q,攻击者就可以构造一个类似下面这样的链接进行攻击尝试:

www.google.com/search?q=fl…

接下来就是欺骗受害者点击这个链接,当受害者点击这个链接后,他的浏览器就会解析下面的代码:

Your search for 'flowers'

returned the following results:

浏览器就会执行evil_script(),于是受害者的浏览器状态和所有该域名对应的cookies都全部暴露出来了。

Web安全渗透测试