hth华体会体育全站app:Web安全测试之攻击验证机制

发布日期:2022-08-16 | 来源:华体会登陆入口 作者:华体会官方登录

  一般而言,Web的安全就是要让软件在面对恶意输入或敌意的情况下,依然能够充分满足使用需求。而针对Web的安全性测试是验证Web应用的安全服务和识别潜在安全性缺陷的过程。

  安全测试通常要求测试人员制定详细的测试策略,并模拟成攻击者,对软件系统不同的模块进行恶意的攻击或渗透,查看系统是否能正常工作,还原软件中存在的安全漏洞。安全测试人员一般会使用手动工具或自动工具,根据漏洞原理来模拟和激发Web应用。

  通常情况下,Web安全测试开展于性能测试前。对于大多数Web项目,测试开始前需要首先要充分解析和分析应用。然后针对各个模块制定相应的安全测试策略。接着进入手工安全测试阶段,验证基于安全测试的各种漏洞是否存在,包括验证机制、会话管理、访问控制、SQL注入、XSS、逻辑缺陷等多方面的漏洞验证。验证后整理所有测试过程中发现的安全问题,以报告的形式提交给研发。最后待验证结束后进行回归测试,直至所有安全问题全部解决。

  验证机制是Web应用中最常见的,也是最重要的一种安全机制。通常而言, Web应用必须验证用户所提交的用户名和密码是否正确。正确则允许登录,错误则禁止进入。验证机制常常被看做是防御Web恶意攻击的核心机制。如果攻击者可以轻松突破验证机制,那么系统的所有功能、数据、私密信息都会被攻击者控制。验证机制是其他所有安全机制的前提,如果验证机制都无法阻止攻击,那么其他安全机制也大多无法实施。

  登录功能往往是完全公开的,这样的机制可能会诱使攻击者利用枚举来猜测用户名和密码,从而获得访问应用程序的权利。如果应用程序允许攻击者用不同的密码暴力尝试,直到他找到正确的密码,这个程序就非常容易遭受攻击。

  由于这些问题,验证码这种方式也许不能完全避免暴力破解,但实际情况是即使这种方式无法完全生效,也可以使多数随意的攻击者停止攻击行动,转而攻击较容易的应用程序。

  例如,一些应用程序会设置一个cookie,如failedlogin=O;登录尝试失败,递增该值,达到某个上限,检测到这个值并拒绝再次处理登录。这种客户端防御方式只可以防止使用浏览器手动攻击。

  与cookie检测类似,将失败计数器保存在会话中,虽然在客户端没有标明该漏洞存在的迹象,但是只要攻击者获得一个新的会话,就可以继续实施暴力攻击。

  有些应用程序会采取登录尝试达到一定次数后锁定目标账户的方式。但是有可能通过分析其响应,在锁定账户的状态下仍可以进行密码猜测攻击。

  它是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。其核心是综合个人密码和通常为手机来达到双重认证效果。很多电商、银行都采用了该认证方式。它最大的缺点就是构建双因子认证的成本较高,服务器压力也较大。

  经典的登录表单会要求用户输入两组信息:用户名和密码。如果登录尝试失败,则可以得出结论,至少有一组信息出错。

  但是如果应用程序通知用户是哪一组信息无效,就可以利用该信息来降低登录机制的防御效能。

  这种漏洞有可能以更隐蔽的方式出现。例如,用户名无效和密码错误的错误消息表面看起来完全相同,但它们之间仍有可能存在着细微的差别,可以通过拦截其response来观察是否有细微的差别。

  成熟的系统除了用户登录,往往还会提供密码修改功能,但是在编码过程中, 往往忘记了这个功能中也会存在一些安全隐患。

  1)密码修改功能是否拥有隐藏的后台接口,如不通过登录直接可以访问该功能;

  3)密码修改的请求提交时,是否用户名也随之提交?如果提交,是否可以通过修改用户名来达到修改非当前登录用户密码的目的?

  网站大多提供“忘记密码”功能,但是其中往往会存在一些典型的安全问题,其核心问题就是忘记密码的流程跳过了身份验证。

  1 )需要确认应用程序中是否有隐含的忘记密码功能或不通过用户名查询即可访问的情况。

  2)如果恢复机制使用质询方式,则确定用户能否枚举用户名来得到质询信息,与猜测密码相比,响应质询更容易。

  3)如果在忘记密码的请求响应中生成一封包含恢复URL的电子邮件,获取大量此类URL并试图分析和预测其发送URL的模式,是否可以得到其他未知用户的恢复URL。

  4)无论是使用邮件,还是发送手机验证码,查看是否可以拦截请求以修改目标邮箱或手机号,从而达到绕过的目的。

  应用程序有时可能会允许特权用户伪装成其他用户,例如某电商网站拥有类似OOB(on order behalf)的功能,超级管理员可以伪装成任意用户来帮助其执行某些操作。

  1)如上述提到的OOB类功能,网站可能通过严格的权限控制(只有超级管理员才可访问的功能模块)或是隐藏的链接(只有超级管理员才知道)的方式执行,例如在网站中有一个特殊的URL可以链接到一个不需要核对用户身份的页面执行部分操作。这时攻击者可以尝试使用枚举URL或者使用爬虫,从而拦截到该功能,劫持所有用户。

  2)有些伪装功能以后门密码形式执行,也就是说,对于一个普通用户, 除去该用户设置的密码外,还拥有一个“万能密码”。这种设计可能招致暴力破解, 攻击者一次攻击获得两个“触点”,从而便可揭示出后台密码。

  在日常网络应用中,经常发现一些多阶段登录的功能,如在输入用户名、 密码后,可能会要求你验证一个私密问题,通过方可登录。这样的设计毫无疑问会增加验证机制的安全性,但这样的过程也可能产生更多的执行缺陷。

  1)程序可能会认为,用户一旦访问到第二阶段,就已经完成第一阶段的验证,那么可能会允许攻击者直接进入第二阶段。

  2)程序可能会认为,在两个阶段的执行过程中,用户身份不会发生任何变化,于是并没有在每个阶段都确认用户身份。例如,第一阶段提交用户名和密码, 第二阶段可能需要重新提交某个私密问题答案和一些个人信息。如果攻击者在进行第二个阶段时提供了有效数据,但是不同于第一阶段时的用户,那么程序可能会允许用户通过验证。