web漏洞-xss漏洞绕过防护
文章目录
前言
介绍了xss漏洞的防护方法以及绕过方式。
防护及绕过分类
代码对输入输出作实体化
防护原理
有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的。要在HTML中显示(<)这个字符,我们就必须使用实体字符。对输入输出作实体化后,对HTML有特殊意义的字符都会被转换,达到防护的目的。如php的htmlentities函数。
绕过方式
看一下有没有刚刚好啥特殊字符都不用的攻击点,不然的话基本绕过不了了,换个地方吧。
启用session验证登录或开启httponly
防护原理
session存储在网站服务器,js代码无法获取session,启用了session验证登录会验证session,而httponly开启后也可以防止客户端脚本获取cookie。而xss攻击就是执行的js恶意代码,所以,开启session验证登录或者开启httponly可以防止xss攻击直接获取cookie伪装登录。
绕过方式
既然不能利用cookie直接伪装登录了,我们就想办法直接获取账号和密码。
非保存密码
如果用户的账号密码没有保存在浏览器中,我们就需要在登录界面插入xss恶意代码,再利用xss的表单劫持功能获取用户输入的账号密码。
保存密码
如果用户的账号密码已经保存在了浏览器中,我们就直接获取浏览器记住的明文密码即可。
WAF
防护原理
一般WAF软件都是通过匹配关键字来进行拦截的。
绕过方式
手动绕过
和SQL注入绕过思维也是一样的,主要也是找到拦截的点,然后用不影响效果的一些垃圾字符,其它语句等来绕过。个人认为绕过效果最好的方法还是得找找html语句中一般我们不这么用但是能触发我们效果的语句,更像是卡html的bug。看图片例子。
工具绕过
xsstrike
项目地址:https://github.com/s0md3v/XSStrike。
burpsuite
也可以直接用burpsuite跑字典。