0x01
CSRF(跨站请求伪造) 原理:攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作。由于浏 览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行 当用户在同时打开服务器a、服务器b时,若b服务器的一个链接的请求指向a服务器,而a服务器并没 有对发来的链接的来源进行判断的时候:即不知道是由用户自己发送的,还是某个未知服务器发送的;则会把b服务器发来的请求当作用户自己发送的请求。
0x02
服务端无法正确识别请求的来源 2. 已登录的浏览器,打开恶意网址后,被执行了相应操作。
已登录的浏览器,打开恶意网址后,被执行了相应操作。
0x03
验证方式:
查看去掉于token相关的字段和参数时,是否能正常请求成功 去掉referer是否可以提交成功 是否能用get替代post进行提交。
漏洞防范:
referer头:可知从哪个页面来的
token值:身份验证,用于校验是否为用户自己提交的值
图片验证码
关于token值的防御方法:
在使用token防御csrf攻击的时候,需要注意:
判断用户发来的token和服务器留存的token是否相同
判断token是否为空,若不对其进行防御则会使攻击者删除token依旧可以复现csrf漏洞
在每次验证完token值时要注意将token值清空
0x04
pikachu-CSRF
使用bp的scrf的poc功能 ,修改其中的值:
将生成的表单生成一个html:
运行这个html
若被目标用户点击这个提交按钮,他的信息将会被修改 发现信息已经被修改,发现信息已经被修改了
POST:使用bp抓取修改信息的包:
发现是post型提交的,使用bp的general csrf poc进行csrf进行攻击、 修改参数的值:
复制表单生成一个html
使用浏览器运行这个html文件,即假设目标用户访问这个html页面,目标用户的信息就会被修改
发现信息已经被修改 token:抓取含有token的信息的包
使用bp的scrf工具修改信息:
将表单复制然后自己生成一个html文件
执行生成的html文件后,出现一个提交按钮
但因为token会检验这条数据究竟是否为自己提交的,所以无法直接修改目标用户的信息 网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来 的token都会刷新,起到了防伪的作用。
所以有不断刷新token的情况,就不会被csrf进行攻击。