XSS跨站脚本攻击
2021-11-29 16:52:36 0 举报
AI智能生成
XSS
作者其他创作
大纲/内容
XSS基础
什么是XSS
XSS全称(Cross Site Scripting)跨站脚本攻击,XSS属于客户端攻击,受害者最终是用户,但特别要注意的是网站管理人员也属于用户之一。这就意味着XSS可以进行“服务端”攻击,因为管理员要比普通用户的权限大得多,一般管理员都可以对网站进行文件管理,数据管理等操作,而攻击者一般也是靠管理员身份作为“跳板”进行实施攻击。
XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言
XSS攻击最终目的是在网页中嵌入客户端恶意脚本代码,最常用的攻击代码是javascript语言,但也会使用其它的脚本语言
XSS 漏洞出现的原因
程序对网站message参数输入(没有过滤)和输出(没有转译)的控制不够严格,导致"精心构造“的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害
XSS的危害
劫持用户cookie信息
框架钓鱼
木马
键盘记录
刷流量
XSS分类
反射型XSS(中危漏洞)
交互的数据一般不会被储存在数据库里,只是简单的把用户输入的数据反射给浏览器,一次性,所见即所得。
反射型 XSS(GET)
反射型 XSS(POST)
储存型XSS(高危漏洞)
交互的数据会被存在数据库里,永久性储存,具有很强的稳定性。
DOM型 XSS(低危漏洞)
不与后台服务器产生数据交互,通过前端的DOM节点形成的XSS漏洞。由浏览器产生 和数据库代码无关
XSS
XSS-X
XSS漏洞可能存在的地方(带参数输入输出)
Html context
Attribute context
URL Context
Style Context
Script Context
XSS测试方式
工具测试
全自动扫描
APPscan / AWVS
半自动扫描
Burp Suite / firefox(hackbar) / XSSER XSSF 等
手工测试
重要的是考虑在哪里有输入,输入的数据在什么地方输出
'''><script>alert(1111)</script> (XSS万能闭合) '''><script>prompt(1111)</script>
XSS同源策略
什么是跨域
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。
同源策略
为了安全考虑,所有浏览器都约定了“同源策略”,同源策略禁止页面加载或执行与自身来源不同的域的任何脚本既不同域之间不能使用JS进行操作。比如:x.com域名下的js不能操作y.com域名下的对象
那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。
那么为什么要有同源策略? 比如一个恶意网站的页面通过js嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。
不受同源策略限止
<script src="..."> //加载本地js执行
<img src="..."> //图片
<link href="..."> //css
<iframe src="..."> //任意资源
同源策略修改
后台设置好Access-Control-Allow-Origin,设置为*,既允许所有人访问
XSS绕过
前端限制绕过
查看网页源代码
大小写混合
拼凑绕过
编码
注释干扰后台绕过
htmlspecialchars()函数
htmlspecialchars()函数的作用
& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为'
< (小于)成为 <
>(大于)成为 >
" (双引号)成为 "
’ (单引号)成为'
< (小于)成为 <
>(大于)成为 >
htmlspecialchars()函数配置参数
可用的quotestyle类型:
ENT_COMPAT - 默认。仅编码双引号 (可绕过)
ENT_QUOTES - 编码双引号和单引号(a标签可绕过)
ENT_NOQUOTES - 不编码任何引号
ENT_COMPAT - 默认。仅编码双引号 (可绕过)
ENT_QUOTES - 编码双引号和单引号(a标签可绕过)
ENT_NOQUOTES - 不编码任何引号
XSS常规防范
对输入进行过滤,对输出进行Html实体编码
0 条评论
下一页