用于窃取 cookie 的 XSS ......不再了吗?

信息安全 Web应用程序 xss 饼干
2021-08-23 23:09:17

前几天我在一个朋友告诉我 Pentest 的网站中发现了一个 XSS 漏洞。这是他管理的一所学校的页面,所以这里重要的是登录凭据 == COOKIES。

在这个测试中,我发现 cookie 是 HTTP Only,所以我测试了一个alert(document.cookie) = 警报是空白的。

我知道 cookieuserSession和值是,019845547但我无法通过 XSS 或 JavaScript 注入获得它。我通过 Google Chrome 中的开发者工具知道了这些信息。

我读到出于安全原因,JavaScript 无法访问仅 HTTP cookie,这很棒!

但这是否意味着 XSS 不再用于窃取 cookie?

或者也许我对新的安全内容已经过时了?还是有另一种窃取 HTTP Only cookie 的技术?

4个回答

好吧,服务器必须在 cookie 上设置此标志,如果没有,客户端脚本(例如 XSS 样式攻击中的 javascript 片段)可以访问 cookie 内容。此外,您可能想查看XST(跨站点跟踪),我相信它可以绕过此标志并允许在某些情况下窃取 cookie。从它的wiki页面:

将 cookie 标记为 HttpOnly 会禁止 JavaScript 访问它,从而防止它被发送给第三方。但是,即使在这种情况下,也可以使用 TRACE 方法绕过此保护并访问 cookie。现代浏览器现在阻止通过 JavaScript 发出 TRACE 请求,但是,已经发现了使用浏览器发送 TRACE 请求的其他方式,例如使用 Java。

更多信息请访问: https ://www.owasp.org/index.php/Cross_Site_Tracing

希望这可以帮助。

但这是否意味着 XSS 不再用于窃取 cookie?

简而言之,不,当设置此标志时,XSS 不会用于窃取 cookie。

更长的答案是现代浏览器支持HttpOnlycookie 上标志。当服务器向Set-Cookie浏览器发送标头以防止document.cookie获取 cookie 的内容时,可以设置此标志这是针对更大的 XSS 问题的一种缓解技术。据我所知,使用最新的浏览器和当前版本的 Flash、Java 和其他插件,没有办法绕过这个标志。

但是,因为您有 XSS,所以还有其他方法可以在不访问 cookie 的情况下访问凭据。

如果正确实施,HttpOnly 可以防止攻击者窃取 cookie。

但是,在某些浏览器和 Web 服务器的某些版本中可以绕过 HttpOnly 功能。

看一看:

https://lwn.net/Articles/646891/

https://www.youtube.com/watch?v=jrKOdWPZtAg

https://bugzilla.redhat.com/show_bug.cgi?id=1222923

所以总而言之,HttpOnly 让攻击者的事情变得更加困难,但并不能阻止有经验的黑客/渗透测试者。

HTTP Only标志在服务器端设置为 true 时,就没有其他方法可以使用XSS窃取 cookie。在Chrome等现代网络浏览器中,无法使用 xss 查看 cookie,因为默认情况下启用了 xss 过滤器。

如果浏览器上未启用它,那么还有一种方法可以 从名为X-XSS-Protection的服务器端响应标头在浏览器中启用XSS 过滤器,您可以为此标头验证这一点

但这是否意味着 XSS 不再用于窃取 cookie?

启用此标志后,我们无法再使用客户端脚本窃取 cookie。