f*f*前端搜索接口js逆向(附cnvd通用资产收集脚本)
字数 1277 2025-08-10 09:43:39
FOFA前端搜索接口JS逆向分析与CNVD通用资产收集脚本教学文档
0x01 简介
本教学文档详细解析了FOFA前端搜索接口的JS逆向过程,并附带一个实用的CNVD通用资产收集脚本。该脚本的核心原理是通过在FOFA上搜索可能存在通用产品的公司,判断网站标题数目以及独立IP数达到一定条件时将该标题以及公司名称导出。
应用场景
- 挖掘CNVD证书:可导出注册资金大于5000w的公司名称进行通用系统收集
- 资产发现:快速识别企业使用的通用系统
- 安全研究:分析互联网资产分布情况
0x02 CNVD通用资产收集脚本部署与使用
环境准备
- 部署代理池(必需)
- 安装Python第三方库:
pip install -r requirements.txt
使用步骤
- 将目标公司名称存入
company.txt文件(每行一个公司名) - 启动脚本:
python query_fofa_for_cnvd.py - 结果将自动保存到
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签名算法工具
-
签名流程
明文 -> SHA256哈希 -> RSA私钥加密(PKCS#1 v1.5填充) -> Base64编码 -> 签名结果
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签名机制的分析,可作为安全研究人员进行类似工作的参考指南。