XSS 漏洞知解 123
跨站脚本攻击(Cross-Site Scripting),为了避免与 CSS 混淆,一般简称为 XSS。XSS 作为一种典型的主要可以分为 3 种: 反射型 XSS 存储型 XSS DOM 型 XSS 关于这 3 种 XSS 类型的区别,在这就不展开了,本文主要讲解 XSS 漏洞的利用场景以及如何测试反射型 XSS,当然反射型 XSS 漏洞的测试和其它 XSS 漏洞类型的测试存在很多共同之处的。通常来说,通过 XSS 漏洞攻击者可以在受害者机器上执行任何脚本的话,包括: 可以执行受害者可以执行的任何操作 可以浏览受害者可以浏览的任何内容 可以修改受害者可以修改的任何信息 可以通过最初的受害者与应用中其他用户交互,从而发起对其他用户的攻击 不过值得注意的是,反射型 XSS 总漏洞利用过程中也会遇到较多的障碍,经常可能会遇到很多限制: cookie 设置为 httponly,无法通过 JS 直接操控 cookie 用户输入的内容被进行过滤或者编码 受害者可能并没有登录应用,或者应用用户会话与特定的因素有绑定关系,比如 IP 地址或者 MAC 地址,这种情况比较少见 典型利用场景 XSS 的利用场景其实是五花八门的,可以说只要你敢想,搞不好你就可以做得到。这里,我们可以选择两个最典型的利用场景进行讲解。在这里我主要使用 PortSwigger 的应用安全学院里面的 lab 进行讲解。 盗取 cookie 通过 XSS 漏洞盗取 cookie 可以说是最典型的利用场景了。不过现在随着 HttpOnly 的广泛应用,这一利用场景也产生了一些限制。但是 HttpOnly 也并不能完全保证 XSS 漏洞的防范,因为 HttpOnly 理论上应该覆盖所有的敏感 cookie,如果有一处没有覆盖到,就有被攻击的可能性。另外一方面,通过结合 CORS 也有突破限制的可能性。还有一个实际情况是,仍然有很多应用并没有使用 HttpOnly,本节也主要是针对这一情形的具体利用。