CSRF漏洞学习

CSRF介绍

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

通俗一点来说就是,被攻击者以这种方式盗用了你的用户做出某种恶意行为,而对于服务器来说这个行为是合法的,但这时候已经完成了攻击者需要的操作。比如用你的用户去发邮件或者是赋予某种权限给别的用户这样的操作。

CSRF攻击方式

CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了所以CSRF攻击也被称为为"one click"攻击。

而对于被攻击者来说,他的用户需要满足两个条件:
1.登录受信任的网站A,并且本地生成Cookie。

2.不登出A的情况下,访问危险网站B

CSRF分类

1.get类型CSRF

实现思路,就是在需要发送get请求才能进行某种操作的网站加以利用,完成某些恶意请求。

以靶场的题为例子:

当该用户点下攻击者构建的网站:127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=100000000&add=biubiu&email=123%40123.com&submit=submit

并且该用户的Cookie仍在留着,这样用户就会带着这个Cookie发出这个get请求,进行这个提交信息的操作了。

这样攻击者便完成了一次简单的恶意操作。

2.post类型CSRF

对于很多网站的应用来说,一些重要操作并未严格地区分GET与POST,攻击者可以使用GET来请求表单的提交地址。比如在PHP中,如果使用的是$_REQUEST,而非$_POST获取变量,则会存在这个漏洞被攻击者利用。

 例如该表单:

<form action=" / register" id="register" method="post" >
<input type=text name="username" value="" />
<input type=password name="password" value="" />
<input type=submit name="submit" value="submit" />
</form>

用户可尝试构造一个GET请求

http: //host/register?username=test&password=passwd

在这种情况下这个请求就会顺利通过。

如果服务器端已经区分了GET与POST,那么攻击者有什么方法呢?对于攻击者来说,还是各种方法可以构造出一个POST请求完成输出的。

最简单的方法,就是在一个页面中构造好一个表单表单,然后使用JavaScript自动提交这个表单。

当攻击者构造链接中包含类似这样一个JavaScript内容:

<form action=/coures/user/handler/666/buy method=POST>
<input type="text" name="xx" value="xx" />
</form>
<script> document.forms[0].submit(); </script> 

当用户访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作,自动购买了id为666的视频。

CSRF漏洞的挖掘

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

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

3、随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:

  使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。

  如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。

更详细的博客感觉应该看看这个:

  CSRF漏洞原理攻击与防御(非常细)-CSDN博客

 

posted @   星沐丶  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示