“当前已有100+用户参与投稿,共计发放奖励100000+“
前言
在我们AF的WAF模块中,有CSRF防护功能,很多工程师不知到此功能的作用,且即使配置了CSRF防护后,也经常会遇到不生效的情况因此给大家某公司CSRF防护配置原理及注意事项。
CSRF 简介
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。
跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
CSRF 原理
CSRF攻击原理如下:
首先正常的用户输入口令登陆了网站A(被攻击站点)
网站A(被攻击站点)判断该用户口令合法,生产Cookie保存在浏览器中
用户在没关闭网站A的情况下,访问了网站B的攻击页面(攻击者站点)
网站B(攻击者站点)利用网站A留在浏览器的cookie,访问网站A的某个URL,并偷偷做了该URL能做的事情
CSRF攻击原理图:
知道CSRF原理后,我们来进行漏洞利用一下 CSRF 漏洞利用方式
1. 首先我们搭建一台DVWA当csrf的靶机,搭建方法参考如下链接: https://bbs.sangfor.com.cn/forum.php?mod=viewthread&tid=113325
2.再CSRF攻防模块中故意输错修改的密码
3.可以看到,URL中很明显,这就是修改密码的链接,DVWA靶机的low难度是没有做任何校验。
4.我们在其他网站中,写入跳转这个链接的页面,模拟CSRF攻击,利用CSRF漏洞将靶机密码改成1234
5.登陆这个页面,单击写好的跳转页面选项
6.跳转后,我们可以看到漏洞利用成功,靶机密码被改成了1234
以上就是CSRF漏洞利用利用的简单方法。知道了CSRF的原理及漏洞利用的方式后,我们来看看我们某公司WAF模块是如何防护CSRF的。
AF防护方式及注意事项
1.我以我们WAF单品为例,AF的WAF模块配置方式相同。先进入WAF的CSRF防护模块
2.配置CSRF防护,我们可以看到,我们的WAF模块是直接以白名单的原理防护CSRF攻击的,设置允许跳转的白名单页面,不是从这个页面跳转的,WAF模块直接拦截,防止被CSRF漏洞利用,因此我们配置“需要防护的页面”中添加有CSRF漏洞的页面,允许来源页面配置只有此域名下的所有页面可以跳转:
3.但是再次尝试漏洞利用后,依然可以利用成功,我们WAF模块的CSRF防护未生效
4.我们再AF上抓包查看报文,发现AF收到的报文没有referer字段
5.而正常跳转的话,我们应该可以再报文中查看到referer字段,这个字段就是我们WAF模块防护的跳转URL,只有这个字段再白名单中,我们WAF模块才会进行阻断,而AF没有抓到这个字段
6.WAF没防护住的原因找到了,我们来到WAF模版的HTTP异常检测模块中,查看默认是不勾选referer字段的,因此我们WAF模块抓不到referer字段,造成CSRF防护不生效的原因,勾选此字段再进行尝试
7.漏洞利用失败,成功被WAF模块拦截
8.在日志中可以查看到CSRF防护记录:
总结 开启CSRF防护后,一定要再HTTP异常检测模块中,勾选referer字段! |