title:2018X-NUCA
第一道web题就让人爆炸,瞬间怀疑人生
题目地址:http://106.75.66.211:8000/main/login?next=/main/index
是绕过stata的auth2.0,第三方授权绑定目标用户的漏洞。
个人理解:
攻击者在登陆网站前,进行第三方的授权登陆,一般使用qq,微博进行第三方授权。具体利用:
点金第三方授权按钮,进入授权页面,此过程需要输入你的微博账号密码进行授权,(如果没有先进行注册)。点击授权,会返回我们两个参数的值,code和stata。这相当于我们这个微博账号的授权令牌。受害者用户在登陆自己的账号后,如果点击了带有攻击者的这个令牌的链接,就会造成受害者的账号绑定了攻击者的微博账号,这样攻击者就可以用微博账号进行登陆受害者的用户了。而这一漏洞前提是要受害者点击了伪造的攻击链接和登陆了账号。
网上爆出了很多实例利用方法,主要是利用xss+csrf也就是xsrf进行攻击,受害者在登陆前提下,后台系统会自动浏览xsrf发送的攻击链接,造成第三方授权绑定。
而比赛中的这道题考的就是这个漏洞利用。
我们需要构造带有我们微博授权绑定的令牌的链接,通过post bug 提交构造链接。
我找到了我注册的微博的令牌,但在题目中,提交的链接的长度有限制,只能提交65的字符长度。
后来在复现时,看来大佬们的wp,发现http://106.75.66.211:8000/main/login?next=/main/index,有个next变量可以构造远程主机访问,
在远程主机上构造如下页面:
<html>
<script>window.open('http://106.75.66.211:8000/main/oauth/?state=L3TY0uHc3B&code=nICeZTIif50fgliGcPV3bG64PqpUPNqD3oOyIXgu')</script>
</html>
也就是http://www/xxx/com?next=远程主机ip+构造的文件.html
这样就绕过了短链接的标准
提交后,用绑定的微博账号登陆,登陆到管理员账号,得到flag
百度如何跳转到指定连接
https://blog.csdn.net/u013091013/article/details/53906594
window.open()详解
·<script type="text/javascript">
window.open ('page.html');
</script>
php header()详解::
<html>
<?php
// 结果出错
// 在调用 header() 之前已存在输出
header('Location: http://www.example.com/');
?>