关于XSS
含义
XSS是跨站脚本攻击,原理是攻击者向有XSS漏洞的网站中输入恶意的HTML代码,当其它用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。
分类
分类:反射型XSS、存储型XSS、DOM型XSS.
1.反射型XSS
又称非持久型XSS。之所以称为反射型XSS,是因为这种攻击方式的注入代码是从目标服务器通过错误信息、搜索结果等等方式“反射”回来的:发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。 而称为非持久型XSS,则是因为这种攻击方式具有一次性,由于代码注入的是一个动态产生的页面而不是永久的页面,因此这种攻击方式只在点击链接的时候才产生作用。
攻击者通过电子邮件等方式给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,注入脚本被传输到目标服务器上,然后服务器将注入脚本“反射”到受害者的浏览器上,特有的恶意代码参数被 HTML 解析、执行。
非持久型 XSS 漏洞攻击的四大特点:
- ① 即时性。不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据;
- ②攻击者需要诱骗点击;
- ③反馈率低,所以较难发现和响应修复;
- ④盗取用户敏感保密信息。
2.存储型XSS
也叫持久型XSS,主要将XSS代码提交存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。当目标用户访问该页面获取数据时,XSS代码会从服务器解析之后加载出来,返回到浏览器做正常的HTML和JS解析执行,XSS攻击就发生了。存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。
持久型 XSS 的三大特点:
- ①持久性,植入在数据库中;
- ②危害面广,甚至可以让用户机器变成 DDoS 攻击的肉鸡;
- ③ 盗取用户敏感私密信息。
3.DOM-based 型XSS
基于 DOM 的 XSS 攻击是指通过恶意脚本修改页面的 DOM 结构,是纯粹发生在客户端的攻击。DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞。
危害:存储型 > 反射型 > DOM型
危害
XSS跨站脚本攻击危害
危害一:
攻击者利用网站漏洞把恶意的脚本代码注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码。对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。
-
网络钓鱼,包括盗取各类用户账号
-
窃取用户cookies资料,从而获取用户隐私信息
-
网页挂马,进行恶意操作
-
获取客户端信息,例如用户的浏览历史、真实IP、开放端口等
危害二:
不法分子利用XSS跨站脚本攻击漏洞与其他漏洞相结合,对网站做进一步的破坏。甚至可以传播跨站脚本蠕虫等。
-
控制受害者机器向其他网站发起攻击
-
结合其他漏洞,如CSRF漏洞,实施进一步作恶
-
提升用户权限,包括进一步渗透网站
-
传播跨站脚本蠕虫等
防护
不要关闭浏览器默认开启XSS保护
HTML编码与HTML Attribute编码
JavaScript编码
开启CSP网页安全政策
将不可信数据作为CSS
将不可信数据作为URL参数值时需要对参数进行URL编码
XSS-Labs靶场搭建
1、下载安装phpstudy
然后启动
2、下载xss-labs靶场源码
【下载地址:https://github.com/do0dl3/xss-labs】
3、解压缩并放入如下文件夹中
4、在phpstudy中创建新的网站
5、打开浏览器,在地址栏输入xsslabs:8080,即可访问靶场
xsslabs通过挑战
第一关:
在url 发现注入点
第二关:
尝试使用上一关的恶意语句操作进行弹窗
但是报错了
查看网页源码
可以看到<h2> </h2>
标签中的恶意代码被编码了
其中< 和 > 都被编码成了html实体
要想浏览器执行这里的弹窗代码,需要将属性的引号和标签先闭合
在我们想注入的<script>alert(1)</script>
之前,加上">
即可