介绍
跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
分类
反射型XSS、存储型XSS、DOM型XSS
反射型XSS
原理
利用方式
获取cookie值
1、制作一个JS脚本文件,将获取的cookie发送到vps的88端口中
2、向服务器提交JS脚本payload
3、监听88端口,收到cookie
登录按钮(超链接)
伪造一个登录按钮,点击之后,会进行弹窗
图片
会去查找a.jpg这个图片,如果没有,就会报错onerror,进行弹窗
事件
ommouseenter事件,鼠标移动到特定位置出发
onclick | 鼠标单击 |
onchange | 内容发生改变 |
onerror | 图片等未找到时 |
onload | 页面加载 |
onmouseover | 鼠标悬停 |
onmouseout | 鼠标移出 |
onmousemove | 鼠标路过 |
XSS重定向
原理
利用方式
1、向服务器提交js脚本
2、用户点击页面之后,会重定向到百度页面
危害
钓鱼攻击、DDOS攻击
比如,在某宝网站利用XSS攻击重定向到某小公司的网站上,在双十一晚上,所有访问某宝的用户都会被重定向到某小公司网站上,某小公司服务器无法在短时间内处理大量的请求,会造成拒绝服务,导致小公司服务器瘫痪。
存储型XSS
原理
相比较反射型XSS,存储型XSS危害更高,将脚本保存到服务器中,如果管理员没有发现则会一直存在。同时也不需要将页面发送给用户。
利用方式
1、将JS脚本上传至服务器中
2、更换浏览器访问页面,在监听端口得到用户的cookie值
DOM型XSS
原理
利用JS代码修改页面元素,以修改的方式进行XSS攻击。DOM型XSS既属于反射型又属于存储型,取决于输出点的不同。会在客户端产生问题。
利用方式
1、随便输入字符,在页面源码中发现输入的内容写入到了<a>标签中,作为超链接使用。
2、将弹窗脚本写入,发现有点乱,而且没有达到效果。
分析一下变化,发现 '/' 没有了,少了一个单引号,超链接部分十分混乱
3、尝试闭合标签,使用单引号闭合掉超链接部分
4、进行弹窗
XSS绕过方式
1、大小写
2、复写
3、转码
4、分步组合
XSS防御方式
可以看到不管使用哪一种攻击方式,或者哪一种标签,每个标签都有两个尖括号'<>',我们可以直接过滤尖括号进行防御。
1、白名单限制
2、htmlspecialchars:可以把输入内容转换为HTML实体。
//该函数的语法:htmlspecialchars(string,flags,character-set,double_encode)
& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为'
< (小于)成为 <
>(大于)成为 >