认证缺陷(Authentication Flaws)
主题:
一、密码强度
密码是账户安全的保障。很多用户在各个网站上使用同样的弱密码。若想应用程序不被攻击者暴力破解,应设置一个强度较高的密码。好的密码应包含
小写字母、大写字母、数字和特殊字符,并使密码长度最少要大于八位。当然密码越长,效果越好。尽量在不同的网站使用不同的密码。
小写字母、大写字母、数字和特殊字符,并使密码长度最少要大于八位。当然密码越长,效果越好。尽量在不同的网站使用不同的密码。
二、找回密码
课程上的描述是Web程序在做为用户找回密码的功能时,验证身份的信息过于简单。导致攻击者在获得用户名的情况下,可以通过一些简单方法,得到
用户密码。所谓的简单方法即是暴力破解,这时就需要一个好的密码字典(包含各种弱密码:admin123、12345678、administrator 等等)。
下面是来自乌云网的找回密码功能可能存在缺陷的例子,在做测试的时候可用来参考设计案例。
1、 密码找回时,验证身份的信息太简单,导致可直接暴力破解。
2、 密码找回凭证可以在客户端获取(通过web代理,抓包获得)。
3、 密码找回凭证在找回页面中可以获取(源代码)。
4、 密码找回凭证生成逻辑简单,可以直接猜出来。
5、 密码找回凭证并非只对应单个用户(使用一个凭证可以重置任意用户的密码)。
6、 找回密码绑定的邮箱、手机号被修改。
7、 提交修改密码处的逻辑错误。
补充:
1、 可以找到绕过验证的步骤,直接修改密码并提交。
2、 找回密码时没有在服务器端验证用户名与邮箱是否匹配便发送了验证码。
3、 重置密码时返回的token没有与账号以及验证码绑定。
4、 服务器只验证对应的验证信息是否存在,没有验证是否与账号匹配。
5、 在本地验证服务器的返回信息,确定是否执行重置密码,但是其返回信息是可控的内容,或者可以得到的内容。
6、 发送短信等验证信息的动作在本地进行,可以通过修改返回包进行控制。
7、 提交新密码时的,只验证了部分可控的信息是否匹配。
8、 在找回密码处存在注入漏洞。
修复方案:找回密码凭证够复杂并且不可猜测,任何动作放在服务器端进行,传输的验证参数做好加密,同时对参数做好过滤。
用户密码。所谓的简单方法即是暴力破解,这时就需要一个好的密码字典(包含各种弱密码:admin123、12345678、administrator 等等)。
下面是来自乌云网的找回密码功能可能存在缺陷的例子,在做测试的时候可用来参考设计案例。
1、 密码找回时,验证身份的信息太简单,导致可直接暴力破解。
2、 密码找回凭证可以在客户端获取(通过web代理,抓包获得)。
3、 密码找回凭证在找回页面中可以获取(源代码)。
4、 密码找回凭证生成逻辑简单,可以直接猜出来。
5、 密码找回凭证并非只对应单个用户(使用一个凭证可以重置任意用户的密码)。
6、 找回密码绑定的邮箱、手机号被修改。
7、 提交修改密码处的逻辑错误。
补充:
1、 可以找到绕过验证的步骤,直接修改密码并提交。
2、 找回密码时没有在服务器端验证用户名与邮箱是否匹配便发送了验证码。
3、 重置密码时返回的token没有与账号以及验证码绑定。
4、 服务器只验证对应的验证信息是否存在,没有验证是否与账号匹配。
5、 在本地验证服务器的返回信息,确定是否执行重置密码,但是其返回信息是可控的内容,或者可以得到的内容。
6、 发送短信等验证信息的动作在本地进行,可以通过修改返回包进行控制。
7、 提交新密码时的,只验证了部分可控的信息是否匹配。
8、 在找回密码处存在注入漏洞。
修复方案:找回密码凭证够复杂并且不可猜测,任何动作放在服务器端进行,传输的验证参数做好加密,同时对参数做好过滤。
三、基本认证
基本身份验证通常用来保护服务端的资源。Web服务器将发送401认证请求与所请求的资源响应。客户端浏览器会提示用户在浏览器提供的对话框中输入
用户名和密码。浏览器将用户名和密码使用Base64编码方式进行编码,并将这些凭据(编码后的字符串)发送给Web服务器。Web服务器会验证这些凭据,
如果所提供的凭据正确,则返回所请求的资源。这些凭据会自动重置每一个使用这一机制的被保护的页面,而不需要用户再次输入这些凭据。而服务器与浏览器
之间是通过使用cookie传递、保持认证信息的,可使用代理工具拦截请求并查看cookie。后面会通过一些实验说明 B/S、C/S的一些程序是如何完成登录等基本
认证的。
用户名和密码。浏览器将用户名和密码使用Base64编码方式进行编码,并将这些凭据(编码后的字符串)发送给Web服务器。Web服务器会验证这些凭据,
如果所提供的凭据正确,则返回所请求的资源。这些凭据会自动重置每一个使用这一机制的被保护的页面,而不需要用户再次输入这些凭据。而服务器与浏览器
之间是通过使用cookie传递、保持认证信息的,可使用代理工具拦截请求并查看cookie。后面会通过一些实验说明 B/S、C/S的一些程序是如何完成登录等基本
认证的。
课程中的练习也是通过截获浏览器发送的请求来完成的。
四、多级登录
多级登录也就是纵深防御。
课程提出的内容:用过的验证码往往可以被再次使用。用过的验证码配合WebScarab工具截获并修改请求(隐藏域)来完成验证码欺骗、盗取用户密码等。
补充:
《验证码安全问题汇总》:http://drops.wooyun.org/web/5459
参考:《WEB安全测试》、《WebGoat v2.2技术文档》、《OWASP Testing Guide v3.0》
《密码找回功能可能存在的问题》:http://drops.wooyun.org/papers/287
《密码找回功能可能存在的问题(补充)》:http://drops.wooyun.org/web/3295
《一些常见的重置密码漏洞分析整理》:http://drops.wooyun.org/papers/2035
注:
第二部分 找回密码 参考WooYun知识库的文章。
第二部分 找回密码 参考WooYun知识库的文章。