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

CSRF跨站请求伪造——入门篇【DVWA靶场low级别writeup】

CSRF跨站请求伪造——入门篇

  • 0. 前言
  • 1. 什么是CSRF
  • 2. 一次完整的CSRF攻击


0. 前言


本文将带你实现一次完整的CSRF攻击,内容较为基础。需要你掌握的基础知识有:

  • 了解cookie
  • 已经安装了DVWA的靶场环境(本地的或云的);
  • 下载了专业版BurpSuite;

1. 什么是CSRF


1. 模拟一次“正常”的上网行为

  • 有一天,我打开了一个银行的网页(我们模拟的银行网站),想要给我的朋友转钱:

在这里插入图片描述

  • 转完钱后,我又去浏览了其他“好看”的网页:

在这里插入图片描述

  • 看了一会儿之后,再次回到银行页面查看余额,发现钱没了!!!又刷新了一次好看的页面,再去看银行,钱更少了!!!这是什么情况?

2. 分析

  • 作为一名网络安全的选手,怎么甘心钱就这么消失了呢?肯定有猫腻。我们检测一下“好看”界面的网络源代码,发现果然有问题:

在这里插入图片描述

  • 这个页面中,有一个图片标签,向银行网站发起了一次转账请求,目标用户是1102,转账金额为1000块。
  • 但是它没有我的用户名和密码啊,这是怎么回事?我们再去查看一下浏览器的安全设置,发现了问题:

在这里插入图片描述

  • 在我们第一次登入银行网站后,浏览器记录了当前用户的Cookie,且浏览器安全级别较低,不同网站之间,没有设置Cookie的拦截。这也就意味着,当我使用这个浏览器访问其他“好看”网站时,该网站可以使用之前保留的Cookie,向银行发起请求,从而绕过身份验证,攻击就发生了。
  • 这就是CSRF跨站请求伪造!

2. 一次完整的CSRF攻击


本次实验,全部在BP自带的浏览器上进行。

1. 先看题目

  • 修改DVWA的安全等级为low:

在这里插入图片描述

  • 场景是,现在有一个用户要改变admin的密码,输入两次新密码,一次验证:

在这里插入图片描述

  • 我们要通过CSRF的手段,在用户不知情的情况下,修改admin密码,这个密码用户不知道,它今后也就登入不了了。

2. 攻击开始

  • 开启BP的拦截功能:

在这里插入图片描述

  • 用户输入了新密码,并提交了修改请求,该信息被我们拦截到了,直接将请求forward,并关闭拦截。接下来直接右键,让BP自动生成一段CSRF的测试代码:

在这里插入图片描述

  • 可以看到,BP为我们生成了一个HTML文件:
    • 如果用户自己打开了这个网页,它将会向目标网站(刚才用户修改密码所在的网站),自动发送修改密码的请求。可以通过修改password对应的value的值,将密码修改为我们指定的内容admin
    • 自动提交的功能是由JS的代码实现的,为document.forms[0].submit();
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://localhost/DVWA/vulnerabilities/csrf/">
      <input type="hidden" name="password&#95;new" value="admin" />
      <input type="hidden" name="password&#95;conf" value="admin" />
      <input type="hidden" name="Change" value="Change" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>
  • 在BP自带的浏览器中测试,copy该文件的路径,在BP中打开:

在这里插入图片描述

  • 可以看到,这个新页面立即跳转到了修改用户密码的界面,并且修改成功,实验完成。

在这里插入图片描述

3. 思考

  • 上述实验中,我们即是用户,也是攻击者。
  • 用户视角:
    • 登入进DVWA网站主界面后,就不管了,也没想着去修改密码。之后不慎点击了某个不知名链接,导致密码被恶意修改了;
  • 攻击者视角:
    • 已经提前做好了一个CSRF的攻击网站,等待用户点击。实验中拦截请求的操作,是不会出现在真实场景中的,只是为了使用一下BP自带的CSRF自动生成工具。

http://www.dtcms.com/a/109404.html

相关文章:

  • Android学习总结之handler源码级
  • Reactive编程入门:Project Reactor 深度指南
  • 网络:华为数通HCIA学习:IP路由基础
  • vuex自存例子
  • linux_sysctl_fs_file_nr监控项
  • LeetCode刷题 -- 48. 旋转图像
  • 2025身份证号码前六位地区代码对照表
  • Android A/B 分区 OTA 如何查看升级的 img 分区
  • zk基础—4.zk实现分布式功能二
  • Ansible:playbook的高级用法
  • Unity中 JobSystem使用整理
  • LeetCode 接雨水问题详解 - 动态规划解法
  • CentOS 7安装hyperscan
  • LLM驱动的智能体:基于GPT的对话智能体开发指南
  • 如何学习一门编程语言
  • flux绘画模型介绍
  • Java学习总结-字符集
  • 项目之Boost搜索引擎
  • 六种光耦综合对比——《器件手册--光耦》
  • JavaWeb学习--MyBatis-Plus整合SpringBoot的ServiceImpl方法(查找部分)
  • Java在体育比分直播系统搭建中的应用
  • py文件打包为exe可执行文件,涉及mysql连接失败
  • leetcode76.最小覆盖子串
  • podman和与docker的比较 及podman使用
  • Linux红帽:RHCSA认证知识讲解(九)标准输入输出、重定向、过滤器与管道
  • PyTorch的dataloader制作自定义数据集
  • Golang改进后的任务调度系统分析
  • MySQL的进阶语法12(MySQL管理)
  • [250403] HuggingFace 新增检查模型与电脑兼容性的功能 | Firefox 发布137.0 支持标签组
  • 数据库系统-数据库模式