信息安全对于用户登录认证最为典型的用例,下面通过几个安全认证测试用例,分析一般情况存在的安全漏洞,主要用例有:验证码测试、用户名枚举测试、账号锁定策略测试、表单绕过测试、密码找回功能测试、密码找回用户凭证暴力破解、弱token带来的任意重置及找回密码本地验证、密码修改测试
2) 验证码和用户名、密码是否一次性、同时提交给服务器验证,如果是分开提交、分开验证,则存在漏洞
3) 在服务器端,是否只有在验证码检验通过后才进行用户名和密码的检验,如果不是说明存在漏洞。(检测方法:输入错误的用户名或密码、错误的验证码。观察返回信息,是否只提示验证码错误,也就是说当验证码错误时,禁止再判断用户名和密码。)
4) 验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞,完成测试
5) 生成的验证码是否可以通过html源代码查看到,如果可以说明存在漏洞,完成测试
6) 生成验证码的模块是否根据提供的参数生成验证码,如果是说明存在漏洞,完成测试
7) 请求10次观察验证码是否随机生成,如果存在一定的规律(例如5次后出现同一验证码)说明存在漏洞,完成测试
8) 观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只有白色)说明存在漏洞,完成测试
13) 从Burpsuite拦截数据中复制对应登陆请求的POST或GET消息(文本格式),将其中的口令更改一个字符
16) 判断返回的页面中是否包含“验证码错误”(或类似)的提示,如果没有,说明存在漏洞,完成测试
2、用户名枚举测试 - 进行暴力破解,攻击者首先需要知道已存在的用户名,如果登陆验证设计过程中,出现提示用户名不存在现象,则可能存在用户名枚举漏洞。
2) 若输入用户名后,服务器返回提示类似于“用户名不存在”,则说明存在漏洞,完成测试;
3) 使用正确的用户名(或同功能的身份标志),在口令框中输入admin;
4) 若服务器提示类似于“密码/口令错误”, “用户名不存在”之类的信息,则说明存在漏洞,完成测试。
3、账号锁定策略测试 - 当频繁的输入错误的用户名/口令,系统自动锁定该帐户是防范暴力破解常用手段,本测试主要用于测试系统是否有该安全机制。
4、表单绕过测试 - 目前很多身份验证设计采用表单登录验证方式,本测试主要分析采用表单身份登陆设计是否可以通过输入特殊字符绕过身份验证。
5、密码找回功能测试 - 网站在密码重设和密码找回功能上如果存在着缺陷,攻击者可以通过此功能找到指定用户的密码,更改指定用户的密码让其不能登陆,造成业务数据修改等。
3) 系统正常需要用户输入一些能够证明其合法身份的信息(比如回答一些原来注册用户时填写的一些信息,比如小学教师姓名等),如果是回答问题的方式,则判断问题是否类似于“我的生日”或“我的姓氏”这种答案限定范围非常小的问题。如果是说明存在漏洞,完成测试,否则进行下一步。
5) 在html源代码中查看是否存在着可能为密码的数据,如果是,说明存在漏洞
6) 用户的密码一般通过用户邮箱或者手机短信的方式来通知用户,如果在返回的Web页面直接显示明文口令,则说明存在漏洞。
7) 输入用户名后,如果给默认绑定手机、邮箱发送短信/邮件,在发送报文中修改的手机号、邮箱地址,新修改的手机号、邮箱仍然能收到系统发送的信息,说明存在漏洞。
6、密码找回用户凭证暴力破解 - 有些网站输入需要找回的账号后,会采用OCP(动态口令)产生验证码,如果验证码是4位纯数字,则有可能存在被暴力猜解漏洞。
7、弱token带来的任意重置 - 目前很多网站在找回密码功能时,会随机产生一些token用于区分不同用户,如果token规律性太强,则有可能导致任意重置漏洞。
8、找回密码本地验证 - 如果修改密码功能存在着缺陷,攻击者可以通过抓包拦截,修改一些指定字段信息即可完成任意用户帐户重置。
1) 使用找回密码功能,输入指定要找回密码的帐户,第三次测试用官方帐号“test”为例,使用抓包工具抓包
9、密码修改测试 - 如果修改密码功能存在着缺陷,攻击者可以通过此其缺陷修改其他用户的密码。
4) 填写并提交修改密码数据,并以Burpsuite拦截修改密码请求,观察新旧密码是否通过同一个HTTP请求提交到服务器,如果不是则存在漏洞;
5) 观察是否客户端是否提交用户名或用户ID,如果是则修改为其他用户名或用户ID,看看是否能够成功修改其他用户的密码,如果可以则存在漏洞。
