【问题标题】:Meta tag and Script processing inside URLURL 内的元标记和脚本处理
【发布时间】:2016-08-29 04:56:50
【问题描述】:

我目前正在研究会话固定技术并阅读了这篇文章: 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”>

这是否意味着浏览器在处理 URL 时会处理这些标签?我尝试执行嵌入在加载 iframe 的 url 中的脚本,即使我对脚本标签进行 url 编码,也无法让它们执行。

编辑

我还认为问题出在向其他用户显示 url 并且脚本执行时。然而,会话固定的本质是让攻击者在登录之前设置用户的 cookie,以便攻击者在用户登录时劫持会话。这与试图窃取用户 cookie 的通常 XSS 攻击形成对比劫持会话。如果是这种情况,用户是否应该首先在目标站点以便上述脚本更改目标站点的浏览器 cookie?据我了解,浏览器 cookie 是基于每个站点的。因此,如果上述脚本在目标站点之外的任何其他站点中执行,则 cookie 将设置为用户当前所在的站点,而不是目标站点。我的理解正确吗?

【问题讨论】:

    标签: javascript html security web xss


    【解决方案1】:

    如果你在浏览器的 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 实体进行编码,或者使用一些过滤器来禁止 &lt;meta&gt;&lt;script&gt; 以及任何可能出现问题的内容。

    【讨论】:

    • 谢谢您的回答先生。我还认为问题出在向其他用户显示 url 并且脚本执行时。但是,会话固定的本质是让攻击者在登录之前设置用户的 cookie,以便攻击者在用户登录时劫持会话。如果是这种情况,用户不应该在目标站点首先是为了让上述脚本更改特定站点的浏览器 cookie?
    • 我已更新我的问题以包含更多详细信息。
    猜你喜欢
    • 2021-07-15
    • 2013-07-30
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 2016-05-13
    • 2013-07-30
    相关资源
    最近更新 更多