CSRF跨站请求伪造
条件
1、需要请求伪造数据包
2、无过滤防护,有过滤防护能绕过
3、受害者需要触发
案例一(无防护)
burp抓到添加用户的包
使用burp自带的转换为csrf的poc
勾选上include-auto-submit script,删除点击标签,使其不用点击就能访问
这个数据包构造好了之后,点击这个html,如果该用户刚好登录了这个cms的后台并且有权限增加用户那么就会成功创建一个admin用户。
防护措施:检测(Referer)来源
案例二
抓取zblog新增数据包
转化为csrf poc
将html上传到外网服务器访问,被过滤
根据网页目录找到cmd.php文件,搜索MemberMng
按住ctrl点击CheckIsRefererValid
按住ctrl点击CheckHTTPRefererValid,HTTP_REFERER函数是获取referer头的,如果referer为空的话就执行成功
将referer头改成网站地址绕过
或者在referrer头后门加上同源地址
成功添加,但是这个并没有什么用,因为被攻击者不会主动去修改referfer头
在生成的poc头部加上这个使其数据包自动将referer头去空
通过burp抓包可以看到已经没有了referer头了
放包后成功添加,因为代码逻辑就是为空就是True
绕过
referer验证
规则匹配绕过问题(代码逻辑不严谨)
添加<meta name="referrer" content="no-referrer">到头部文件
referer头加上同源地址:http://xx.xx.xx.xx/http://xx.xx.xx.xx
配合文件上传绕过(严谨使用同源绕过)
配合存储XSS绕过(严谨使用同源绕过)
token验证
Token参数值复用(代码逻辑不严谨)
Token参数删除(代码逻辑不严谨)
Token参数值置空(代码逻辑不严谨)