导语:作为一名安全研究员,一直在挖洞中不断学习,所以我想在这里分享一下我是如何在这么庞大以及安全防护做的很好的一个网站中找到xss漏洞的,同时我还结合了”CSP绕过”这一漏洞进行攻击。
现在就开始讲述发现这一漏洞的过程,首先我对twitter进行了子域名收集,发现了https://careers.twitter.com这一网站,你可以在这一网站上向twitter投简历,找工作,不过我在这个网站寻找漏洞~
在测试了一段时间之后,我想我在URL中的location参数中找到了一个反射型的xss漏洞:
https://careers.twitter.com/en/jobs-search.html?location=1" onmouseover=”alert(1)&q=1&start=70&team=
但是它并没有弹框,我以为不能使用这一参数对xss进行触发,后来发现这里使用了CSP,如下:
content-security-policy: default-src ‘self’ ; connect-src ‘self’ ; font-src ‘self’ https://*.twimg.com https://*.twitter.com data:; frame-src ‘self’ https://twitter.com https://*.twitter.com [REDACTED] https://*.twitter.com; report-uri https://twitter.com/i/csp_report
CSP阻止了弹框的进行,所以很不幸,我需要在CSP这一方面下下工夫。然后我询问了XSS方面的大牛 @brutelogic,跟他说了一下我目前碰到的情况,他告诉我想办法去绕过CSP,然后再进行XSS攻击。
我尝试了很多方法,在将要放弃的时候,我发现了在get请求当中还存在一个比较隐蔽的URL:
https://analytics.twitter.com/tpm?tpm_cb=
这一页面返回头部的Content-type是application/javascript,于是我将tpm_cb参数中写入xss代码,他会在页面上显示:
真的是太幸运了,然后我就将这两个漏洞结合起来,xss就进行执行了,所以我构造了如下的payload:
https://careers.twitter.com/en/jobs-search.html?location=1"><script src=//analytics.twitter.com/tpm?tpm_cb=alert(document.domain)>//
可以看到,已经弹框了~
在发现漏洞之后,立刻将漏洞提交到了hackerone,很快对我提交的漏洞进行分类和奖励,同时twitter团队也很快修复了xss漏洞,不过CSP绕过漏洞花的时间略长,但是到最后双方都很满意。感谢twitter安全团队以及hackerone社区。