记一次曲折击穿通用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 渗透测试流程

  1. 前端代码审计 → 2. API探测 → 3. 系统指纹识别 → 4. 横向移动 → 5. 日志/配置分析 → 6. 二进制逆向 → 7. 功能点测试 → 8. 权限提升

5.2 特殊技巧

  • 受限环境下的信息收集方法
  • 通过历史记录重建系统路径
  • 前端加密登录的绕过技术
  • CGI二进制程序的快速分析方法
  • HEX编码参数的命令注入技巧

5.3 防御建议

  • 避免在前端实现敏感逻辑
  • 对CGI程序进行严格的输入验证
  • 禁用或保护调试功能接口
  • 使用标准加密方式而非简单哈希
  • 限制系统关键文件的读取权限

6. 附录:常用工具

  • 开发者工具(Chrome DevTools)
  • IDA Pro(二进制分析)
  • Cyberchef(编码分析)
  • 网络测绘工具
  • 命令注入测试payloads

本教学文档完整呈现了从信息收集到获取系统权限的全过程,重点突出了在特殊环境下的渗透测试方法和技巧。

通用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进行逆向工程 确认任意文件读取漏洞实现原理: 4.2 横向RCE获取 在同类型系统中发现"网络调试"功能 请求包结构分析: 参数为HEX编码,解码后注入命令: 成功获取系统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 本教学文档完整呈现了从信息收集到获取系统权限的全过程,重点突出了在特殊环境下的渗透测试方法和技巧。