XSS 有多危险?

信息安全 Web应用程序 xss 脆弱性
2021-09-05 17:39:32

我是一名软件工程师,并且一直在观看很多关于 XSS 的视频。

但是我不明白如果它在客户端运行并且不在包含数据库和许多重要文件的服务器端执行,它是多么危险。

4个回答

如果存在 XSS 漏洞,以下是攻击者可以做的事情。

  • 广告劫持- 如果您设法在网站上存储 XSS,只需将您的广告注入其中即可赚钱;)
  • Click-Jacking - 您可以在页面上创建隐藏的覆盖,以劫持受害者的​​点击以执行恶意操作。
  • 会话劫持- 如果 cookie 中不存在 HTTP ONLY 标志,则 JavaScript 可以访问 HTTP cookie。

  • 内容欺骗- JavaScript 可以完全访问 Web 应用程序的客户端代码,因此您可以使用它来显示/修改所需的内容。

  • 凭证收集- 最有趣的部分。您可以使用精美的弹出窗口来获取凭据。WiFi 固件已更新,请重新输入您的凭据以进行身份​​验证。

  • 强制下载- 所以受害者没有从 absolute-safe.com 下载您的恶意 Flash 播放器?不用担心,尝试从受害者正在访问的受信任网站强制下载会更有运气。

  • Crypto Mining - 是的,您可以使用受害者的 CPU 为您挖掘一些比特币!

  • 绕过 CSRF 保护 - 您可以使用 JavaScript 发出 POST 请求,您可以使用 JavaScript 收集和提交 CSRF 令牌,您还需要什么?

  • 键盘记录- 你知道这是什么。

  • 录制音频- 它需要用户授权,但您可以访问受害者的麦克风。感谢 HTML5 和 JavaScript。

  • 拍照- 它需要用户授权,但您可以访问受害者的网络摄像头。感谢 HTML5 和 JavaScript。

  • 地理位置- 它需要用户授权,但您可以访问受害者的地理位置。感谢 HTML5 和 JavaScript。与带 GPS 的设备配合使用效果更好。

  • 窃取 HTML5 网络存储数据- HTML5 引入了一项新功能,即网络存储。现在网站可以在浏览器中存储数据以供以后使用,当然,JavaScript 可以通过 window.localStorage() 和 window.webStorage() Browser & System 访问该存储

  • 指纹识别- JavaScript 让查找浏览器名称、版本、安装的插件及其版本、操作系统、架构、系统时间、语言和屏幕分辨率变得轻而易举。

  • 网络扫描- 受害者的浏览器可能被滥用以使用 JavaScript 扫描端口和主机。

  • 崩溃的浏览器- 是的!你可以用……东西淹没浏览器来崩溃浏览器。

  • 窃取信息- 从网页中获取信息并将其发送到您的服务器。简单的!

  • 重定向- 您可以使用 javascript 将用户重定向到您选择的网页。

  • Tabnapping - 只是一个花哨的重定向版本。例如,如果超过一分钟没有收到键盘或鼠标事件,这可能意味着用户是 afk,您可以偷偷地将当前网页替换为假网页。

  • 屏 - 再次感谢 HTML5,现在您可以截取网页截图。盲目的 XSS 检测工具在它很酷之前就已经这样做了。

  • 执行操作- 您正在控制浏览器,

也许一个现实生活中的例子将有助于理解一个看似很小的安全漏洞,如 XSS,是多么危险。

作为安全评估的一部分,我公司的任务是尝试访问 CEO 的个人电子邮件。我设法通过一些 OSint 获得了它的个人电子邮件地址,现在人们可以使用许多信息窃取恶意软件之一的自定义版本进行鱼叉式网络钓鱼,但我将信息收集阶段延长了一点。

事实证明,这位 CEO 喜欢船只,并且正在一家船只销售网站上出售他们的一艘。该网站似乎很业余,我注册并愚弄了一下。我发现了什么?该站点允许您管理您的密码,并在密码字段中预先填写当前密码,受此启发,我对该站点进行了更多调查。我遇到了一个存储的 XSS 漏洞:当你回答一个提议时,你可以在其中放置任意 HTML 代码,包括脚本,它将在阅读器浏览器中执行!

看起来很“无害”,不是吗?如果将它与密码管理不善结合起来怎么办?

所以我制作了一个脚本来获取密码页面(这是一个域内请求,满足 SOP),提取密码和客户端信息(UA、OS 等)并将其发送给我的 C&C。然后仔细地写了一封电子邮件,告知他们我的“购买意向”,从而向 CEO 灌输了一种冲动。

一天后,我收到了他们用来登录船只网站的密码。正如预期的那样,它与他们的电子邮件使用的密码相同(没有 2FA,我不记得这是否是一件事)并且我能够访问网络邮件(客户端信息用于模拟合法访问,以防有必要保持低调)。

长话短说,攻击不是一个简单的步骤,它是由小的征服组成的。如果你给你的对手一步的空间,你永远不会知道他们能从那里做什么。XSS 是攻击者的空间,正如您已经看到的那样。

攻击者控制的代码在客户端的 Web 应用程序的上下文中运行,可以完全控制客户端的操作,还可以读取 HTML 页面的 DOM 等。

这意味着它既可以窃取此页面内的秘密(密码等),也可以在登录客户端时执行操作(例如购买东西、在邮件客户端中发送炸弹威胁等)。请注意,这种活动通常可以对客户隐藏,因此他/她不会意识到他/她当前受到攻击。

XSS 攻击不会对服务器造成危险。这对您拥有服务器的原因是危险的。不是技术意义上的,而是非常人性化的,因为来自您网站的任何类型的 XSS 攻击通常都会以您的声誉而告终。几个测试用例:

  • 有人从您的网站重定向到虚假登录页面。现在,您的站点上的用户帐户存在潜在的大规模安全漏洞。
  • 有人在您的网站上放置了一个加密矿工。这将使您的访问者的机器加班,并且当被发现时,使您看起来非常贪婪和/或作为系统管理员非常无能。这两个都不是一个好看的。
  • 有人将流量从您的网站重定向到竞争对手。我不应该解释为什么这很糟糕。
  • 有人在其中放置了一些 javascript,使您的网站无法使用,甚至导致浏览器崩溃。同样,应该很明显为什么这是不好的。
  • 有人将 DDOS 代码放入您的站点,以试图关闭您的站点或第三方。如果针对您,应该很明显为什么这是不好的。如果针对其他人并且您的网站被认为是有罪的,如果您不修复您的网站违反合同,您的托管服务提供商可以切断您的联系。
  • 有人用自己的广告替换了您的广告。如果您依赖广告收入,他们就会窃取该收入。
  • 有人用它来窥探你的用户。你好,违反 GDPR。