即使XSS数据没有存储,XSS也可以作为攻击向量?

时间:2010-06-16 09:54:49

标签: security xss

我对XSS有疑问

即使数据未存储在数据库中并在以后使用,可以将表单用作XSS的向量吗?

即。在PHP中代码将是这样的:

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

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

“存储在数据库中并在以后使用”:我了解CSS的场景是您能够将数据发布到运行JavaScript的网站,并显示在浏览器中具有更高/的页面上不同于你自己的特权。 但是,要清楚,这是 not wat我正在谈论上面。

4 个答案:

答案 0 :(得分:1)

是的,它仍然是攻击媒介。

您需要考虑的是:

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

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

答案 1 :(得分:1)

是的,它仍然是一个攻击媒介,虽然影响更具情境性。

如果表单需要身份验证才能达到(如果网站不关心是否通过POST或GET提交表单,那么这是一个设计的场景,可以扩展之前的答案):

1)攻击者使用CSRF使用攻击者的凭据登录受害者(例如&lt; iframe src = http://../login?id=...&pass= ...“&gt;&lt; / iframe&gt;)。这样攻击者将表单带到受害者,如果受害者没有账户则无关紧要 2)攻击者使用另一个CSRF对表单执行XSS,要求受害者提供一些凭据等等(这是一些令人信服的社交工程需要发生或者攻击者在浏览器的同源中使用一些有用的JavaScript的地方位点。)

另一种人为的情形,其中易受攻击的形式执行一些重要的操作,例如在账户之间转账:

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

答案 2 :(得分:0)

我认为你的意思是,因为用户2无法显示用户1添加的先前数据,所以XSS会发生吗?因此,如果用户1破解URL以便在网页上也显示一些$ _GET参数(然后甚至将其更改为一个小文件),并传播此URL,说明看到此页面等是非常值得的,然后它可能是可能的。

因此,在显示页面时,最好避开所有参数。

答案 3 :(得分:0)

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