首页 > 其他分享 >pikachu靶场CSRF-post测试报告

pikachu靶场CSRF-post测试报告

时间:2024-10-17 10:19:46浏览次数:9  
标签:CSRF 提交 pikachu 修改 csrf POST getdata post

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、抓包使用burp生成csrf脚本

四、源代码分析

五、结论


一、测试环境

1、系统环境

渗透机:本机(127.0.0.1)

靶  机:本机(127.0.0.1)

2、使用工具/软件

Burp suite2024.7.2

测试网址:http://127.0.0.1/pikachu/pikachu/vul/csrf/csrfpost/csrf_post_login.php

二、测试目的

实现post请求方式页面的csrf攻击,修改页面内容。

三、操作过程

1、抓包使用burp生成csrf脚本

根据提示的用户,登录到会员中心,页面提交即可修改参数

如下就是提交修改的请求包,是post方式,参数在请求主体中

请求报文中,右键-->engagement tools-->generate CSRF Poc

生成csrf的利用代码

这个利用代码,使用表单提交了原本post请求中的参数,是html写的

可以手动修改提交的参数值,访问这个html页面即可提交到修改信息的页面

请求方法是post

我将csrf利用poc保存在根目录下

访问这个页面,只需要点击提交,即可修改用户的信息

点击提交,成功修改信息

四、源代码分析

<?php
/**
 * Created by runner.han
 * There is nothing new under the sun
 */

$SELF_PAGE = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);

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)){
//    echo "<script>alert('登录后才能进入会员中心哦')</script>";
    header("location:csrf_post_login.php");
}

$html1='';
if(isset($_POST['submit'])){
    if($_POST['sex']!=null && $_POST['phonenum']!=null && $_POST['add']!=null && $_POST['email']!=null){
        $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.='修改失败,请重试';

        }
    }
}

?>
……
<div class="page-content">

            <?php
            //通过当前session-name到数据库查询,并显示其对应信息
            $username=$_SESSION['csrf']['username'];
            $query="select * from member where username='$username'";
            $result=execute($link, $query);
            $data=mysqli_fetch_array($result, MYSQL_ASSOC);
            $name=$data['username'];
            $sex=$data['sex'];
            $phonenum=$data['phonenum'];
            $add=$data['address'];
            $email=$data['email'];

            $html=<<<A
<div id="per_info">
   <form method="post">
   <h1 class="per_title">hello,{$name},欢迎来到个人会员中心 | <a style="color:bule;" href="csrf_post.php?logout=1">退出登录</a></h1>
   <p class="per_name">姓名:{$name}</p>
   <p class="per_sex">性别:<input type="text" name="sex" value="{$sex}"/></p>
   <p class="per_phone">手机:<input class="phonenum" type="text" name="phonenum" value="{$phonenum}"/></p>    
   <p class="per_add">住址:<input class="add" type="text" name="add" value="{$add}"/></p> 
   <p class="per_email">邮箱:<input class="email" type="text" name="email" value="{$email}"/></p> 
   <input class="sub" type="submit" name="submit" value="submit"/>
   </form>
</div>
A;
            echo $html;
            echo $html1;

            ?>

只是将获取变量方式改为了post方式。页面对身份进行了验证,但没有校验身份的真实性,可能会被伪造身份。造成csrf攻击。

五、结论

csrf攻击的原理是服务器未设置身份校验,导致身份容易被冒用,造成越权修改信息、执行命令等操作。

对于身份校验,应启用对应策略,保证身份不会被冒用。

使用post方式提交,更安全一些,不会将参数暴露在url中。

标签:CSRF,提交,pikachu,修改,csrf,POST,getdata,post
From: https://blog.csdn.net/2301_79698171/article/details/142958394

相关文章

  • 本地运行vercel模板项目vercel/nextjs-postgres-auth-starter
    官方指南链接:https://vercel.com/templates/next.js/prisma-postgres-auth-starter创建项目create-next-appnpxcreate-next-appnextjs-typescript-starter--example"https://github.com/vercel/nextjs-postgres-auth-starter"进入nextjs-typescript-startercdnextj......
  • PostgreSQL中将对象oid和对象名相互转换
    文章目录PostgreSQL中将对象oid转为对象名数据库类型转换对应类型的oid对应关系创建测试数据将对象名转为oid类型转换关系测试示例PostgreSQL中将对象oid转为对象名使用pg的内部数据类型将对象oid转为对象名,可以简化一些系统视图的关联查询。数据库类型转换对应类......
  • pikachu靶场搭建
    写在前面“如果你想搞懂一个漏洞,比较好的方法是:你可以自己先制造出这个漏洞(用代码编写),然后再利用它,最后再修复它”。Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你......
  • 【CTF Web】Pikachu 不安全的url跳转 Writeup(URL重定向+代码审计)
    不安全的url跳转不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生"跳错对象"的问题。url跳转比较直接的危害是:–>钓鱼,......
  • 【CTF Web】Pikachu SSRF(curl) Writeup(SSRF+读取文件+探测端口)
    SSRF(Server-SideRequestForgery:服务器端请求伪造)其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据数据流:攻击者-----......
  • 从SQL Server过渡到PostgreSQL:理解模式的差异
    从SQLServer过渡到PostgreSQL:理解模式的差异 从SQLServer过渡到PostgreSQL:理解模式的差异前言随着越来越多的企业转向开源技术,商业数据库管理员和开发者也逐渐面临向PostgreSQL迁移的需求。虽然SQLServer和PostgreSQL共享许多数据库管理系统(RDBMS)的基本概念,但它们在处......
  • 配置supermap iportal数据库,银河麒麟arm架构SP3系统中离线编译安装postgres、postgis
     一、安装环境准备postgresql-11.2.tar.gz、postgis-2.5.0.tar.gz文件,geos-3.6.1-12.ky10.aarch64.rpm包,再准备一台有外网的机器。如果遇到缺少的包,去有外网的机器下载,再考到内网机器里安装。大部分安装都是编译安装,遵循配置、编译、安装这三步。注意安装后的软件目录postgre......
  • 如何用ajax发送post请求
    和get类似,稍作改动:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>AJAXPOST请......
  • 5.XSS-反射型(post)利用:获取cookie
    原理:文件路径:\pikachu\pkxss\xcookie\post.html将post.html文件,复制到皮卡丘的根路径下或者根下随意路径即可,并编辑文件需要修改以下两个地址,第一个地址是将原界面的样子链接过来,让用户认为是原界面,第二个是将cookie从数据库中提取出来的程序(注意和自己的目录相对应)基于域名配......
  • requests 模块 - post 请求
    1、post请求requests请求方法除了get请求方法外,还有其他方法,比如常用的post方法。post应用场景如下:(1)网页需要登录的情况。(2)需要给网页传输内容的情况。post用法和get用法一样,只是发送请求时需要加上data参数。2、代码示例importrequestsurl='https://fan......