一、原理
跨站脚本攻击(XSS)是指恶意攻击者在Web页面中插入恶意javascript代码(也可能包含html代码),当用户浏览网页之时,嵌入其中Web里面的javascript代码会被执行,从而达到恶意攻击用户的目的。
XSS攻击的是客户端,最终受害者是用户,网站管理员也是用户之一。
XSS漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数。
参考地址:https://blog.youkuaiyun.com/xcxhzjl/article/details/121404472
二、XSS的危害?
- 挂马
- 盗取用户Cookie。
- DOS(拒绝服务)客户端浏览器。
- 钓鱼攻击,高级的钓鱼技巧。
- 删除目标文章、恶意篡改数据、嫁祸。
- 劫持用户Web行为,甚至进一步渗透内网。
- 爆发Web2.0蠕虫。
- 蠕虫式的DDoS攻击。
- 蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据
- 其它安全问题
三、分类
XSS有三类:反射型XSS(非持久型)、存储型XSS(持久型)和DOM XSS
1、反射型XSS
发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。
例:
http://www.test.com/xss/test.php的代码如下:
<?php
echo $_GET['x'];
?>
如果输入x的值未经任何过滤就直接输出,提交:
http://www.test.com/xss/test.php?x=<script>alert(1)</script>
则alert()函数会在浏览器触发。
2、存储型XSS
存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码
最典型的例子是留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。
三、实例
靶场:pikachu
反射型(get)
修改输入框的输入长度限制
上传脚本代码
也可以在url中输入
存储型
写入脚本代码后,每次刷新的时候都会执行
四、cookie和session的不同点
- 作用范围不同,cookie 保存在客户端(浏览器),session 保存在服务器端。
- 存取方式的不同,cookie 只能保存 ASCII,session 可以存任意数据类型,一般情况下我们可以在 session 中保持一些常用变量信息,比如说 userid 等。
- 有效期不同,cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,session 一般失效时间较短,客户端关闭或者 session 超时都会失效。
- 隐私策略不同,cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 cookie 中导致信息被窃取;session 存储在服务端,安全性相对 cookie 要好一些。
- 存储大小不同, 单个 cookie 保存的数据不能超过 4k,session 可存储数据远高于 cookie。
参考文章:https://www.cnblogs.com/timeage/p/16087788.html
五、工具使用
1、XSS平台
地址:https://xss8.cc/
创建项目后,勾选自己需要的功能,查看代码
在代码中任选一条
再次查看项目
2、beef-xss
在kali中安装beef-xss后,使用beef-xss
命令运行beef
访问beef的web url
在靶机中提交beef提供的代码
刷新beef网站