我目前正在研究 session 固定技术并阅读了这篇文章: https://www.owasp.org/index.php/Session_fixation
在示例 2 和 3 中,它指出我大概可以设置使用以下 URL 加载资源的用户的 cookie:
http://website.kom/<script>document.cookie=”sessionid=abcd”;</script>
http://website.kon/<meta http-equiv=Set-Cookie content=”sessionid=abcd”>
这是否意味着浏览器在处理 URLS 时会处理这些标签?我已经尝试执行嵌入在加载 iframe 的 url 中的脚本,即使我对脚本标签进行 url 编码也无法让它们执行。
编辑
我还认为问题出在 url 显示给其他用户和脚本执行时。然而, session 固定的本质是让攻击者在登录之前设置用户的 cookie,以便攻击者在用户登录时劫持 session 。这与试图窃取用户 cookie 的常见 XSS 攻击形成对比劫持 session 。如果是这种情况,用户难道不应该首先访问目标站点,以便上述脚本更改目标站点的浏览器 cookie 吗?据我了解,浏览器 cookie 是基于每个站点的。因此,如果上述脚本在目标站点之外的任何其他站点执行,则 cookie 将设置为用户当前所在的站点,而不是目标站点。我的理解正确吗?
最佳答案
如果您在浏览器的 url 栏中键入如下内容:
http://example.com/<script>alert("Hello World");</script>
它被当作
http://example.com/%3Cscript%3Ealert%28%22Hello%20World%22%29;%3C/script%3E
普通 url 在浏览器中应该什么都不做。如果浏览器向您显示带有文本“Hello World”的警报,则该浏览器是一个安全漏洞,永远不应安装在此处。
但是,如果您正在尝试创建一个动态页面(JS/PHP/C#/Java 等),您应该永远记住,永远不要相信客户端。
如果你要输出 {RequestURI}
, 这是 http://example.com/
之后的所有内容你会有问题。您应该始终在用户输入中对 Html 实体进行编码,或者使用一些不允许 <meta>
的过滤器, <script>
以及任何可能有问题的东西。
关于javascript - URL 内的元标记和脚本处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37016118/