《安全测试指南》——认证测试【学习笔记】
1. 凭证在加密通道中的传输测试(OTG-AUTHN-001)
应用程序在传输用户凭证(登录信息)时,是否有使用https。
测试方法:
1)黑盒测试:直接工具抓包。(在http访问的页面通过https post方法发送数据也不可行)
2)灰盒测试:与开发人员沟通是否使用https。
2. 默认用户凭证测试(OTG-AUTHN-002)
测试方法:
1)黑盒测试:
<测试常用应用程序的默认凭证>(如weblogic、tomcat默认用户密码)
·有些命名以公司名称来命名,如轩辕:xuanyuan/xuanyuan;
·尝试所有用户名和空密码;
·查看成功登录和登录失败的响应差异,是否通过更改参数进行绕过登录(如:login=yes)
·检查源代码注释中是否泄露账号、密码;
<测试新账号的默认密码>
·查看用户注册页面,试探出用户名的最小和最大长度;检查公司用户名是否有标准命名习惯(如:公司邮件地址或@前面的名称)
·尝试从应用程序推断用户名如何产生(如:user7811)
·尝试查明系统产生的密码是否不可预测(如:用户名usertest的默认密码自动为usertest@123)
·暴力破解
2)灰盒测试
·询问IT人员是否有默认账号密码
·检查数据库是否含有默认用户,并检查是否有空密码字段;
·检查用户名密码是否被硬编码在代码中
·检查密码生成策略,是否可预测
3. 弱锁定机制测试(OTG-AUTHN-003)
账户锁定机制可减少暴力猜测攻击。
验证码会阻止暴力攻击,但不会取代锁定机制。
测试方法:
测试密码错误多次,账户是否被锁定无法登录。(根据应用程序的用途和特点选择合适的阈值,通常阈值为5-10次则账户锁定,锁定时间5-30分钟较为折中)
解锁机制:若是发送解锁链接,则解锁链接应是唯一性链接,不可猜测;且与密码恢复机制不同;
最安全的解锁方法:管理员手动介入
若攻击者的目的是锁定web应用程序所有用户,那么解锁机制可能引发Dos攻击;(所以防止枚举用户名尤为重要)
加固措施:
基于时间的锁定和解锁;
自服务解锁(发送一个解锁链接到用户注册的邮箱地址)
管理员手动解锁;
4. 认证模式绕过测试(OTG-AUTHN-004)(括号内为个人理解)
测试方法:
1)黑盒测试:
·直接页面请求(直接访问需要登录才能访问的页面)
·参数修改(抓包修改某些参数绕过登录,如:authenticated=yes)
·sessionID预测(cookie:account=admin/1,login=yes;cookie1:123123123、cookie2:123123456)
·SQL注入(登录表单存在SQL注入,可绕过登录)
2)灰盒测试
·查看登录认证逻辑,检查是否可以绕过。
5. 记忆密码功能存在威胁测试(OTG-AUTHN-005)
浏览器记住密码功能。
测试方法:
·查找在cookie中被存储的密码,检查应用程序cookie,验证凭证信息是否以铭文形式存储。
·检查哈希机制,若使用的是常用的算法,可通过彩虹表来检查强度,验证哈希函数是否易被猜测。
·验证凭证是否只有在登录时被发送,而不是每条请求都会带上凭证信息。
·考虑其他敏感的表单字段(如:找回密码里的保密问题答案字段)
加固措施:
确保cookie无存储明文凭证,或使用编码或加密的方式。
6. 浏览器缓存威胁测试(OTG-AUTHN-006)
测试方法:
1)浏览器历史记录
在敏感信息位置退出登录,点击浏览器【后退】,检查是否在没有进行认证的情况下获取之前显示的敏感信息。
可通过如下方法禁止【后退】按钮显示敏感信息:
·通过https提供页面;
·在http消息头中设置Cache-Control:must-revalidate
2)浏览器缓存
通过抓包检查是否通过浏览器缓存泄露敏感信息,对包含敏感信息的每一个网页进行检查。
响应头应包含:
·Cache-Control:no-cache,no-store
·Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0
·Expires:0
·Pragma:no-cache(http/1.0)
(附:no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器.
no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源;
Expires: 设置以分钟为单位的绝对过期时间;
must-revalidate: 缓存必须在使用之前验证旧资源的状态,并且不可使用过期资源。表示如果页面过期,则去服务器进行获取;
public: 浏览器和缓存服务器都可以缓存页面信息;
max-age: 相对过期时间, 即以秒为单位的缓存时间)
7. 弱密码策略测试(OTG-AUTHN-007)
测试方法:
·是否要求大小写字母、数字和字符;
·多久强制用户更换密码;
·是否让用户使用先前使用过的密码;
·是否禁止用户密码包含用户名或其他账户信息的字符;
加固措施:
双因子认证或使用大强度密码
8. 弱安全问答测试(OTG-AUTHN-008)
即找回密码中的密保问题。
1)预生成的安全问题
·你的出生日期?(家庭或好友知道)
·最喜欢的颜色?最喜欢的棒球队?(易猜)
·最喜欢的老师姓什么?(易被暴力猜解)
·最喜欢的电影?(其他社工手段)
2)自己生成的安全问题
·密码是xxxx
·1+1=几
测试方法:
1)问题是否易被猜解;
2)是否可自定义设置,则有隐藏的安全威胁;
3)是否有暴力攻击的锁定机制;
9.弱密码的更改或重设功能测试(OTG-AUTHN-009)
即修改密码功能。
测试方法:
1)测试密码重设
重设密码需要什么信息?(是否安全问题,旧密码?)
重设密码如何同用户交换?(最佳方法是:重设密码通过发送邮件到用户最初注册填写的电子邮件地址来完成)
重设的密码是否随机生成?(是否有规律或是弱密码)
密码重设功能是否在更改密码前需要用户确认(用户输入旧密码确认)
2)测试密码更改(与上面重复)
是否需要旧密码的验证?
10.在辅助信道中较弱认证测试(OTG-AUTHN-010)(旁站攻击)
主网站是:http://www.test.com
有认证功能页面且使用传输层安全技术的:https://www.test.com/myaccount/
一个和主网站分离单独存在的手机优化网站没有使用传输层安全技术,并存在一个弱的密码恢复机制。http://m.test.com/myaccount/
测试方法:
1)理解主机制
全面测试网站的主验证功能。
2)确定其他信道
·阅读站点内容,针对主页、联系我们、帮助页面、robots.txt和sitemap.xml等;
·搜索抓包日志(是否有mobile等标识);
·搜索同一公司不同站点或相同域名的网页,可能存在相同的认证机制;
·针对每个信道确定是账户共享;
3)枚举认证功能
列出旁站与主站的各种功能列表(是否都有认证、是否都有注册功能等)
4)审查和测试(旁站和主站的测试结果进行对比)
*本文仅为《安全测试指南4.0》一书的个人学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话