跨站请求伪造(csrf)

1csrf介绍

CSRF (Cross-site request forgery,跨站请求伪造)也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户请求受信任的网站。

2csrf原理

跨站请求伪造(csrf)_第1张图片

在上图中,A网站通过cookie来识别用户C,当用成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭或者退出其登录,访问A网站都会带上这个cookie。如果在这个时候,用户C访问了被黑客控制的网站B,网站B又发出要求访问网站A的请求,然后就会由用户C端根据网站B发起的请求,带着A网站的cookie访问网站A,但这并不是用户C的本意,那么这就是所谓的请求伪造了,跨站是因为这是由B端发起的。而且这是受害者用户C完全不知情的请求,从而在未授权的情况下完成权限保护下的操作。

3、判断是否存在csrf

(1)最简单的方法就是抓取一个正常请求的数据包,如果没有Referer字段和token,那么极有可能存在CSRF漏洞。

(2)如果有Referer字段,但是去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。

4csrf漏洞挖掘

1)使用pikachu靶场,到csrf模块,使用账户:Vince,密码:123456登录,点击逻辑个人资料

跨站请求伪造(csrf)_第2张图片

2)如图所示,点击submit并使用burp抓包,在burp中【将抓到的包发送到repeater模块在点击send(一些情况不执行这一步,csrf会失败)】

跨站请求伪造(csrf)_第3张图片

3)在发送到csrf  poc模块

跨站请求伪造(csrf)_第4张图片

4)在csrf poc模块下,在下图红色方框中修改自己想要修改的数据(这里修改了sex,phone,add)左边是原始数据,作为参考,点击test in browser-copy:

跨站请求伪造(csrf)_第5张图片

5)返回burp的拦截页面,先点击drop,在关闭拦截:

跨站请求伪造(csrf)_第6张图片

6)返回之前的浏览器,新打开一个页面,访问步骤5复制的URL,点击sumit request(成功修改,在一般测试过程中,显示success等)

跨站请求伪造(csrf)_第7张图片

7)回到步骤1的页面,刷新页面,数据成功被修改:

5、防范措施

(1)验证HTTP Referer字段

(2)在请求地址中添加token并验证

你可能感兴趣的:(csrf,安全,web安全)