今天惯例邮箱收到了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,加油!

【10.13】Bug Bounty Write-up 总结的更多相关文章

  1. 【10.14】Bug Bounty Write-up总结

    我很喜欢今天的看到的write-up,因为作者是针对他对一个网站整体进行漏洞挖掘的过程写的,内容包括几个不同的漏洞,从中能够学习到怎样系统性的挖掘漏洞. write-up地址:[Bug bounty ...

  2. Bug Bounty Reference

    https://github.com/ngalongc/bug-bounty-reference/blob/master/README.md#remote-code-execution Bug Bou ...

  3. 黑苹果之DELL台式机安装Mac OS X 10.13.6版本操作系统

    由于本人所在的公司一般都是DELL的品牌台式机,所以以DELL台式机做小白鼠.记得在2012年的时候,在当时的那家公司为了学习自学IOS开发的Objective-C开发语言的时候,由于囊中羞涩买不起m ...

  4. 背水一战 Windows 10 (13) - 绘图: Stroke, Brush

    [源码下载] 背水一战 Windows 10 (13) - 绘图: Stroke, Brush 作者:webabcd 介绍背水一战 Windows 10 之 绘图 Stroke - 笔划 Brush ...

  5. macOs升级到10.13.1Beta || JAVA升级到最新版之后PhpStorm菜单栏问题

    macOs升级到10.13.1Beta || JAVA升级到最新版之后PhpStorm菜单栏会消失,估计不止出现在PhpStorm,一系列jetbrains的产品可能都会有这个问题,包括eclipis ...

  6. 关于MacOS升级10.13系统eclipse菜单灰色无法使用解决方案

    最近,苹果发布了macOS High Sierra,版本为10.13,专门针对mac pro的用户来着,至于好处大家到苹果官网看便是,我就是一个升级新版本系统的受益者,同时也变成了一个受害者:打开ec ...

  7. 解锁 vmware esxi 6.7 并安装 mac os 10.13

    1.安装 esxi 6.7 2.下载 unlocker 2.1.1.zip 3.上传 unlocker 2.1.1.zip esxi的磁盘中 4.开启esxi的ssh登录 5.使用 ssh 登录 es ...

  8. MacOS 10.13.6 下装xcode 流程

    1.最好先安装brew https://github.com/Homebrew/brew/releases 自动安装脚本 /usr/bin/ruby -e "$(curl -fsSL htt ...

  9. 荣耀MagicBook黑苹果(i7)High Sierra 10.13.6

    这里有大佬维护的新版本EFI,对应10.14.4:https://github.com/hjmmc/Honor-Magicbook ---------------------------------- ...

随机推荐

  1. zabbix3.4 修改监控范围

    需求:一段时间内不监控主机的流量(不告警!!!)

  2. ZT 类模板的声明和实现是不能分离的

    http://bbs.csdn.net/topics/380250382 adlay adlay 等级: #9 得分:0 回复于: 2012-03-31 11:19:35 引用 6 楼  的回复: 引 ...

  3. Chrome新发现

    昨晚写代码的时候惊喜的发现Chrome中能直接使用一些ES6的语法: let, const, 箭头函数等已经能直接使用. 酷酷的. 另外我的Chrome版本还是比较旧的,并不需要最新版本.

  4. React Native 基础报错及解决方案记录

    刚开始上手RN,碰到很多坑,记录一下.碰到问题多去看看github上面的issue! 启动命令react-native run-ios报错 1.:xcrun: error: unable to fin ...

  5. jQuery事件处理

    浏览器的事件模型 DOM第0级事件模型 Event实例 他的属性提供了关于当前正被处理的已触发事件的大量信息.这包括一些细节,比如在哪个元素上触发的事件.鼠标事件的坐标以及键盘事件中单击了哪个键. 事 ...

  6. js中css样式兼容各个浏览器写法

    在实际业务中往往需要在js中对dom添加一些样式,还需要对各个浏览器厂商的兼顾,看到一位大神写的一个方法很赞,做一个笔记 function prefixStyle(style){ var eleSty ...

  7. java 控制流

    一:     块作用域 块(即复合语句):是指由一对花括号括起来的若干条简单的java语句.块决定了变量的作用域,一个块可以嵌套在另一个块中,如下: public class print_In { p ...

  8. smtp发送html报告与日志附件图片png

    1.非ssl发送: 授权码机制,开启smtp,获取授权码以qq邮箱为例: 附件展示: #!/usr/bin/python3 import os import smtplib from email.mi ...

  9. Atomic原子操作原理剖析

    前言 绝大部分 Objective-C 程序员使用属性时,都不太关注一个特殊的修饰前缀,一般都无脑的使用其非默认缺省的状态,他就是 atomic. @interface PropertyClass @ ...

  10. pyhton 面向对象之 小明左右手换牌

    '''#左右手交换牌 案列#小明手里有俩张牌,左手红桃♥K,右手黑桃♠A,小明交换俩手的牌后,手里分别是什么? 人类:    属性:小明,左手,右手    行为:展示手里的牌, 交换手里的牌手类:   ...