记一次曲折击穿通用CGI的小fight
字数 1059 2025-09-04 23:22:12
通用CGI系统渗透测试实战教学
1. 初始发现与信息收集
1.1 前端代码审计
- 发现前端JavaScript代码混淆但包含敏感信息
- 通过控制台分析加密登录流程
- 识别出系统使用CGI架构(二进制应用)
1.2 API探测
- 对API进行未授权测试
- 发现未授权任意文件读取漏洞
- 示例请求路径:
/cgi-bin/xxx?file=/etc/passwd
2. 系统环境分析
2.1 受限Linux系统识别
- 常见系统文件缺失(如.bash_history、/proc/cmdline)
- /proc/cpuinfo内容为空
- 初步判断为定制化硬件系统(非标准Docker/k8s环境)
2.2 横向移动策略
- 通过测绘寻找同类型系统
- 在另一系统中获取完整bash_history
- 从中提取关键路径:
/home/***/(网站部署路径)
3. 配置文件与日志分析
3.1 关键文件发现
- requestlog文件分析(自定义日志格式)
- 识别潜在上传接口(后续验证无效)
- 用户配置文件分析(含疑似密码字段)
3.2 密码破解与登录
- 配置文件中的密码字段为MD5哈希
- 登录包分析发现前端使用MD5加密密码
- 通过开发者工具断点修改加密值实现未授权登录
4. 权限提升与突破
4.1 二进制逆向分析
- 下载并分析FCGI程序
- 使用IDA Pro进行逆向工程
- 确认任意文件读取漏洞实现原理:
// 伪代码示例 char* filepath = concatenate(param1, param2); if(all_params_not_empty) { return_file_contents(filepath); }
4.2 横向RCE获取
- 在同类型系统中发现"网络调试"功能
- 请求包结构分析:
{ "handle": "固定命令", "arguments": "编码参数" } - 参数为HEX编码,解码后注入命令:
| whoami - 成功获取系统shell权限
5. 关键技术与方法论总结
5.1 渗透测试流程
- 前端代码审计 → 2. API探测 → 3. 系统指纹识别 → 4. 横向移动 → 5. 日志/配置分析 → 6. 二进制逆向 → 7. 功能点测试 → 8. 权限提升
5.2 特殊技巧
- 受限环境下的信息收集方法
- 通过历史记录重建系统路径
- 前端加密登录的绕过技术
- CGI二进制程序的快速分析方法
- HEX编码参数的命令注入技巧
5.3 防御建议
- 避免在前端实现敏感逻辑
- 对CGI程序进行严格的输入验证
- 禁用或保护调试功能接口
- 使用标准加密方式而非简单哈希
- 限制系统关键文件的读取权限
6. 附录:常用工具
- 开发者工具(Chrome DevTools)
- IDA Pro(二进制分析)
- Cyberchef(编码分析)
- 网络测绘工具
- 命令注入测试payloads
本教学文档完整呈现了从信息收集到获取系统权限的全过程,重点突出了在特殊环境下的渗透测试方法和技巧。