信息收集组合拳之从废弃接口中寻找漏洞
字数 1231 2025-08-05 08:19:40

信息收集组合拳之从废弃接口中寻找漏洞 - 详细教学文档

一、工具准备与环境配置

1. OneForAll - 子域名与资产收集工具

  • 项目地址: https://github.com/shmilylty/OneForAll
  • 功能: 通过域名收集网址、子域名和IP地址
  • 安装方法:
    git clone https://github.com/shmilylty/OneForAll.git
    cd OneForAll
    pip install -r requirements.txt
    

2. fscan - 内网扫描工具

  • 项目地址: https://github.com/shadow1ng/fscan
  • 功能: 内网资产发现、漏洞扫描与弱口令爆破

3. JSFinder - JS文件与URL收集工具

  • 项目地址: https://github.com/Threezh1/JSFinder
  • 功能: 从JS文件中提取URL和子域名

二、完整工作流程

第一步:使用OneForAll进行初始信息收集

  1. 准备目标文件:

    • 创建targets.txt文件,每行一个目标域名
    • 示例内容:
      example.com
      test.org
      
  2. 运行扫描:

    python oneforall.py --targets targets.txt run
    
  3. 结果处理:

    • 扫描结果保存在results/目录下
    • 需要提取IP地址并格式化:
      • 原始IP可能为一行多个,用逗号分隔
      • 需要转换为每行一个IP且去重
  4. 使用Python脚本处理IP结果:

    #!/usr/bin/env python
    # coding:utf-8
    
    # 把同一行的ip换行,然后写进result.txt的文件里
    with open('ip.txt','r',encoding='utf-8') as readlist:
        for dirs in readlist.readlines():
            with open('result.txt','a',encoding='utf-8') as writelist:
                b = dirs.replace(",", '\n')
                writelist.write(b)
    
    # 去除重复ip,然后把结果写进only.txt文件里
    with open('result.txt','r',encoding='utf-8') as readlist:
        lines_seen = set()
        for line in readlist.readlines():
            if line not in lines_seen:
                lines_seen.add(line)
                with open('only.txt','a',encoding='utf-8') as writelist:
                    writelist.write(line)
    

第二步:使用fscan进行端口扫描

  1. 准备IP文件:

    • 使用上一步生成的only.txt作为输入
  2. 运行全端口扫描:

    fscan64.exe -hf ip.txt -p 1-65535 -o result.txt
    

第三步:使用JSFinder收集JS文件中的URL

  1. 准备目标文件:

    • 创建targets.txt文件,包含URL列表
  2. 运行扫描:

    python JSFinder.py -f targets.txt -d -ou JSurl.txt -os JSdomain.txt
    
  3. 输出结果:

    • JSurl.txt: 包含从JS中提取的URL
    • JSdomain.txt: 包含从JS中提取的子域名

第四步:筛选含有参数的URL

  1. 使用Python脚本筛选:
    #!/usr/bin/env python
    # coding:utf-8
    
    # 字符串中有"?"且不在字符串的结尾的就写入result.txt中
    with open('JSurl.txt','r',encoding='utf-8') as readlist:
        for dirs in readlist.readlines():
            if "?" in dirs:
                re = dirs.find("?")
                a = len(dirs)-2  # 判断"?"是否在最后一个字符
                if re < a:
                    with open('result.txt','a',encoding='utf-8') as writelist:
                        writelist.write(dirs)
    
    # 去除result.txt中的重复字符串
    with open('result.txt','r',encoding='utf-8') as readlist:
        lines_seen = set()
        for line in readlist.readlines():
            if line not in lines_seen:
                lines_seen.add(line)
                with open('only.txt','a',encoding='utf-8') as writelist:
                    writelist.write(line)
    

第五步:SQL注入漏洞检测

  1. 使用sqlmap批量扫描:
    python sqlmap.py -m urls.txt --batch
    
    • urls.txt: 包含上一步筛选出的带参数URL

第六步:寻找废弃接口与敏感端点

  1. 常见敏感接口模式:

    /registerSuccess.do
    /getALLUsers
    /deleteuser
    /api/admin/v1/users/all
    
  2. 常见跳转参数:

    toUrl=
    login_url=
    register_url=
    redirect_url=
    load_url=
    proxy_url=
    file_url=
    jump_url=
    

三、高级技巧与注意事项

  1. 历史接口挖掘:

    • 使用Wayback Machine等工具获取历史URL
    • 检查GitHub等代码托管平台可能泄露的旧接口
  2. API端点测试:

    • 测试HTTP方法(GET/POST/PUT/DELETE)的权限控制
    • 检查接口版本控制(如v1/v2)中的旧版本
  3. 信息泄露检查:

    • 测试不带认证的/admin /api等路径
    • 检查响应头中的敏感信息
  4. 自动化改进:

    • 将整个流程编写为shell脚本自动化执行
    • 使用并行处理提高扫描效率

四、防御建议

  1. 开发层面:

    • 彻底下线不再使用的接口
    • 对废弃接口返回404而非302重定向
    • 实施严格的权限控制
  2. 运维层面:

    • 定期审计API端点
    • 监控异常访问模式
    • 使用WAF防护已知漏洞
  3. 安全测试:

    • 在发布前进行全面的接口测试
    • 定期进行黑盒与白盒安全测试

通过这套组合拳,可以有效地从废弃接口和历史遗留系统中发现潜在的安全漏洞,特别是在常规测试已经"测烂"的情况下,这种方法往往能发现意想不到的安全问题。

信息收集组合拳之从废弃接口中寻找漏洞 - 详细教学文档 一、工具准备与环境配置 1. OneForAll - 子域名与资产收集工具 项目地址 : https://github.com/shmilylty/OneForAll 功能 : 通过域名收集网址、子域名和IP地址 安装方法 : 2. fscan - 内网扫描工具 项目地址 : https://github.com/shadow1ng/fscan 功能 : 内网资产发现、漏洞扫描与弱口令爆破 3. JSFinder - JS文件与URL收集工具 项目地址 : https://github.com/Threezh1/JSFinder 功能 : 从JS文件中提取URL和子域名 二、完整工作流程 第一步:使用OneForAll进行初始信息收集 准备目标文件 : 创建 targets.txt 文件,每行一个目标域名 示例内容: 运行扫描 : 结果处理 : 扫描结果保存在 results/ 目录下 需要提取IP地址并格式化: 原始IP可能为一行多个,用逗号分隔 需要转换为每行一个IP且去重 使用Python脚本处理IP结果 : 第二步:使用fscan进行端口扫描 准备IP文件 : 使用上一步生成的 only.txt 作为输入 运行全端口扫描 : 第三步:使用JSFinder收集JS文件中的URL 准备目标文件 : 创建 targets.txt 文件,包含URL列表 运行扫描 : 输出结果 : JSurl.txt : 包含从JS中提取的URL JSdomain.txt : 包含从JS中提取的子域名 第四步:筛选含有参数的URL 使用Python脚本筛选 : 第五步:SQL注入漏洞检测 使用sqlmap批量扫描 : urls.txt : 包含上一步筛选出的带参数URL 第六步:寻找废弃接口与敏感端点 常见敏感接口模式 : 常见跳转参数 : 三、高级技巧与注意事项 历史接口挖掘 : 使用Wayback Machine等工具获取历史URL 检查GitHub等代码托管平台可能泄露的旧接口 API端点测试 : 测试HTTP方法(GET/POST/PUT/DELETE)的权限控制 检查接口版本控制(如v1/v2)中的旧版本 信息泄露检查 : 测试不带认证的/admin /api等路径 检查响应头中的敏感信息 自动化改进 : 将整个流程编写为shell脚本自动化执行 使用并行处理提高扫描效率 四、防御建议 开发层面 : 彻底下线不再使用的接口 对废弃接口返回404而非302重定向 实施严格的权限控制 运维层面 : 定期审计API端点 监控异常访问模式 使用WAF防护已知漏洞 安全测试 : 在发布前进行全面的接口测试 定期进行黑盒与白盒安全测试 通过这套组合拳,可以有效地从废弃接口和历史遗留系统中发现潜在的安全漏洞,特别是在常规测试已经"测烂"的情况下,这种方法往往能发现意想不到的安全问题。