feng xiaohan

XSS

Cross-site scripting。跨站脚本攻击,利于 Web 网络安全的漏洞,注入恶意的 js 脚本进行攻击。一般分为三种:

XSS 类型

反射型 XSS

攻击者必须以某种方式诱导用户访问一个精心设计的 URL(恶意链接),该连接中可能包含一个 script 标签,攻击者通过注入 js 来实施攻击,获取用户数据等。

特性

  • 即时性。不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据;

存储型 XSS

存储型(HTML 注入型/持久型)最严重的 XSS 攻击。将 js 脚本直接注入到数据库中,使得需要查看数据的用户都会被遭受攻击。主要发生在社区的评论区,留言板,HTML 电子邮件等,通过写入 script 标签,注入 js 脚本来实施攻击,如果前端和后端都没有进行 js 的过滤,该代码就会被注入进数据库中。

DOM 型 XSS

主要是利用 JS 和 HTML 的交互性质以及 DOM 对象实现的。客户端的脚本程序可以动态地检查和修改页面内容,而不依赖于服务器端的数据。
如果用户在客户端输入的数据包含了恶意的 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,就会遭到攻击,如:

  • loaction
  • innerHTML(可以使用 textContent)
  • document.write
  • v-html
  • eval

预防 XSS

  • 输入过滤:在 Web 应用程序中对用户输入的数据进行过滤和校验,确保只接收合法的数据;

    使用 xss 的 npm 包,利用第三方工具来防止 xss 注入。

  • 输出转译:在向 Web 页面中输出用户数据时,对其内容进行适当的编码和转义处理;
  • 设置 CSP(Content Security Policy):通过设置响应报文头中的 CSP 策略,限制页面中可执行的脚本来源、样式表、图像、字体等,以此减少恶意代码执行的可能性。(前后端都可以设置)
    • 前端:meta 标签里设置 http-equiv=”Content-Security-Policy”
    • 后端:设置请求头

      例如机制外部脚本执行,外部资源加载,禁止页面嵌入式 iframe。

XSS 靶场

小练习。https://xssaq.com/yx/level1.php

XSS 漏洞扫描工具

  • wvs
  • 椰树
  • safe3
  • Xelenium
  • w3af – Kali
  • vega – Kali
  • burp
  • Kail 操作系统