【问题标题】:XSS as attack vector even if XSS data not stored?即使没有存储 XSS 数据,XSS 还是攻击向量?
【发布时间】:2011-03-04 09:26:57
【问题描述】:

我有一个关于 XSS 的问题

即使数据没有存储在数据库中并在以后使用,表单是否可以用作 XSS 的向量?

即在 php 中的代码是这样的:

<form input="text" value="<?= @$_POST['my_field'] ?>" name='my_field'>

用上面的代码在你自己的浏览器上显示一个警告框(证明JS可以运行)是微不足道的。但这也可以跨浏览器利用吗? 我看到的唯一场景是您诱骗某人访问某个页面,即 CSRF 和 XSS 的组合。

“存储在数据库中并在以后使用”:我理解的关于 CSS 的场景是,您可以将数据发布到运行 JavaScript 的站点,并显示在具有更大/不同于您自己的特权。 但是,需要明确的是,这不是我在上面所说的。

【问题讨论】:

    标签: security xss


    【解决方案1】:

    是的,它仍然是一个攻击向量。

    你需要考虑的是:

    是否可以诱使经过身份验证的用户使用恶意制作的数据查看此页面?

    答案是这种情况是肯定的(假设您有经过身份验证的用户)。因为可以将某人引导至您的站点并将恶意变量传递到该字段。

    【讨论】:

      【解决方案2】:

      是的,它仍然是一个攻击媒介,尽管影响更多的是情境。

      这是一个人为的场景,如果表单需要身份验证才能到达(如果网站不关心表单是通过 POST 还是 GET 提交,则更容易):

      1) 攻击者使用 CSRF 使用攻击者的凭据(例如 )登录受害者。这样,攻击者将表单带给受害者,但它不会受害者是否没有帐户无关紧要。
      2) 攻击者使用另一个 CSRF 对表单执行 XSS,该表单要求受害者提供一些凭据等。网站。)

      另一个人为的场景,其中易受攻击的表单执行一些重要操作,例如在账户之间转账:

      0) 易受攻击的表单使用具有随机值的隐藏表单字段来防止 CSRF。攻击者不知道这些值是什么,因此无法设置适当的攻击。 1) 攻击者创建一个包含 JavaScript 的 CSRF 有效负载来读取表单的随机 csrf 令牌(即从浏览器的 DOM 中提取它们)。
      2) 受害者登录网站。
      3) 攻击者将受害者引诱到 CSRF 有效负载,CSRF 使用正确的 csrf 令牌引导表单请求,因为它在受害者的浏览器中执行,在受害者站点的同源中,并使用受害者的身份验证会话。攻击者不需要知道 csrf 令牌,只需能够操纵存储它们的表单字段。 4) 攻击者从受害者提交表单中受益——除了将受害者引诱到 CSRF 有效负载之外,不需要弹出窗口或社交工程,但表单需要为攻击者做一些“有用”的事情。

      【讨论】:

        【解决方案3】:

        我认为你的意思是,由于用户 2 不能显示用户 1 以前添加的数据,那么 XSS 会发生吗?因此,如果用户 1 破解了 URL,使得一些 $_GET 参数也显示在网页上(然后甚至将其更改为 tinyurl),并传播此 URL 说它真的值得查看此页面等,然后有可能。

        所以在显示页面时最好将所有参数转义。

        【讨论】:

          【解决方案4】:

          这绝对是一种有效的 XSS 形式。 XSS 有两种形式——存储和反射。反射更为常见,但存储可能更具破坏性。反射型 XSS 通常用作社会工程攻击的一部分。攻击者创建如下 URL: http://host.com/page.php?my_field=malicious_code 他们通常会使用 tinyutl 或 bit.ly 缩短 URL,并使用通常的社会工程方法(电子邮件、留言板、推特、劫持的 Facebook 帐户等)将其取出。

          【讨论】:

            猜你喜欢
            • 2022-01-08
            • 2011-02-16
            • 1970-01-01
            • 1970-01-01
            • 2021-06-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多