pikachu-CSRF

本文详细介绍了CSRF漏洞,通过两个实例展示了如何利用GET和POST方式实现攻击,第一关说明了GET请求的CSRF风险,第二关展示了POST请求的攻击方式。第三关探讨了CSRF Token作为防御手段的重要性,阐述了其随机性以防止攻击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1关 CSRF(get)

1·直接点击提示得到账号密码进行登录。
在这里插入图片描述
2·点击修改个人信息进入修改界面点击submit进行修改
在这里插入图片描述
3·发现url没有变化,点击提交之后就跳转到上图这个显示个人信息的页面了,信息也修改成功了
在这里插入图片描述
4·这时候我们可以使用burpsuit进行抓包修改,在提交修改个人信息的时候,可以抓包,看到下面的内容
在这里插入图片描述
5·从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么,这里应该是可以被利用的。

在vince登录状态下(其实这个链接里面是不包含用户名的,谁登录都无所谓,只要有人登录着就行,登录着的用户的信息就会被改成url提供的那些),试试改一改上面的链接,比如把电话号码改一改。浏览器地址栏输入payload:
127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=123456789&add=nbaluckhouse&email=allen%40qq.com&submit=submit
在这里插入图片描述
6·如果被攻击者此时登录状态或cookie/session没有过期,则她的信息被修改。跳转到显示用户信息的地方,手机号已经被成功修改,攻击成功。
在这里插入图片描述

第2关 CSRF(post)

1`依旧登陆vince账号进行修改
在这里插入图片描述
2·进入修改信息界面,点击submit进行抓包
在这里插入图片描述
在这里插入图片描述
3·从请求报文来看,和前一关一样,没有不可预测的认证信息,可以被利用。

但是这一关是post类型,URL不再显示修改参数,所以无法再使用上述办法(即通过URL来伪造请求)进行修改,但是抓包可以知道本页面中有的标签以及name,方便后面构造表单时使用。

此时,黑客可以通过构造恶意站点,将POST请求隐藏在站点中的表单中,然后诱骗用户进行点击,当用户点击后触发表单,数据自然就POST到存在CSRF漏洞的网站,用户的信息则被恶意修改。
在这里插入图片描述

将写好的表单部署到黑客站点,这里因为是本机做演示,所以放到Pikachu/vul/csrf/目录下
在这里插入图片描述

4·最后,当用户在登录状态下,访问黑客站点并点击提交按钮,那么其个人信息将会被恶意修改。
在这里插入图片描述

第三关 CSRF Token

1·修改用户信息并提交,在burpsuite的proxy模块可以看到报文中包含token
在这里插入图片描述
每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证, 我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了。

### Pikachu平台CSRF攻击防护措施 #### CSRF防御机制概述 为了防止CSRF攻击,在Web应用程序开发过程中通常会采用多种策略。在Pikachu平台上,主要采取了同步器令牌模式作为核心防御手段[^1]。 #### 同步器令牌模式实现细节 每当用户访问涉及敏感操作(如修改密码、转账等)的页面服务器会在返回给用户的HTML文档中嵌入一个隐藏字段,该字段内含有一串随机生成的一次性令牌(token)[^3]。当用户提交表单,这个token会被一同发送回服务器;此服务器端会对收到的token与存储于Session或其他持久化介质内的预期值进行对比验证。只有两者匹配一致的情况下才允许执行相应业务逻辑处理流程,从而有效阻止非法第三方站点冒充合法用户发起未经许可的操作请求。 ```html <form action="/updateProfile" method="POST"> <!-- 用户可见输入框 --> <input type="text" name="username"/> <!-- 隐藏域用于携带anti-CSRF token --> <input type="hidden" name="_csrf_token" value="{{ uniqueToken }}"/> <button type="submit">保存更改</button> </form> ``` 对于基于GET方式构建的应用场景,则可通过URL参数附加的方式传递相同的校验信息。 #### 实际应用场景下的实践方法 以Pikachu靶场为例,在实际演练环境中可以观察到如下现象: - 当尝试模拟一次正常的“更新个人资料”的HTTP POST请求,除了常规的数据项之外还会额外包含名为`_csrf_token` 的键值对; - 若故意篡改或省略上述提到的关键参数再重发相同类型的网络通信行为,则后台API接口将会拒绝此次调用并给出错误提示消息,表明缺少必要的认证凭证[^2]。 此外值得注意的是,尽管引入了Anti-CSRF Token机制大大增强了系统的安全性水平,但仍需配合其他辅助性的保护举措共同作用才能达到最佳效果,比如设置HttpOnly属性标记Cookie、启用SameSite Cookie选项等等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值