前言
目前国内各大SRC平台或第三方漏洞奖励平台与漏洞发现者之间或多或少发生过如下情况
- 业务、价值的理解程度不同导致漏洞定级存在争议
- 赏金分配不合理产生多起范围较广的扯皮事件
- 各种"内部已知"且无具体反馈
- 花费时间与回报不成正比
- 等等
类似如上原因也导致很多安全研究员纷纷转至国外平台
Bugcrowd简介
目前全球4大漏洞赏金平台分别为Hackerone
、Bugcrowd
、intigriti
、Yeswehack
常见的漏洞奖励和分级,此处为下方漏洞厂商
其他厂商赏金范围
本次就简单说明如何在Bugcrowd
批量发现的漏洞案例,具体的批量大法文末可见
案例说明
这里以较为冷门且简单的DOM XSS
为例
预输入下基于DOM的存储XSS
此处存在预输入的功能
当你输入任意内容时,比如bug
字符,将会自动进行联想搜索并将更多关联内容进行展示
首先通过浏览器查看资源文件
可以看到名称位typeahead
的js文件,而·typeahead
的定为即为预输入,所以重点关注typeahead
文件即可
通过文件内容查看是否存在DOM XSS
点击JS文件,并通过左下角点的{}
按钮将代码进行格式化处理
发现此处js使用到react
,通过谷歌搜索react xss
, 发现如下文章
https://www.stackhawk.com/blog/react-xss-guide-examples-and-prevention/
文章提到dangerouslySetInnerHTML
为危险的功能
直接在js中里面搜索dangerouslySetInnerHTML
,可以发现name
以危险的方式直接输出到页面
继续搜索buildItem
函数,需要确定具体被调用的位置
最后发现它是在fetchTypeaheadData
里面被buildItemList
函数调用
而fetchTypeaheadData
实际上是向某个API发起了请求,将请求到的数据填充到页面
所以只要我们将payload
与name
进行结合在一起即可,最后搜索一下bugc
即可显示最后效果
因预输入的原因,网站会将用户输入的东西进行联想并输出到页面,其中包括了名字,而某些的名字带有XSS荷载,正好
是用dangerouslySetInnerHTML
这种方式输出的,没有经过转义,所以XSS荷载直接被输出到了页面
功能繁多导致DOM XSS
该页面会展示最近去过哪些地方的功能
查看源码,找到Attractions
按钮对应的DOM元素
搜索onTabClick
找到函数的具体实现未知
注意innerHTML
的值没有经过转义,直接就输出到页面
整个代码的逻辑也非常简单,查看浏览器有没有缓存,有的话将浏览器的值输出到页面,没有向/RecentlyViewed
路径发起请求,查看最近去过的旅游景点,然后将内容没有经过转义直接输出到页面
所以需要先创建名字带XSS荷载的旅游景点,访问并点击Attractions
按钮,即可触发
实力推荐
此处几个案例也都是Bugcrowd上Top大佬批量大法技巧中的一个小点,在这里进行推荐
大佬也创建了自己的星球,里面干货满满,每周都可以学习到不少刷美金技巧和实战案例
目前只是运营初期且初步开放邀请,日后的价格只有涨不会跌!现在入股不亏,后续会考虑将星球设置成终身制
让进入的所有用户永久学习,机不可失失不再来!
部分奖励
SQL注入
基于DOM的存储xss
反射型 XSS
源码泄露
重定向
信息泄露
账户接管
趣味审核
国外的审核很会夸人,说话又好听,忍不住想每天多提交几个P1。快快通过下方的邀请方式加入进来,一起浪起来吧
中文