了解跨站脚本攻击
跨站脚本(XSS)是一种攻击网站用户而非服务器本身的网络应用程序漏洞。XSS允许攻击者冒充易受攻击的用户,进行任何活动或使用该用户可以访问的任何数据。
开放网络应用安全项目发布了OWASP十大报告。它是一份最严重的网络应用程序安全问题的清单。在2017年的OWASP Top 10中,XSS是第二大最普遍的问题,在大约三分之二的应用程序中发现。
在这篇文章中,我们将详细介绍XSS攻击,其影响,以及如何缓解它们。
免责声明:本文仅用于教育目的。
前提条件
- HTML和Javascript的基本知识
XSS是如何工作的
跨站脚本攻击是通过欺骗易受影响的网络应用程序,使其向用户返回恶意的Javascript来完成的。当恶意代码在受害者的浏览器内执行时,攻击者通过收集以下内容,完全控制受害者与应用程序的互动方式。
- 会话cookie
- 用户凭证
- 代币
- 秘密
其他信息中。

XSS攻击
首先,我们需要找到一个有漏洞的网站。由于我们不能在互联网上随意测试网站,我们将在一个故意有漏洞的网站上进行这种攻击。我们将利用Acunetix的一个在线易受攻击的Web应用程序。为了使用这个易受攻击的网络应用程序,我们访问Acunetix易受攻击的应用程序。

下一步是找到一个输入字段,在那里我们可以粘贴我们的脚本。它可以是一个用户名,一个搜索框,一个文本区域,或任何其他类型的输入域。我们的易受攻击的网站有一个搜索框,非常完美现在,让我们给它一些简单的HTML代码,看看会发生什么。在搜索框中输入以下HTML代码,然后点击开始按钮。
<u>test</u>
<!-- the HTML u tag or underline tag is used to give a word an underline in HTML -->

从上面的截图中,我们可以看到,test 这个词是下划线。很完美!我们在页面上得到了一个反映。我们在页面上得到了一个反映。通过查看应用程序的源代码,我们也可以看到它是如何反映的。

现在我们来看看XSS。最简单的XSS有效载荷是脚本标签。一个脚本标签可以引用或嵌入JavaScript代码。最常见的XSS有效载荷之一是在一个脚本标签中使用JavaScript警报函数。让我们尝试一下,在我们的Web应用程序的搜索框中输入以下有效载荷。
<script>alert(1)</script>

我们注意到,当我们在输入XSS有效载荷后,一点击前进按钮,我们就会得到一个显示有1 的警报框,这意味着我们的有效载荷成功了。我们只是在JavaScript中使用了alert函数来显示1。
XSS的类型
反射式XSS
这是一种一次性的XSS。恶意脚本是受害者在线应用程序请求的一部分,经常反映在应用程序的响应中。
反射式XSS最常被用于有针对性的攻击,即黑客发送带有恶意脚本的URL的钓鱼邮件。攻击者甚至可以在一个公共网站上发布一个链接,欺骗用户点击它。
存储的XSS
也被称为Persistent XSS ,有效载荷被保存在服务器上,可以由受害者触发,而不需要应用程序之外的任何用户互动。这种类型的XSS发生在服务器将你提供的输入保存在服务器的某个地方(即数据库或缓存服务器)。
存储的XSS例子
让我们回到我们易受攻击的Web应用程序。我们点击Your profile ,这时我们看到了一个登录页面。

现在让我们用这些默认的凭证来登录。
username: test
password: test

现在我们已经登录了,让我们在名字栏里注入我们的有效载荷,然后点击更新按钮来更新我们的资料。
<script>alert(1)</script>

正如我们所看到的,我们得到了一个警报框。这是因为有效载荷被保存在姓名字段中,而且每次加载页面时都会触发警报框。
DOM XSS
受害者的浏览器直接受到DOM XSS的影响,这是一种本地攻击。文档对象模型(DOM)是浏览器操纵和展示网页的API,在这种攻击中被使用,而不是恶意内容被传递到服务器。
XSS的影响
通过XSS,攻击者可以做以下事情。
- 捕获用户凭证
- 玷污网站
- 冒充用户
- 进行用户操作
如何减轻XSS攻击
你可以通过以下方式防止XSS攻击
- 使用适当的响应头
- 对用户输入进行过滤
- 对输出的数据进行编码
- 对HTML进行净化处理
总结
XSS是一种常见的网络漏洞。网络漏洞扫描器,如burp套件,可以用来对网络应用进行XSS测试。