0x04 OTG-AUTHN 认证测试

加密信道传输凭证测试(OTG-AUTHN-001)

  1. 综述
    用户凭证是否加密传输
    传输信道是否加密
    传输信道是否能够被嗅探
    HTTPS建立在TLS/SSL之上,弱SSL/TLS
  2. 如何测试
    黑盒
  • 通过HTTP使用POST方法发送数据
  • 通过HTTPS使用POST方法发送数据
  • 在一个HTTP页面上通过HTTPS POST方法发送数据
    HTTP的登录页面,跳转到HTTPS的页面
    SSL Strip攻击(MitM)
  • 通过HTTPS使用GET方法发送数据

    灰盒
    存在敏感信息的地方HTTPS,登录页面

  1. 测试工具
  • WebScarab
  • Zed Attack Proxy

默认口令测试(OTG-AUTHN-002)

  1. 综述
  • 开源或商业软件一般都存在默认口令
  • 默认口令不修改的原因 IT人员缺乏经验
    程序员为访问和测试应用留下的后门
    应用程序内建无法移除的默认账户(包括预设用户名和密码)
    应用程序不强制用户在第一次登录时修改默认口令
  1. 如何测试
    黑盒
  • 测试常见应用系统的默认口令 在信息收集章节找到管理接口(后台)
    通过查询官方文档或使用搜索引擎搜索默认账户密码
    测试或猜测用户账户,登录页面、密码重置页面、忘记密码页面、注册页面

    • 尝试:
      admin、administrator、root、system、guest、operator、super
      qa、test、test1、testing,或类似的组合用户名密码
      password、pass123、password123、admin、guest密码组合,字典
      管理员用户名可能为应用程序名称或公司名
      通讯录上的名字、email、社交媒体下的系统管理员名字,猜测对应的账户名
      所有用户尝试空密码
      查看页面源码或JS脚本,寻找与用户名和密码相关的引用
      页面源码注释,备份文件或目录
  • 测试新账户的默认密码
    • 步骤
      通过注册页面,获取用户名和密码的最大和最小长度
      判断用户名生成规则,用户能否选择或系统自动生成,用户资料,模糊测试
      判断系统生成的密码是否可以预测,若可以,尝试暴破关联或已枚举的用户
      对上述用户使用空密码或与用户名相同的密码进行尝试

    灰盒

    • 与IT人员讨论确定密码和应用程序采取的管理机制
    • 询问IT人员是否必须修改默认密码,默认账户是否被禁用
    • 检查数据库密码,空密码,与黑盒相同
    • 检查代码中是否硬编码用户名、密码、密钥等
    • 检查保护用户名和密码的配置文件
    • 检查密码策略,及应用程序为新用户生成密码过程中使用的密码策略
  1. 测试工具
  • Burp Intruder
  • THC Hydra
  • Brutus
  • Nikto 2

账户锁定机制测试(OTG-AUTHN-003)

  1. 综述
    账户锁定机制有利于减轻暴破的攻击,需平衡未认证访问和认证用户被拒绝合法访问
  2. 测试目标
    评估账户锁定机制减轻暴破的能力
    评估解锁机制对非授权账户解锁能力的抵抗程度
  3. 如何测试
    尝试错误密码登录,获取触发锁定机制的次数
    使用验证码可能阻止暴破,但验证码本身也有脆弱性
  • 账户锁定机制应考虑的因素
    针对应用程序的暴破会带来什么风险
    验证码能否减轻风险
    触发锁定机制的失败登录次数(5-10)
    解锁方式(管理员/规定时间内解锁/用户自助解锁)
    如果攻击者目标仅仅是锁定所有的用户账户,则锁定机制可能造成DoS
  1. 整改措施
    根据风险等级从低到高
  • 基于时间的锁定和解锁
  • 自助解锁(向注册用户发送锁定邮件)
  • 管理员手动解锁
  • 管理员根据用户提供的身份信息手动解锁

绕过认证模式测试(OTG-AUTHN-004)

  1. 综述
  • 认证模式可以在SDLC的各个阶段发现 设计:错误的应用区域保护定义,未选择强加密协议保证凭证传输安全
    开发:错误的输入验证或未遵循安全开发最佳实践
    部署:安装配置过程
  1. 如何测试
    黑盒
  • 绕过Web应用中的认证模式 直接页面请求
    修改参数
    会话ID预测
    SQL注入

    灰盒
    认证过程,结合其他漏洞

  1. 测试工具
  • Web Scarab
  • WebGoat
  • Zed Attack Proxy

记住密码功能测试(OTG-AUTHN-005)

  1. 综述
    浏览器记住密码会自动在相同认证表单中填入登录信息
  2. 如何测试
    查找存储在cookie中密码,检查应用程序存储的cookie,验证凭证信息没有被明文存储(经过哈希)
    检查哈希算法
    验证凭证信息只在登录过程中被发送,而不是随着每一个请求发送给应用程序
    考虑其他敏感表单域(密码找回/账户解锁)
  3. 整改措施
  • 确保没有敏感信息被明文或能被简单破解的编码和加密形式存储于cookie中

测试浏览器缓存脆弱点(OTG-AUTHN-006)

  1. 综述
    检查应用程序是否正确指导浏览器不记住敏感数据
  2. 如何测试
    黑盒
  • 浏览器历史记录
    退出账户后,点击浏览器的后退按钮,检查是否能访问正常登录的数据
  • 浏览器缓存
    HTTP响应头,Cache-Control
    灰盒
    服务器响应头、HTML代码
  1. 测试工具
  • Zed Attack Proxy
  • Firefox插件Cacheviewer2

弱密码策略测试(OTG-AUTHN-007)

  1. 综述
    弱密、键位密码
  2. 测试目标
    通过评价密码长度、复杂度、复杂情况和生命周期要求,确定应用程序对暴破的抵抗能力
  3. 如何测试
    在密码中的合法字符和非法字符分别是什么(大小写字母、数字、特殊字符)
    密码更改频率多久,密码有效期多久,能否通过连续修改密码,将密码改为原来的密码(A->B->A)
    用户多久需要修改密码(90天?)或大量登录失败尝试导致账户锁定之后
    上一个密码和新密码区别多大
    密码中能否使用与用户名、个人信息相关的信息(注册时提供的信息)
  4. 整改措施
  • 额外的认证措施,双因素认证2FA
  • 强密码策略,确保密码长度、复杂度、复杂情况和生命周期

测试安全问答脆弱性(OTG-AUTHN-008)

  1. 综述
  • 密保,恢复密码时使用安全问题和答案
  • 预生成的问题(可能导致不安全的答案)
    你母亲的名字,你的生日,你最喜欢的颜色,你最喜欢的球队,你最喜欢的电影…
  • 自生成的问题(可能也不安全)
    一加一等于几,用户名是什么,我的密码是[email protected]$p1N…
  1. 如何测试
  • 测试脆弱的预生成问题
  • 测试脆弱的自生成问题
  • 测试可暴力破解的问题
    密保需要回答多少个问题

    • 应用程序是否允许用户选择答案
      能通过搜索引擎查找的答案
      有确定答案的问题,如第一所学校
      有可能的答案,基于统计分析
    • 猜测次数 密码重置是否可以无限尝试
      答案验证错误多少次锁定,可造成DoS

测试密码修改和重置功能(OTG-AUTHN-009)

  1. 综述
  2. 测试目标
    确定当用户修改密码时,应用程序对恶意破坏账户更改过程的抵抗能力
    确定对猜测或绕过密码重置功能的抵抗能力
  3. 如何测试
  • 重点检查
    除管理员之外的用户是否可以修改或重置其他人账户
    用户是否可以操纵或破坏密码修改或重置过程来改变或重置他人或管理员密码
    密码重置或修改过程中是否存在CSRF
  • 密码重置测试
    除检查以上
    还需检查

    • 重置密码需要哪些信息
      安全问题,安全问题强度
    • 重置后密码如何告知用户
      直接显示给用户,不安全
      向注册邮箱或密保邮箱发送
    • 重置的密码是否随机生成
      安全的随机算法
    • 重置密码功能是否在修改密码前要求确认
      限制DoS,应用向用户发送邮箱链接时,附带随机令牌,并且只有当用户访问这个链接时,整个重置过程才算完成
  • 密码修改测试 除以上测试
    • 重点确认
      完成过程中是否要求提供旧密码
  1. 整改措施
  • 密码修改或重置功能需要保护,如要求用户再次认证或确认

测试其他脆弱的认证渠道(OTG-AUTHN-010)

  1. 综述
    主要认证机制可能不包含任何漏洞,不代表认证渠道不存在
  • 其他交互渠道
    标准网站
    为移动或特定设备优化的网站
    为无障碍访问优化的网站
    其他国家和语言网站
    使用相同账户的平行网站(相同公司的其他网站,共享用户的合作网站)
    开发、测试、终端用户集成测试和标准站点不同阶段的版本的网站
  • 其他类型应用或业务逻辑中使用
    移动设备APP
    桌面应用
    呼叫中心操作员
    交互语音服务或电话系统
  • 主要认证测试环节应测试
    积极改进或维护降级导致的功能变化
    不使用cookies的站点
    不使用JS的站点
    不使用插件如Flash和Java的站点
  1. 如何测试
  • 理解主要的网站机制
    识别账户如何被创建、使用或改变,密码如何被恢复、重置或修改,了解提升权限的认证和保护措施
  • 识别其他访问渠道
    读取站点内容,主页、联系我们、帮助页面、技术支持、FAQ、买家须知、私人提示、robots.txt文件、sitemap.xml文件
    搜索HTTP代理日志,信息收集和测试的记录,搜索类似”mobile”、“android”、“iphone”、“ipad”、“SSO”…
    搜索引擎
  • 枚举认证功能
  • 主要网站移动设备、呼叫中心、伙伴网站
    呼叫中心对身份鉴别弱于主要网站
  • 审查并测试
  1. 整改措施
  • 确保认证策略被一致性低应用于所有访问渠道
  • SSO

Leave a Reply

Your email address will not be published. Required fields are marked *