【PortSwigger学院】跨站脚本(XSS)

跨站脚本

什么是跨站脚本 (XSS)?

跨站脚本攻击(又称 XSS)是一种网络安全漏洞,它允许攻击者破坏用户与有漏洞的应用程序之间的交互。它允许攻击者规避同源策略,该策略旨在将不同网站相互隔离。跨站脚本漏洞通常允许攻击者伪装成受害用户,执行用户能够执行的任何操作,并访问用户的任何数据。如果受害用户在应用程序中拥有特权访问权限,那么攻击者就可以完全控制应用程序的所有功能和数据。

XSS 如何工作?

跨站脚本攻击的原理是操纵有漏洞的网站,使其向用户返回恶意 JavaScript。当恶意代码在受害者的浏览器中执行时,攻击者就能完全破坏他们与应用程序的交互。

Labs

如果您已经熟悉了 XSS 漏洞背后的基本概念,只是想在一些现实的、故意易受攻击的目标上练习利用这些漏洞,您可以通过下面的链接访问本主题中的所有实验室。

XSS 概念验证

您可以通过注入有效负载,使自己的浏览器执行一些任意 JavaScript 来确认大多数类型的 XSS 漏洞。使用 alert() 函数来实现这一目的早已成为惯例,因为它简短、无害,而且成功调用时很难被忽略。事实上,我们的大多数 XSS 实验都是在模拟受害者的浏览器中调用 alert() 来解决的。

不幸的是,如果您使用的是 Chrome 浏览器,就会遇到一点小麻烦。从版本 92 开始(2021 年 7 月 20 日),跨源 iframe 无法调用 alert()。由于这些框架用于构建一些更高级的 XSS 攻击,因此有时需要使用其他 PoC 有效负载。在这种情况下,我们推荐使用 print() 函数。如果您有兴趣了解有关这一变更的更多信息,以及我们为什么喜欢 print(),请查看我们有关这一主题的博客

XSS 攻击有哪些类型?

XSS 攻击主要有三种类型。它们是:

  • 反射 XSS:恶意脚本来自当前 HTTP 请求。

  • 存储型 XSS:恶意脚本来自网站数据库。

  • 基于 DOM 的 XSS,即漏洞存在于客户端代码而非服务器端代码中

反射式跨站脚本

什么是反射式跨站脚本?

反射式 XSS 是跨站脚本攻击中最简单的一种。当应用程序接收 HTTP 请求中的数据,并以不安全的方式将这些数据包含在即时响应中时,就会出现这种情况。

下面是一个反射 XSS 漏洞的简单示例:

1
2
https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>

应用程序不会对数据进行任何其他处理,因此攻击者可以构建类似的攻击:

1
2
https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

如果用户访问了攻击者构建的 URL,那么攻击者的脚本就会在该用户与应用程序的会话上下文中,在用户的浏览器中执行。此时,脚本可以执行任何操作,并检索用户可以访问的任何数据。

Read more

存储型XSS

本文参考:

-------------本文结束感谢阅读-------------
创作不易,您的支持将鼓励我继续创作!