CSRF跨站请求伪造(pikachu)

一开始接触CSRF的时候其实感觉和CSS有些相似,但在学习中发现CSS其实是得到了用户的权限,但是CSRF并没有得到用户的权限,他只是借用了用户的权限完成了攻击。

  CSRF定义: 跨站请求伪造(英语:Cross-site request forgery)是一种对网站的恶意利用,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。 CSRF跨站点请求伪造(Cross—Site Request Forgery) 跟XSS攻击一样,存在巨大的危害性。
        你可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。        
        简单地说,是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。       

我们如何看一个网站是否存在CSRF漏洞呢

1.首先对目标网站增删改的地方进行标记,观察其逻辑,并观察是否可以被伪造。

比如修改管理员账号不需要验证旧的密码,对于敏感信息的修改并没有使用安全的token验证,导致很容易被伪造。

2.确认凭证的有效期(这个问题会提高CSRF被利用的概率)

虽然退出关闭了浏览器,但是cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单。

CSRF(GET&POST)实验

1.我们首先以用户的身份登陆一下网站,登录账号在提示里可以看到。我们修改一下地址的信息。使用抓包工具看到像后台提交了一个请求,提交了全部信息。下图是我刚刚提交的get请求,将地址修改为中国。

 

 

 

 

 

 

 

 

2.如果我们是黑客该如何利用这个get信息呢,我们得到了刚刚修改地址信息的get源码,我们在前面加上该网站的地址之后通过邮件的方式发送给被攻击者,只要被攻击者点击了这个恶意代码,那么他的地址就会被自动修改,因为在他不关闭相同的网站时,浏览器保存了用户的cookie信息。只要将代码修改成如下所示,我们在打开pikachu平台时,点击这个恶意链接,系统就会自动将地址修改了。CSRF所要求的条件较多,属于安全等级比较低的一个安全问题,一般不会被轻易利用,我们只需要注意不要点击一些不安全的链接。

 

 

 3.我们可以看到GET方式的CSRF可以伪造URL,但是POST方式还是像CSS一样需要自己写一个表单页面。我们抓包看到修改请求以后是以POST方式提交的,我们这样我们就无法通过伪造URL来攻击目标了。我们需要自己布一个站点然后将站点的URL发送给被攻击者让她点击,此时我们伪造的站点就利用用户的身份向该网站提交了修改请求完成了攻击。

 

 

 

 

CSRF(TOKEN)防范措施

Token的存在能有效地防止CSRF的攻击,因为Token的存在是唯一的,每次刷新出来的token值都不同,所以黑客得到的值和用户所得到的token值不同的时候,当用户点击了恶意链接并且提交,后台的验证信息是不通过的,有效的防止了CSRF攻击。

我们查看一下浏览器的前端代码。可以看到一个有效的token值,虽然已经被放在前端代码了,但是由于还要提交到后端进行验证且每次刷新都会由函数生成一个新的token所以token是可以有效的防止CSRF攻击的。

 

 

 我们在pikachu查看一下后台生成token的文件。token的存在是可以有效的防止CSRF的。

 有效防止CSRF的措施,是我在学习视频上截图下来的觉得比较有用。

 

posted @ 2020-04-07 09:07  喝阔乐嘛  阅读(220)  评论(0编辑  收藏  举报