黑客攻防技术宝典web实战篇笔记2
Update date:
攻击验证机制
密码保密性不强
非常短或者空白密码、以常用的字典词汇或名称为密码、密码和用户名完全相同、仍然使用默认密码
设法查明任何与密码强度有关的规则。
1.浏览该web站点,查找任何描述上述规则的内容
2.如果可以进行自我注册,用不同种类的脆弱密码注册几个用户,了解应用程序采用何种规则。
3.如果拥有一个账户并且可以更改密码,试着吧密码更改为各种脆弱密码。
蛮力攻击登录
1.用控制的某个账户手动提交几个错误的登录尝试,监控接受到的错误消息。
2.如果应用程序再大约10次登录失败后还没有返回任何有关账户锁定的消息,再尝试正确登录。如果登录成功,应用程序可能并未采用任何账户锁定策略。
3.如果账户被锁定,可以尝试重复使用不同的账户。如果应用程序发布任何cookie,这次可以将每个cookie仅用于一次登录尝试,并未随后的每次登录尝试过去新cookie。
4.此外,如果账户被锁定,应查看与提交无效密码相比,提交有效密码是否会导致应用程序的行为出现任何差异。如果确实如此,则可以继续实施密码猜测攻击,即使账户被锁定。
5.如果没有控制任何账户,尝试枚举一个有效的用户名并使用他提交几次错误登录,监控有关账户锁定的错误消息。
6.发动蛮力攻击前,首先确定应用程序响应成功与失败登录之间的行为差异,以此分清他们再自动攻击过程中表现出的区别。
7.列出已枚举出的或常见的用户名列表和常用密码列表。根据所有获得的任何有关密码强度规则的信息对上述列表甲乙修改,以避免进行多余测试。
8.使用这些用户名和密码的各种排列组合,通过适当的工具或定制脚本迅速生成登录请求。监控服务器响应以确定成功的登录尝试。
9.如果一次针对几个用户名,通常最好以广度优先而非深度优先的方式实施这种蛮力攻击。这包括循环使用一组密码并轮流对每个用户名使用每一个密码。这种方法又两方面的好处:首先可以更迅速的确定时候用常用密码的账户;其次,这样做可以降低处罚任何账户锁定防御的可能性,因为再使用同一个账户进行连续登录之间存在时间延迟。
详细的失败消息
1.如果已经知道一个有效的用户名,使用这个用户名和一个错误的密码惊醒一次登录,然后使用一个完全随机的用户名进行另一次登录。
2.记录服务器响应两次登录尝试的每一个细节,包括状态码、任何重定向、屏幕上显示的信息以及任何隐藏再HTML页面中的差异。使用拦截代理服务器保存服务器上回流量的完整历史记录。
3.努力找出服务器响应两次登录尝试的任何明显或细微的差异。
4.如果无法发现任何差异,在应用程序中任何提交用户名的地方重复上述操作。
5.如果发现服务器响应有效和无效用户名之间的差异,收集一个常见用户名列表并使用一个定制脚本或自动工具迅速提交用户名,过滤出说明用户有效的响应。
6.开始枚举操作之前,请确定应用程序是否在登录尝试失败次数达到一定数目后执行账户锁定。如果应用程序执行账户锁定,最好再设计枚举攻击时记住这一点。例如,如果应用程序只能允许登录某个账户时失败3次,可能就会再使用通过自动枚举发现的每个用户名登录时“浪费”一次登录机会。因此,当进行枚举攻击时,不要在每次登录时提交完全不合理的密码,而是提交常见的密码,如password1或以用户名为密码。如果应用程序执行脆弱的密码强度规则,再枚举操作过程中执行的一次登陆尝试就很可能会取得成功,有些情况下还可能同事查明用户名和密码。要以用户名设置密码字段,可以使用BurpIntruder中的“battering ram” 攻击模式,再登录请求的几个位置插入相同的有效载荷。
证书传输易受到攻击
P145
1.进行一次成功登录,监控客户端与服务器之间的所有来回流量
2.确定再来回方向传输证书的每一种情况。
3.如果发现通过URL 查询字符串或者以cookie的方式提交证书,或者服务器向客户端传输证书的任何情况,了解传输的一切细节并设法弄清应用程序开发者这样做的目的。设法查明攻击者干扰应用程序逻辑以获取其他用户证书的各种手段。
4.如果通过非加密渠道传输任何敏感信息,这样做当然容易遭受攻击。
5.如果没有发现证书传输不安全的情况,留意任何明显被编码或模糊处理的数据。如果这些数据中包括敏感数据,其模糊算法可能遭受逆向工程。
6.如果使用HTTPS提交证书,但使用HTTP加载登录表单,那么应用程序就容易遭受中间人攻击,攻击者也可能使用攻击手段获取证书。
密码修改功能
1.确定应用程序中的所有密码修改功能。即使公布的内容中没有明确的密码修改功能链接,应用程序仍然可能实施这种功能。
2.使用无效的用户名、无效的现有密码及不匹配的“新密码”和“确认新密码”值向密码修改功能提交各种请求。
3.设法确定任何可用于用户名枚举或蛮力攻击的行为。
忘记密码功能
P149
“记住我”功能
1.激活所有“记住我”功能,确定应用程序是否完全“记住”用户名和密码,还是仅记住用户名,仍然要求用户再随机的访问中输入密码。如果采用后一种设置,该功能就不大可能存在安全漏洞。
2.仔细检查应用程序设定的所有持续性cookie,以及其他本地存储机制中的持续性数据,如IE的userData、Seilverlight的隔离存储、Flash的本地共享对象。
3.
用户伪装功能
证书确认不完善
非唯一性用户名
可预测的用户名
可预测的初始密码
P156