XSS—脚本注入是如何发生的



我看过很多关于XSS攻击的文章,
但有一件事让我感到困惑的是,脚本注入实际上是如何工作的?

例如,如果攻击者输入<script>alert('Attack!')</script>作为输入,为什么它可以永久地留在浏览器中,并且每个访问该网站的用户都可以看到警告。

根据我的理解,在攻击者输入后,将发送一个POST请求,有效载荷为<script>alert('Attack!')</script>。同时,<header>标签或<script>应该只在客户端源代码/Web服务器上操作。

它是如何工作的?

理解经典XSS机制的最简单方法:如果没有安全措施,攻击者将脚本输入到文章下面的评论部分的文本框中,然后将其发送进去。这样,脚本将存储为在服务器的数据库中。每当有人访问带有评论部分的页面时,脚本将加载到访问者的客户端。

要纠正这个错误,请转义输出并使用Content-Security-Policy。

有几种类型的XSS漏洞。我假定您谈论的是持久性xss,因为这是与您的问题相关的一种类型。

在持久性xss漏洞中,您可以POST一个请求,然后将其存储在应用程序的服务器端后端(即数据库)。

例如,数据库中存储文章注释部分的表。

当应用程序的其他客户端请求该页面时,服务器响应相关的文章HTML页面,其中包括攻击者有效负载存在的评论部分。然后,每个接收到该HTML页面的客户端也将收到带有恶意<script>payload</script>脚本的评论。

从这里开始,客户端浏览器自动呈现HTML并执行<script>标记作为从服务器接收到的合法JS代码.
由于此代码是由攻击者注入的,并且在客户端的浏览器中运行,因此它可能是有害的-窃取客户端的cookie,会话密钥等并将其发送到远程服务器。

相关内容

  • 没有找到相关文章

最新更新