声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
背景介绍:
今天的故事来自Abhijeet Biswas的白帽小哥。他是一名安全研究员,并且在一直在学习和练习有关Web应用程序安全漏洞和漏洞赏金的知识,这也是他的第一篇文章分享。
什么是XSS?
跨站点脚本(也称为XSS)是一个Web安全漏洞,使得攻击者能够与易受攻击的应用程序交互从而危害用户,跨站点脚本漏洞通常允许攻击者伪装成受害者用户,执行用户能够执行的任何操作,并访问用户的任何数据。如果受害用户拥有应用程序内的特权访问权限,则攻击者可完全控制应用程序的所有功能和数据。
XSS如何工作?
跨站点脚本的工作原理是操纵易受攻击网站的源代码/存储系统,使其向用户返回恶意的JavaScript,当恶意代码在受害者的浏览器内执行时,攻击者可以通过窃取会话Cookie、用户凭证、令牌(tokens)等来完全危害他们与应用程序的交互。
XSS Payloads :
<script>alert(“Hacked_by_Oblivion”)</script>
<img src/onerror=prompt(document.cookie)>
什么是X-Forwarded-Host header?
HTTP X-Forwarded-Host header是请求类型标头,事实上是标准标头,此标头用于标识客户端发出的原始请求,因为当时反向代理中的主机名和端口不同,这个标头标识了原始请求。此标头还用于调试,创建基于位置的内容,因此此标头保留了客户端的隐私,此标头的根版本是HTTP Forwarded。
LET’S ATTACK!
白帽小哥发现https://www.omise.co/网站,在 Intercept 中捕获请求并将请求发送到 Repeater,并添加了 X-Forwarded-Host: bing.com,同时检查bing.com是否反映在响应包中。
正如上图所看到的,它反映在了登录按钮中,于是白帽小哥决定在X-Forwarded-Host: bing.com下面增加一个XSS Payload:
X-Forwarded-Host: bing.com”><img src/onerror=prompt(document.cookie)>
然后检查XSS是否成功执行。
正如上图中所看到的,XSS Payload同样反映在了登录按钮上。
然后将这个请求发送到浏览器,BOOM!JavaScript警告框显示了Cookie信息,如下图所示:
影响:
该漏洞允许攻击者将恶意的JavaScript传递给毫无防备的用户,用户的浏览器没有办法知道脚本是否应该信任,于是脚本成功执行,恶意脚本可以访问任何Cookie、会话令牌(Tokens),甚至可以重写HTML页面内容。
该漏洞的报告链接:https://hackerone.com/reports/1392935
白帽小哥也因此收获了第一笔漏洞赏金$200。
====正文结束====
原文始发于微信公众号(骨哥说事):【白帽故事】基于X-Forwarded-Host header的XSS