0x01、Broken Auth - CAPTCHA Bypassing
Low
验证码绕过,本题验证码没有时间限制,所以提交一次验证码后,可以暴力破解用户名和密码了
Medium&High
方法如上,依然可以暴力破解。
所以及时销毁验证码的有效性是很必要的。
0x02、Broken Auth. - Forgotten Function
Low
在源码中使用了mysqli_real_escape_string()
函数,进行了防sql注入验证;
且验证了输入是否为email格式:
只能通过暴力破解邮箱了,挂上你的字典试试看吧
邮箱正确了,会提示你的安全问题,也不会直接显示密码。
Medium
通过源码得知,在中级难度时,安全问题会发送邮箱。
也就是我们平时经常遇到的: 忘记密码需要更改时, 要通过发送修改密码的邮件到绑定的邮箱来修改。
High
会将sha1
的随机哈希值发送到邮箱,通过安全问题找回页面重置安全问题
0x03、Broken Auth. - Insecure Login Forms
Low
查看网页源代码, 发现敏感(用户)信息泄露:
Medium
查看网页源代码, 同样发现了用户名的泄露; 通过发现unlock按钮的事件:
继续在网页源代码中找到 unlock_secret()函数:
将关键解密代码复制到浏览器控制台执行, 得到密码:
High
没什么解法了,只剩下 bee
/bug
了:
0x04、Broken Auth. - Logout Management
这个通过源码可以发现,Low/Medium/High三个级别的区别:
switch($_COOKIE["security_level"])
{
case "0" :
// Do nothing
break;
case "1" :
// Destroys the session
session_destroy();
break;
case "2" :
// Unsets all of the session variables
$_SESSION = array();
// Destroys the session
session_destroy();
break;
default :
// Do nothing
break;
}
Low
退出登录时,session
没有销毁,可以账号依然有效:
Medium
退出登录时,session
已经销毁,需重新登录
High
退出登录时,session
先被清空,然后销毁,需要重新登录
0x05、Broken Auth. - Password Attacks
Low
用burpsuite或者hydra爆破即可
Medium
增加了一个随机salt值来验证, 类似与token的作用。
这里用burpsuite演示:
1. 先选取爆破参数 password 和salt:
2. 从相应的页面中获取salt值:
3. 将redirection设为always:
4. 添加密码字典:
5. 将salt设置好, 并且给第一次访问的salt赋值 (不然开始就被不合法验证了, 无法开始):
6. 由于设置了sale, 是一对一的验证, 只有获取上一个请求返回的salt值才能,做下一次请求, 因此只能单线程, 在option中设置线程为1:
7. start attack, 长度不同的那个即为正确密码:
High
加了图片验证码, 也是我们现实中经常遇到的:
0x06、Broken Auth. - Weak Passwords
弱口令,没啥说的,挂字典吧。
Low
test / test
Medium
test / test123
High
test / Test123
0x07、Session Mgmt. - Administrative Portals
Low
admin参数控制页面, 直接修改即可:
Medium
同样, 只不过控制的admin参数在cookie中:
High
需要修改session
中的admin
值为1,
或者直接用管理员账号bee
/bug
登录也可以。
0x08、Session Mgmt. - Cookies (HTTPOnly)
Low
观察源码, Cookies中httponly
字段设置为false:
-
setcookie(name,value,expire,path,domain,secure)
参数 | 描述 |
---|---|
name | 必需。规定 cookie 的名称。 |
value | 必需。规定 cookie 的值。 |
expire | 可选。规定 cookie 的有效期。 |
path | 可选。规定 cookie 的服务器路径。 |
domain | 可选。规定 cookie 的域名。 |
secure | 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 |
点击 Click Here ,本地JS脚本可以直接访问到top_security
这个变量值:
Medium
Cookies中httponly
字段设置为true:
点击Click Here,本地JS脚本无法访问top_security
变量值了:
High
Cookies中httponly
字段设置为ture
,同时缩短了cookies
的生存时间
与中级难度的区别在于,调整了Cookie的生存时间,仅有300秒(5分钟):
0x09、Session Mgmt. - Session ID in URL
三个等级的难度都一样, Session ID 暴露在URL中:
Session ID 永远不要暴露在URL中。
0x0A、Session Mgmt. - Strong Sessions
本题主要是通过观察top_security_nossl
和top_security_ssl
的情况,
来了解Session
的安全存储
Low
没有任何安全可言
Medium
可以观察到
top_security_nossl
的值是使用了HASH
处理
High
在非SSL情况下,看不到
top_security_ssl
的值
改用HTTPS
后,可以观察到top_security_nossl
值