f*f*前端搜索接口js逆向(附cnvd通用资产收集脚本)
字数 1277 2025-08-10 09:43:39

FOFA前端搜索接口JS逆向分析与CNVD通用资产收集脚本教学文档

0x01 简介

本教学文档详细解析了FOFA前端搜索接口的JS逆向过程,并附带一个实用的CNVD通用资产收集脚本。该脚本的核心原理是通过在FOFA上搜索可能存在通用产品的公司,判断网站标题数目以及独立IP数达到一定条件时将该标题以及公司名称导出。

应用场景

  • 挖掘CNVD证书:可导出注册资金大于5000w的公司名称进行通用系统收集
  • 资产发现:快速识别企业使用的通用系统
  • 安全研究:分析互联网资产分布情况

0x02 CNVD通用资产收集脚本部署与使用

环境准备

  1. 部署代理池(必需)
  2. 安装Python第三方库:
    pip install -r requirements.txt
    

使用步骤

  1. 将目标公司名称存入company.txt文件(每行一个公司名)
  2. 启动脚本:
    python query_fofa_for_cnvd.py
    
  3. 结果将自动保存到result.xlsx文件中

项目地址

https://github.com/onis4n/query_fofa_for_cnvd

0x03 FOFA前端搜索接口JS逆向分析

逆向流程

  1. 抓包分析

    • 打开浏览器开发者工具(F12)
    • 切换到【网络】选项卡
    • 重新访问FOFA站点
    • 找到目标请求
  2. 定位关键JS文件

    • 点击【发起程序】列的js文件
    • 发现请求定位到static子域名下的js文件
    • 在文件中搜索"sign"参数(可能有多个结果)
    • 尝试搜索其他参数名如"app_id"
  3. 关键发现

    • 在35ab0ab.js文件中找到3个"app_id"匹配项
    • 发现RSA私钥信息
    • 打下断点进行调试
  4. 签名构造分析

    • 确认构造请求的代码位置
    • 跟进函数,获取签名明文r
    • 分析签名过程

签名机制详解

  1. 已知信息

    • 明文:r
    • 签名算法:RSA
    • 使用私钥:RSA私钥
    • 哈希算法:RSA-SHA256
    • 密文编码:base64
    • 填充模式:PKCS#1 v1.5(最常见的RSA签名填充模式之一)
  2. RSA签名原理

    • RSA是一种非对称加密算法,用于加密和数字签名
    • 加密与签名的区别:
      • RSA加密:使用公钥加密
      • RSA签名:使用私钥加密
    • 验证时需使用RSA签名算法工具
  3. 签名流程

    明文 -> SHA256哈希 -> RSA私钥加密(PKCS#1 v1.5填充) -> Base64编码 -> 签名结果
    

0x04 技术要点总结

  1. JS逆向技巧

    • 优先搜索关键参数名(app_id, sign等)
    • 关注static子域名下的JS文件
    • 合理使用断点调试
    • 注意加密算法的常见实现模式
  2. RSA签名要点

    • 理解公钥/私钥的不同用途
    • 识别哈希算法(SHA256)
    • 注意填充模式(PKCS#1 v1.5)
    • 掌握Base64编码特征
  3. 资产收集优化

    • 通过公司规模筛选(如注册资金>5000w)
    • 基于标题和IP数的条件判断
    • 自动化结果导出(Excel格式)

0x05 扩展学习

  1. 进阶JS逆向

    • Webpack模块化分析
    • AST抽象语法树解析
    • 反调试技巧绕过
  2. 密码学应用

    • 不同RSA填充模式比较
    • 哈希算法识别技巧
    • 加密算法特征分析
  3. 资产收集扩展

    • 多搜索引擎整合
    • 资产关联分析
    • 自动化漏洞验证

本教学文档完整呈现了FOFA前端接口的逆向过程和CNVD资产收集脚本的使用方法,重点突出了JS逆向技巧和RSA签名机制的分析,可作为安全研究人员进行类似工作的参考指南。

FOFA前端搜索接口JS逆向分析与CNVD通用资产收集脚本教学文档 0x01 简介 本教学文档详细解析了FOFA前端搜索接口的JS逆向过程,并附带一个实用的CNVD通用资产收集脚本。该脚本的核心原理是通过在FOFA上搜索可能存在通用产品的公司,判断网站标题数目以及独立IP数达到一定条件时将该标题以及公司名称导出。 应用场景 挖掘CNVD证书:可导出注册资金大于5000w的公司名称进行通用系统收集 资产发现:快速识别企业使用的通用系统 安全研究:分析互联网资产分布情况 0x02 CNVD通用资产收集脚本部署与使用 环境准备 部署代理池(必需) 安装Python第三方库: 使用步骤 将目标公司名称存入 company.txt 文件(每行一个公司名) 启动脚本: 结果将自动保存到 result.xlsx 文件中 项目地址 https://github.com/onis4n/query_ fofa_ for_ cnvd 0x03 FOFA前端搜索接口JS逆向分析 逆向流程 抓包分析 打开浏览器开发者工具(F12) 切换到【网络】选项卡 重新访问FOFA站点 找到目标请求 定位关键JS文件 点击【发起程序】列的js文件 发现请求定位到static子域名下的js文件 在文件中搜索"sign"参数(可能有多个结果) 尝试搜索其他参数名如"app_ id" 关键发现 在35ab0ab.js文件中找到3个"app_ id"匹配项 发现RSA私钥信息 打下断点进行调试 签名构造分析 确认构造请求的代码位置 跟进函数,获取签名明文r 分析签名过程 签名机制详解 已知信息 明文:r 签名算法:RSA 使用私钥:RSA私钥 哈希算法:RSA-SHA256 密文编码:base64 填充模式:PKCS#1 v1.5(最常见的RSA签名填充模式之一) RSA签名原理 RSA是一种非对称加密算法,用于加密和数字签名 加密与签名的区别: RSA加密:使用公钥加密 RSA签名:使用私钥加密 验证时需使用RSA签名算法工具 签名流程 0x04 技术要点总结 JS逆向技巧 优先搜索关键参数名(app_ id, sign等) 关注static子域名下的JS文件 合理使用断点调试 注意加密算法的常见实现模式 RSA签名要点 理解公钥/私钥的不同用途 识别哈希算法(SHA256) 注意填充模式(PKCS#1 v1.5) 掌握Base64编码特征 资产收集优化 通过公司规模筛选(如注册资金>5000w) 基于标题和IP数的条件判断 自动化结果导出(Excel格式) 0x05 扩展学习 进阶JS逆向 Webpack模块化分析 AST抽象语法树解析 反调试技巧绕过 密码学应用 不同RSA填充模式比较 哈希算法识别技巧 加密算法特征分析 资产收集扩展 多搜索引擎整合 资产关联分析 自动化漏洞验证 本教学文档完整呈现了FOFA前端接口的逆向过程和CNVD资产收集脚本的使用方法,重点突出了JS逆向技巧和RSA签名机制的分析,可作为安全研究人员进行类似工作的参考指南。