【10.13】Bug Bounty Write-up 总结

今天惯例邮箱收到了Twitter的邮件提醒有新的post,这种邮件每天都能收到几封,正好看到一个Bug Bounty的write up,比较感兴趣,看起来也在我的理解范围之内,这里对这篇write up和另一篇一起做一个总结,希望能对自己对于web security的学习和bug bounty的路程有所帮助。

write-up 地址

Add description to Instagram Posts on behalf of other users – 6500$

Making an XSS triggered by CSP bypass on Twitter

Instagram的漏洞

一开始作者Sarmad Hassan (Juba Baghdad)本来想在facebook的页面绕开instagram的验证策略,但是在之后浏览Instgram的官网过程中,发现了Instgram显示的一个新功能IGTV,您可以通过这个功能发布一个竖屏视频,也可以浏览其他人发布的IGTV视频。

在测试这个新功能时,作者发现视频发布后,点击编辑选项并通过butpsuite拦截发出的请求

POST /media/1887820989027383407/edit/

caption=test&publish_mode=igtv&title=test

以上请求中,路径中的1887820989027383407是一个media ID,而作者发现这个ID存在于在Instrgram发布的所有照片、普通视频和IGTV视频中,而你可以在这些照片或视频中添加可选的Description,IGTV的描述就对用于请求中的caption选项。

所以如果把media ID换成其他人发布的内容的ID呢?

首先是怎样找到media ID,作者发现有两种方式

  1. 查看发出内容的网页源码
  2. 点击发出内容的like按钮,并拦截请求

之后的过程就很顺利了,只要其他人发布的内容中并没有添加描述,就可以通过这种方式进行修改。虽然修改media ID之后发出的请求返回了一个带有错误信息的响应,但是对应的其他人发布内容的description已经被改变了。

从这一个漏洞中我可以学到

  1. 经常浏览关注网站的网页,查看是否有新的功能出现,这种新功能往往会存在漏洞
  2. 在存在交互,有上传内容的地方,多拦截请求,查看请求中是否有值得注意的地方

我觉得对于我自己来说,拦截请求这一块是很容易想到的,但更多可能会注意到其中的参数,而不是网址中的那个media ID,而且之后还要由此联想到去修改其他人发布的内容。

Twitter的XSS漏洞

 这个漏洞发现者tbmnull一开始就是在挖掘Twitter的子域名,然后找到了这样一个可能存在xss的网址

https://careers.twitter.com/en/jobs-search.html?location=1" onmouseover=”alert(1)&q=1&start=70&team=

 但是由于存在CSP,阻止了js代码的执行,弹窗无法弹出,所以关键在于怎样绕过CSP。

作者花费了很多功夫找到了一个网址

https://analytics.twitter.com/tpm?tpm_cb=

请求该网址,响应的Content-Type是application/javascript,而且参数tpm_cb会直接反射到页面上

所以作者把这两个发现结合到一起,

https://careers.twitter.com/en/jobs-search.html?location=1"><script src=//analytics.twitter.com/tpm?tpm_cb=alert(document.domain)>//

由于两个网址同源,绕过了CSP对js脚本的限制,最终成功弹窗。

这个漏洞的挖掘思路我个人觉得更符合一般漏洞挖掘的步骤,很多时间和精力+一点点运气,虽然作者在write-up中并没有多提,但是很显然这两个网址的发现是很不容易的。

  1. 从子域名开始的漏洞挖掘方法,是否可以写一个爬虫,对网站的子域名进行总结,以及对各种url进行分析,分离出参数
  2. 提交的请求中,网页中原本无法编辑(只能通过列表选择)的位置,也可以通过拦截请求进行修改
  3. XSS为什么没有发挥作用?是否可以绕过?
  4. 怎样绕过CSP——同源是关键
  5. 漏洞的挖掘需要很耐心和仔细,不要着急

以上,是我今天看的两篇write-up,感觉学习web security还是要多看这种实例,才能对各种漏洞有更清晰的认识和理解,之后希望每天都有时间看一两篇write-up,加油!