pikachu靶场通关笔记16 CSRF关卡02-CSRF(POST)

目录

一、CSRF原理

二、源码分析

三、渗透实战

1、构造CSRF链接

(1)登录

(2)bp设置inception on

(3)修改个人信息

(4)构造CSRF链接

2、模拟受害者登录

3、诱导受害者点击


本系列为通过《pikachu靶场通关笔记》的CSRF关卡(共3关)渗透集合,通过对CSRF关卡源码的代码审计找到安全风险的真实原因,讲解CSRF原理并进行渗透实践,本文为CSRF02关卡XSS之POST关卡的渗透部分。

一、CSRF原理

CSRF(Cross - Site Request Forgery)即跨站请求伪造,攻击者通过诱导用户点击恶意链接或访问恶意网站,利用用户已登录的身份信息,在用户不知情的情况下,以用户的名义向目标网站发送恶意请求,执行一些非用户本意的操作,如转账、修改密码、发布虚假信息等。由于请求是从用户浏览器发出,且携带了用户的身份认证信息,目标网站难以区分请求的合法性,从而导致用户的权益受到侵害。

二、源码分析

进入pikachu靶场CSRF-POST关卡,登陆后进入个人资料页面,点击修改资料,进入到编辑资料的页面,完整URL如下所示。

http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_post_edit.php

接下来查看csrf_post_edit.php的源码内容,详细注释后如下所示。

<?php
/*** Created by runner.han* There is nothing new under the sun*/// 获取当前页面文件名
$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);// 设置页面导航菜单的active状态
if ($SELF_PAGE = "csrf_post_edit.php"){$ACTIVE = array('','','','','','','','','','','','','','','','','','','','','','','','','active open','','','','active','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','','');
}// 引入配置文件、函数库和数据库连接
$PIKA_ROOT_DIR =  "../../../";
include_once $PIKA_ROOT_DIR . 'header.php';
include_once $PIKA_ROOT_DIR."inc/config.inc.php";
include_once $PIKA_ROOT_DIR."inc/function.php";
include_once $PIKA_ROOT_DIR."inc/mysql.inc.php";// 连接数据库
$link=connect();// 检查用户是否登录,未登录则跳转到登录页面
if(!check_csrf_login($link)){header("location:csrf_post_login.php");
}$html1='';
// 处理表单提交
if(isset($_POST['submit'])){// 检查所有字段是否都有值if($_POST['sex']!=null && $_POST['phonenum']!=null && $_POST['add']!=null && $_POST['email']!=null){// 转义输入数据防止SQL注入$getdata=escape($link, $_POST);// 更新会员信息$query="update member set sex='{$getdata['sex']}',phonenum='{$getdata['phonenum']}',address='{$getdata['add']}',email='{$getdata['email']}' where username='{$_SESSION['csrf']['username']}'";$result=execute($link, $query);// 判断更新是否成功if(mysqli_affected_rows($link)==1 || mysqli_affected_rows($link)==0){header("location:csrf_post.php");}else {$html1.='修改失败,请重试';}}
}
?>

这段 PHP 代码的主要功能是会员信息修改页面,用于处理用户信息的修改操作。相对于上一关卡(CSRF-GET),主要区别是参数由GET传入改为了POST传入,具体步骤如下所示。

  • 页面信息处理:获取当前页面文件名,若为 csrf_post_edit.php 则设置页面激活状态。
  • 文件包含与数据库连接:包含项目的头部文件、配置文件、函数库文件和 MySQL 操作文件,建立数据库连接。
  • 用户登录验证:检查用户是否登录,未登录则重定向到登录页面。
  • 表单提交处理:当用户通过 POST 请求提交表单时,验证用户输入信息,对输入数据进行转义处理,然后执行 SQL 更新语句更新用户信息。根据更新结果,要么重定向到指定页面,要么显示错误提示信息。
  • 页面显示:从数据库查询当前用户的信息,将其显示在表单中,用户可以修改信息并提交。

同样这段代码存在 CSRF安全风险,主要原因如下所示。

  • 缺乏 CSRF 令牌验证:代码中没有使用 CSRF 令牌来验证请求的合法性。攻击者可以构造一个恶意页面,在页面中使用 JavaScript 或 HTML 表单模拟用户向该页面发起 POST 请求。由于用户已经登录目标网站,浏览器会自动携带用户的会话信息(如 Cookie),服务器会将该请求视为合法请求,从而执行用户信息的修改操作。
  • 未验证请求来源:代码没有对请求的来源进行验证,无法判断请求是否来自合法的页面。攻击者可以在任何网站上构造恶意请求,只要用户登录了目标网站,就可能受到攻击。

三、渗透实战

1、构造CSRF链接

(1)登录

打开pikachu靶场CSRF(post)题目页面,如下所示进入到登陆页面。

http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_login.php

输入用户名lili密码123456,点击登录后效果如下所示。

(2)bp设置inception on

burpsuite设置拦截报文,inception设置为on,如下所示。

(3)修改个人信息

进入到个人会员中心后,点击修改个人信息,将信息修改为girl,11122223333,44,555@pikachu.com,同时打开bp拦截,再点击submit。

(4)构造CSRF链接

bp将修改个人信息的报文拦截到,右键点击相关工具—>Engagement tools—>Generate CSRF PoC生成。

此时进入到CSRF-POC generate页面,点击copy html页面。 

接下来打开小皮工具phpstudy,通过“网站-管理-打开根目录”的路径打开源码根目录文件夹,如下所示。

在根目录中新建一个html文件(命名为csrf_姓名缩写.html),把刚复制的代码粘贴进去并保存,命名为csrf_mooyuan.html。此时,恶意构造的URL地址如下所示。

http://127.0.0.1/csrf_mooyuan.html

bp设置inceptiron off,此时浏览器页面如下所示。 

此时可以看到页面中lili的个人信息均已正确修改,接下来在浏览器中退出登录。 

2、模拟受害者登录

本次我们模拟受害者,输入另一个用户名及其密码(这里选择mooyuan和123456),点击登录了显示mooyuan用户的个人信息,此时个人信息为GET关卡修改,具体页面如下所示。

3、诱导受害者点击

模拟受害者点击恶意URL浏览器输入如下CSRF链接。

http://127.0.0.1/csrf_mooyuan.html

点击submit request按钮, 显示mooyuan账户更改信息成功,说明渗透成功,具体如下所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/82857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAD2025安装教程与资源下载

软件下载 软件名称&#xff1a;CAD2025软件语言&#xff1a;简体中文软件大小&#xff1a;2.69G系统要求&#xff1a;Windows10或更高&#xff0c;32/ 64位操作系统硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高下载链接&#xff1a; 链接&#xff1a;https://pan.qua…

SpringBoot离线应用的5种实现方式

在当今高度依赖网络的环境中&#xff0c;离线应用的价值日益凸显。无论是在网络不稳定的区域运行的现场系统&#xff0c;还是需要在断网环境下使用的企业内部应用&#xff0c;具备离线工作能力已成为许多应用的必备特性。 本文将介绍基于SpringBoot实现离线应用的5种不同方式。…

数据类型 -- 字符

在C中&#xff0c;字符型&#xff08;char&#xff09;用于存储单个字符&#xff0c;如字母、数字、符号等。字符型是最基本的数据类型之一&#xff0c;常用于处理文本、字符数组&#xff08;字符串&#xff09;等场景。 1. 基本类型 • char&#xff1a;标准字符类型&#x…

国标GB28181视频平台EasyGBS视频实时监控系统打造换热站全景可视化管理方案

一、方案背景​ 在城市供热体系中&#xff0c;换热站作为连接热源与用户的核心枢纽&#xff0c;其运行稳定性直接影响供热质量。面对供热规模扩大与需求升级&#xff0c;传统人工巡检模式暴露出效率低、响应慢、监测不足等问题。基于GB28181协议的EasyGBS视频实时监控系统&…

174页PPT家居制造业集团战略规划和运营管控规划方案

甲方集团需要制定一个清晰的集团价值定位&#xff0c;从“指引多元”、“塑造 能力”以及“强化协同”等方面引领甲方做大做强 集团需要通过管控模式、组织架构及职能、授权界面、关键流程、战略 实施和组织演进路径&#xff0c;平衡风险控制和迅速发展&#xff0c;保证战略落地…

python打卡第45天

tensorboard的发展历史和原理 一、发展历史 起源与 TensorFlow 一同诞生 (2015年底): TensorBoard 最初是作为 TensorFlow 开源项目&#xff08;2015年11月发布&#xff09;的一部分而设计和开发的。其核心目标是解决深度学习模型训练过程中的“黑盒”问题&#xff0c;提供直观…

CentOS 7如何编译安装升级gcc至7.5版本?

CentOS 7如何编译安装升级gcc版本? 由于配置CentOS-SCLo-scl.repo与CentOS-SCLo-scl-rh.repo后执行yum install -y devtoolset-7安装总是异常&#xff0c;遂决定编译安装gcc7.5 # 备份之前的yum .repo文件至 /tmp/repo_bak 目录 mkdir -p /tmp/repo_bak && cd /etc…

中山大学美团港科大提出首个音频驱动多人对话视频生成MultiTalk,输入一个音频和提示,即可生成对应唇部、音频交互视频。

由中山大学、美团、香港科技大学联合提出的MultiTalk是一个用于音频驱动的多人对话视频生成的新框架。给定一个多流音频输入和一个提示&#xff0c;MultiTalk 会生成一个包含提示所对应的交互的视频&#xff0c;其唇部动作与音频保持一致。 相关链接 论文&#xff1a;https://a…

iOS 门店营收表格功能的实现

iOS 门店营收表格功能实现方案 核心功能需求 数据展示&#xff1a;表格形式展示门店/日期维度的营收数据排序功能&#xff1a;支持按营收金额、增长率等排序筛选功能&#xff1a;按日期范围/门店/区域筛选交互操作&#xff1a;点击查看详情、数据刷新数据可视化&#xff1a;关…

怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗

有时候咱们cesium加载模型时候型太黑&#xff0c;程序崩溃&#xff0c;不显示&#xff0c;位置不对模型太大怎么办 需要处理 可以联系Q:424081801 谢谢 需要处理 可以联系Q:424081801 谢谢

移植driver_monitoring_system里的MobileNet到RK3588

根据下面的内容写一篇技术博客,要求增加更多的解释,让普通读者也能了解为什么这样做,具体怎么做 移植driver_monitoring_system里的MobileNet到RK3588 一、背景二、操作步骤2.1 下载源码2.2 Tensorflow转成ONNX2.2.1 在x86上创建容器,安装依赖2.2.2 保存为saved-model2.2.3 sav…

低代码平台前端页面表格字段绑定与后端数据传输交互主要有哪些方式?华为云Astro在这方面有哪些方式?

目录 🔧 一、低代码平台中常见的数据绑定与交互方式 1. 接口绑定(API 调用) 2. 数据源绑定(DataSource) 3. 变量中转(临时变量 / 页面状态) 4. 数据模型绑定(模型驱动) 🌐 二、华为云 Astro 轻应用的实现方式 ✅ 1. 数据源绑定(API服务+API网关) ✅ 2. 变…

《doubao-lite-32k 模型缓存机制使用指南》

doubao-lite-32k 模型缓存机制使用指南 一、缓存概述 1. 缓存作用 doubao-lite-32k 模型的缓存(Session 缓存)主要用于多轮对话场景,实现以下功能: 存储历史对话信息(Token),避免重复传输上下文,减少计算资源消耗。 优化长上下文(最长 32K Token)处理效率,提升多…

量子计算突破:新型超导芯片重构计算范式

​​2024年IBM 1281量子比特超导芯片实现0.001%量子错误率&#xff0c;计算速度达经典超算2.5亿倍​​。本文解析&#xff1a; ​​物理突破​​&#xff1a;钽基超导材料使量子相干时间突破​​800μs​​&#xff08;提升15倍&#xff09;​​架构革命​​&#xff1a;十字形…

云计算 Linux Rocky day03(which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep)

云计算 Linux Rocky day03&#xff08;which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep&#xff09; 目录 云计算 Linux Rocky day03&#xff08;which、快捷键、mount、家目录、ls、alias、mkdir、rm、mv、cp、grep&#xff09;1.which找到命令所对应的程序…

负载均衡LB》》HAproxy

Ubuntu 22.04 安装HA-proxy 官网 资料 # 更新系统包列表&#xff1a; sudo apt update # 安装 HAproxy sudo apt install haproxy -y # 验证安装 haproxy -v # 如下图配置 Haproxy ##### 基于IP的访问控制 acl ctrl_ip src 172.25.254.1 172.25.254.20 192.168.0.0/24 #…

轻创业技术方案:基于格行双目摄像头的代理系统设计!低成本创业项目有哪些?2025轻资产创业项目排行榜前十名!0成本创业项目推荐!格行代理项目靠谱吗?

没本金&#xff0c;没资源&#xff0c;没人脉&#xff0c;想挣钱且有持续稳定的现金流&#xff0c;只有一条路就是轻创业&#xff01;这里说个表哥的真实创业故事。 我表哥90后&#xff0c;普通农村人&#xff0c;中专毕业跟朋友一起外出打工&#xff0c;刚开始也是吃喝玩乐不…

【推荐算法】Embedding+MLP:TensorFlow实现经典深度学习推荐模型详解

EmbeddingMLP&#xff1a;TensorFlow实现经典深度学习模型详解 1. 算法逻辑模型结构和工作流程关键组件 2. 算法原理与数学推导Embedding层原理MLP前向传播反向传播与优化 3. 模型评估常用评估指标评估方法 4. 应用案例&#xff1a;推荐系统CTR预测问题描述模型架构性能优化 5.…

黑马点评【基于redis实现共享session登录】

目录 一、基于Session实现登录流程 1.发送验证码&#xff1a; 2.短信验证码登录、注册&#xff1a; 3.校验登录状态: 4.session共享问题 4.1为什么会出现 Session 集群共享问题&#xff1f; 4.2常见解决方案 1. 基于 Cookie 的 Session&#xff08;客户端存储&#xff0…

Python读取阿里法拍网的html+解决登录cookie

效果图 import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from lxml import etreedef get_taobao_auct…