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

URL混淆与权限绕过技术


一、漏洞原理
  1. 前后端路径解析逻辑不一致

    • 后端框架(Spring/Shiro)自动处理特殊字符(..///),但鉴权组件(如Filter)未规范化原始URI。

    • 示例/system/login/../admin被Filter误判为白名单路径/system/login,实际解析为/admin

  2. 后缀白名单机制

    • 对静态资源后缀(.json.css)的请求未校验权限,如/api/user.json绕过鉴权。

  3. 分隔符截断逻辑

    • 分号;分割参数导致后端忽略后续内容,如/admin;123仅校验/admin部分。


二、绕过技术分类
1. 资源后缀混淆
  • 静态后缀追加:

 GET /admin/main.css HTTP/1.1  # 利用白名单绕过鉴权

动态参数伪装

  •  GET /admin?callback=test.json HTTP/1.1  # 参数伪装为静态资源
2. 路径构造与编码
  • 目录遍历(../跳转):

 GET /system/login/../../admin HTTP/1.1  # 结合白名单路径绕过

URL编码混淆

 ​GET /system/%2e%2e/admin HTTP/1.1  # 编码`.`绕过过滤

多斜杠干扰

  •  GET ///admin//user HTTP/1.1  # 后端解析为`/admin/user`,但Filter未匹配
3. 协议特性与分隔符利用
  • 分号截断:

 GET /admin;%09/user HTTP/1.1  # 分号后内容被忽略

HTTP方法篡改

  •  HEAD /admin HTTP/1.1  # 后端仅校验POST/PUT方法
4. 标头伪造与参数控制
  • X-Original-URL滥用:

 GET /public-page HTTP/1.1  X-Original-URL: /admin  # 后端信任标头覆盖路径

参数提权

  •  POST /user/update HTTP/1.1  { "role_id": 2 }  # 后端未校验客户端提交的权限参数

三、实战案例
  1. Shiro权限绕过

    • 漏洞场景:构造/admin;%09绕过路径匹配逻辑。

      Payload:

  •  GET /admin;jsessionid=xxx HTTP/1.1  # 分号截断绕过鉴权

Spring Security配置缺陷

  • 漏洞场景antMatchers("/admin")未覆盖子路径,访问/admin//admin.json绕过。

  • 修复方案:使用/admin/**或启用mvcMatchers严格匹配。

路径编码绕过

  • 攻击过程:

    •  GET /%2e%2e/etc/passwd HTTP/1.1  # URL编码绕过过滤
    • 结果:成功读取系统敏感文件。


四、防御策略
  1. 路径规范化处理

    • 使用request.getServletPath()替代getRequestURI(),避免解析差异。

  2. 统一鉴权框架

    • 强制RBAC模型校验,禁止依赖单一维度(如URL或方法)。

  3. 后缀白名单限制

    • 动态接口禁用.json.css等静态资源后缀。

  4. 输入过滤与编码

    • 拦截../;%u等高危字符,解码后二次校验。

  5. 日志与监控

    • 记录含非标头(如X-Original-URL)的请求,告警异常路径访问。


五、Fuzz字典与工具
  • 常用Payload:

  •  ; . .. / // %2e %0a %0d %09 .json .css /..;/ /%2e%2e/
  • 自动化工具:

    • Burp Intruder:批量测试路径混淆组合。

    • FFuf:快速遍历后缀与编码变体。


核心总结

  1. 绕过技术核心

    • 利用分号截断、路径跳转、多斜杠干扰、编码混淆等手段制造前后端解析差异。

    • 伪造标头(如X-Original-URL)或参数篡改直接绕过权限校验。

  2. 框架特性风险

    • Shiro的分号解析逻辑、Spring Security的路径匹配缺陷是常见漏洞来源。

  3. 防御核心原则

    • 路径处理标准化、权限校验多维度化、输入过滤严格化。

http://www.xdnf.cn/news/294787.html

相关文章:

  • pta的cpp选择判断题
  • 【C语言编译】编译原理和详细过程
  • 数据库的原子事务
  • Cursor报错Your request has been blocked解决方案
  • JavaSE核心知识点01基础语法01-02(基本数据类型、运算符、运算符优先级)
  • 【信息系统项目管理师-论文真题】2006下半年论文详解(包括解题思路和写作要点)
  • 学习黑客Nmap 命令法诀
  • 深入浅出数据库的函数依赖关系
  • 数据库原理——E-R图的极速省流理解 例题解析
  • 编译与链接
  • APEX和AI Vector免费认证报名流程分享
  • 融智学核心范式的数学表述:融智学范式革命的总括性阐释——一场文明认知的量子跃迁
  • linux 交叉编译报错 ERROR: sdl2 requested but not found
  • Gradio全解20——Streaming:流式传输的多媒体应用(6)——构建视频流目标检测系统
  • 【NLP】29. 高效训练与替代模型:让语言模型更轻、更快、更强
  • 暂停线程的三种方式:join、sleep、yield
  • 教育应用场景下多智能体系统中交互模型的案例迁移
  • 大模型的监督学习和非监督学习
  • linux种文件名usr的含义是什么?
  • General Tutor 提示词延申分析
  • 11.施工监测
  • Gradio全解20——Streaming:流式传输的多媒体应用(4)——基于Groq的带自动语音检测功能的多模态Gradio应用
  • 18. 四数之和-python刷题-灵神
  • 1257: 【基础】马鞍数
  • 力扣hot100 (除自身以外数组的乘积)
  • Pinia状态管理工具速成
  • 认识并理解什么是链路层Frame-Relay(帧中继)协议以及它的作用和影响
  • 【C/C++】无锁编程——compare_exchange_strong
  • 第二章 - 软件质量
  • S100平台调试RS485/RS232