portswigger_authentication
漏洞产生原因
- 无法充分抵御爆破
- 逻辑缺陷或poor coding(?)
基于密码的认证机制
用户名
- 查找潜在公开的用户名
- profile,可能profile里的名字是用户名
- http报文里的email,可能包含管理员的邮箱,而邮箱可能包含管理员的用户名
- 判断用户名的recognizable pattern
- 尝试 username enumeration
- 检查status code
- 检查 error 信息
- 检查 response times
密码
- 检查密码policy
- 根据policy,用户习惯等准备字典
- 爆破
lab1
官网提供的字典
https://portswigger.net/web-security/authentication/auth-lab-usernames
https://portswigger.net/web-security/authentication/auth-lab-passwords
直接用burpsuite的集群炸弹
但感觉这样太低效,而且可以user enumeration,所以先枚举用户名

用户名acid
接下来爆密码

密码shadow
lab2
有时,在用户名枚举时,存在的用户名确实会得到不同的响应,但若是变化太小,那就很容易错过
而burpsuite有个很好的功能弥补了这一点
在intruder-setting-grep-extract或者intruder-设置-检索-提取
可以添加一个项,选中error信息就能自动在爆破时检查error信息,然后就通过自带的sort发现细微的变化(subtly different response)

所以在渗透测试时,可以将这一步骤加入测试流程
最后密码爆出来是这个
lab3
首先有IP-based爆破保护,用X-forwarded-for就行了
然后就是看接收到响应-响应完成的差,发现有三个可能的username


结果好像都不是
毕竟这个timing也受网络波动的影响,所以要多测几次