身份认证安全测试设计要注意什么?

时间:2022-02-15     来源:易思训教育 作者:易思训
分享: 更多

今天易思训(www.yisixun.com)小编要跟大家分享的文章是身份认证安全测试设计要注意什么

 

1. 当用户访问受限资源或请求需要鉴权的操作时,必须先对提出该操作请求的用户成功地进行认证(引入阶段:设计)

 

检查应用程序是否提供认证机制(例如:用户名/口令认证、密钥认证、证书认证、智能卡认证、USB Key认证、动态口令认证、生物特征认证、IP认证等)来保护受限访问的资源。最典型的认证措施就是:提供登录界面/页面,需要访问者输入用户名、口令[、验证码],身份认证通过后,才能访问系统的受限资源。

 

 

2. 身份认证必须在服务端进行(引入阶段:设计和开发)

 

1)对于C/S软件系统的用户最终认证处理过程放到服务端进行。此处“客户端/服务端”软件系统是相对于单机版软件系统而言的。不允许以客户端验证的结果作为用户最终认证结果,必须在服务端进行最终的认证处理(如果采用集中认证,那么对用户的最终认证就是放在集中认证服务端进行)。

2B/S 应用中,对用户的最终认证处理过程不允许仅仅通过脚本或其他形式在客户端进行验证,必须在应用服务器进行最终认证处理(如果采用集中认证,那么对用户的最终认证就是放在集中认证服务器进行)。

 

tips:设计思路如下:

 

○在未连接服务器端的情况下是否能认证成功;

○ 在客户端提交正确的账号口令,但是拦截不发送到服务器端,是否能认证成功;

○ 分析整个认证过程,在客户端提交正确账号口令,但是拦截后发送错误的账号口令到服务器端,但模拟服务器回复正确的登录请求给客户端,观察客户端功能是否开启

○ 分析整个认证过程,只发送最后一步消息提交到服务器端,观察认证是否通过

○ 分析整个认证过程,观察是否有可利用之处 (好吧,这句纯粹为了凑字数...请大家帮忙补充^_^

3)服务器端的认证不能被客户端关闭

 

tips:用burpsuite截取到的码流如果存在的非用户名口令验证码以外的字段:无论删除或是修改这些字段都不会影响服务器认证

 

3. 认证失败不能提示详细错误原因(操作员帐号、最终用户帐号都要检查)

 

tips:可以提示:“用户名或者口令错误,登录失败”;不能提示:“用户名不存在”、“口令错误”等等。

 

4. 为了防止暴力破解,必须使用验证码;且验证码是随用户名、密码同时提交到服务器端进行校验。

 

tips:或者多次登录失败后,必须提供验证码。说明:要参照下文的“锁定策略”,验证码和锁定策略都没有的情况才会成为安全问题。这里容易漏测的地方是控制台。如果该系统的控制台有必要启用,则必须满足本文提到的所有安全策略。

 

5. 验证码的机器识别率必须低于5%(现在网上有许多开源的验证码识别工具,可以尝试一下)

 

6. 3次登录/认证失败后使用验证码时,原认证表单失效

 

tips:此测试点仅针对"多次登录失败后,才提供验证码"场景

1、启动burpsuite,并配置getpost请求的拦截;

2、访问登录/认证界面,输入正确的帐号错误的密码提交;

3、将WebScarab/burpsuite_v1.4.01拦截的表单内容记录下来,并点击“Accept Changes”放通(此时拦截信息不包含验证码);

4、错误访问三次之后,登录/认证界面弹出验证码;

5、使用WebScarab/burpsuite_v1.4.01拦截,并将内容替换成步骤3中记录下来的表单内容,修改错误的密码为正确的密码,点击“Accept Changes

备注:本用例属于产品必须根据实际情况定制的用例,用例设计思路如下:

1、继续使用原来不带验证码的消息;

2、客户端清空错误次数;

3、绕过业务处理错误次数的客户端参数(如部分产品根据sessionip等记录错误提交次数,可以通过设置sessionip为变量绕过这一判断)

4、拦截次数刷新请求(如部分产品通过客户端提交单独的错误次数,或者错误次数达到了由客户端提交申请旧登录请求失败/新登录请求生效的消息)

 

7. 验证码模块生成的随机数不能在客户端的静态页面中的网页源代码里出现(引入阶段:开发)

 

验证码模块生成的随机数不能在客户端的静态页面中的网页源代码里出现。在客户端网页上点击鼠标右键、选择“查看源文件”时,必须看不到验证码模块生成的随机数。

 

8. 验证码内容不能与客户端提交信息相关联

 

验证码内容不能与客户端提交的任何信息相关联。在使用验证码生成模块时不允许接收来自客户端的任何参数,例如:禁止通过getcode.jsp?code=1234 URL 请求,将 1234 作为验证码随机数。

9. 验证码字符串要求是随机生成(对于 java 语言可以使用类 java.security.SecureRandom 来生成安全的随机数。)

 

10. 验证码在一次使用后立即失效

 

11. 验证码检验通过后才进行用户名和密码的检验

 

tips

 

1、访问所有带有验证码的登录页面;

2、开启WebScarab,配置对GETPOSTPUT请求及响应进行拦截(即同时勾选“intercept requests”和“intercept respones);并在浏览器中配置代理服务器IP127.0.0.1,端口为8008

3、填入错误的用户名和口令,填入错误的验证码,提交表单;

4、查看系统响应消息及返回的提示信息。

 

以上就是小编今天为大家分享的身份认证安全测试设计要注意什么的文章,希望本篇文章能够对正在或想要学习安全测试的小伙伴们有所帮助,想要了解更多关于安全测试的教程,记得关注易思训教育IT培训官网(www.yisixun.com),希望同学们学习顺利。

 

IT培训选易思训教育培训机构,易思训IT培训课程是易思训品牌课程,易思训培训汇集IT培训讲师,IT就到易思训教育!了解详情请登陆易思训教育培训官网(www.yisixun.com)!


相关文章

今日优惠
免费试听教程