| name | web-feature-search |
| description | 通过MCP工具分析目标网站技术特征,生成符合FOFA、Hunter、Google语法规范的搜索语句,并明确各语句适用场景与预期搜索范围。 |
| license | MIT |
Web Feature Search 操作指南
一、前置准备
- 工具环境:确保已安装Maltego Community Edition(MCP)或指定MCP工具,且配置了基础网络访问权限(可访问目标URL、解析域名/IP)。
- 目标信息:明确待分析的目标URL(需包含协议,如https://demo.com),若有辅助信息(如已知IP/端口)可一并补充。
二、核心操作步骤
步骤1:通过MCP工具提取网站技术特征
1.1 基础特征提取
通过MCP工具访问目标URL,提取以下核心技术特征,需确保信息准确性:
| 特征类别 | 具体提取项 |
|---|
| 网络层特征 | 目标IP/IP段、开放端口、协议类型(HTTP/HTTPS/FTP等)、SSL/TLS版本/证书信息 |
| 服务器特征 | 服务器类型及版本(如Nginx 1.21.6、Apache 2.4.54)、响应头(Server/Set-Cookie/Content-Type等) |
| 应用层特征 | Web框架(如Spring Boot 2.6.7、Django 4.0)、编程语言(PHP/Java/Python)、JavaScript库版本(如jQuery 3.6.0) |
| 页面特征 | 页面标题(标签内容)、特定路径(如/login、/admin)、登录表单字段(如username/password/verify_code)
|
1.2 扩展特征提取
- 网站图标(favicon.ico)的URL及哈希值(通过附件脚本生成);
- 自定义Cookie名称、Session ID格式;
- 独有的HTML标签/注释、接口返回特征(如固定JSON字段);
- 响应状态码、重定向规则。
步骤2:生成favicon.ico哈希值
通过以下脚本生成ico哈希值,补充至特征库:
使用Skill下的ico_hash.py脚本
2.1 本地文件生成
python ico_hash.py --ico-file ./favicon.ico
2.2 远程URL生成
python ico_hash.py --ico-url https://demo.com/favicon.ico
2.3 输出格式示例
FOFA: icon_hash="706913071"
Hunter: web.icon=="4eeb8a8eb30b70af511dcc28c11a3216"
步骤3:构造各平台搜索语句
3.1 FOFA搜索语句构造规则
- 语法规范:遵循FOFA官方语法(如
protocol="https" && port="443" && icon_hash="xxx");
- FOFA.md FOFA网络空间检索语法:基础匹配 / 逻辑 / 通配符规则,网站内容 / 域名 / ICP 备案 / 应用组件 / HTTP 头 / IP 端口地理 / SSL 证书等多模块检索指令,企业备案资产 / 登录页资产 / 特定组件端口地区资产等高频组合检索实战。
- 示例:
- 基础版:
protocol="https" && port="443" && server="nginx" && path="/quark-fast-foundation/login"
- 精准版(叠加ico哈希):
icon_hash="706913071" && title="后台管理系统"
- 网页正文内容检索,提起特征:
body="管理员账号:admin"
- 证书主体包含指定字符串
cert="example.com"
- 参考 FOFA.md 文档,根据其中的搜索语法,给出可能存在的搜索语句。
- 适用场景说明:需注明语句适用场景(如“匹配使用Nginx服务器+指定登录路径的HTTPS资产”)、预期搜索范围(如“全网/特定IP段”)。
3.2 Hunter搜索语句构造规则
- 语法规范:遵循Hunter官方过滤语法(如
header.server="nginx" && port="443");
- Hunter.md Hunter 网络空间检索语法:基础匹配 / 逻辑 / 通配符规则,网站内容 / 域名 / ICP 备案 / 应用组件 / HTTP 头 / IP 端口地理 / SSL 证书等多模块检索指令,企业备案资产 / 登录页资产 / 特定组件端口地区资产等高频组合检索实战示例
- 示例:
- 基础版:
header.server="Apache 2.4.54"
- 精准版(叠加ico哈希):
web.icon=="4eeb8a8eb30b70af511dcc28c11a3216" && ip="192.168.1.0/24"
- 网页正文内容检索,提起特征:
web.body="后台管理"
- 匹配与目标域名特征相似的资产:web.similar="qianxin.com:443"
- 参考 Hunter.md 文档,根据其中的搜索语法,给出可能存在的搜索语句。
- 适用场景说明:需注明语句适用场景(如“匹配特定IP段内使用Apache服务器+登录表单的资产”)、预期搜索范围(如“国内/全球”)。
3.3 Google/Bing搜索语句构造规则
- 语法规范:使用高级搜索运算符(site/inurl/intitle/intext等);
- 必含要素:核心运算符 + 关键路径/标题/特征词(至少1项);
- 示例(仅参考,包括但不限于):
- 基础版(匹配站点+路径):
site: demo.com inurl:/quark-fast-foundation/login
- 精准版(叠加标题+框架):
intitle: "后台管理系统" intext: "Spring Boot" inurl: /admin
步骤4:结果保存为Markdown文件
4.1 保存规则
| 规则项 | 具体要求 |
|---|
| 保存路径 | 固定保存至当前项目根目录下的web_feature_results文件夹(若无则自动创建); |
| 文件命名规范 | 网站特征_目标域名_时间戳.md(例:网站特征_demo.com_202603191530.md); |
| 编码格式 | UTF-8(避免中文乱码); |
| 覆盖规则 | 同名文件不覆盖,自动在时间戳后追加序号(例:网站特征_demo.com_202603191530_1.md); |
4.2 Markdown文件内容模板
# 目标网站技术特征与搜索语句
## 1. 基础信息
- 分析目标:{目标URL/IP}
- 分析时间:{YYYY-MM-DD HH:MM:SS}
- 数据来源:MCP工具特征提取
## 2. 技术特征清单
| 特征类别 | 具体内容 | 特征类型 |
|----------------|--------------------------------------------------------------------------|----------|
| 网络层特征 | IP:{xxx},端口:{xxx},协议:{xxx},SSL版本:{xxx} | 必选 |
| 服务器特征 | 服务器类型:{xxx},响应头:{xxx} | 必选 |
| 应用层特征 | Web框架:{xxx},编程语言:{xxx},JS库版本:{xxx} | 必选 |
| 页面特征 | 标题:{xxx},关键路径:{xxx},表单字段:{xxx} | 可选 |
| 扩展特征 | ico哈希:{xxx},Cookie名称:{xxx} | 可选 |
## 3. 各平台搜索语句
### 3.1 FOFA
- 基础版:{FOFA基础语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
- 精准版:{FOFA精准语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
### 3.2 Hunter
- 基础版:{Hunter基础语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
- 精准版:{Hunter精准语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
### 3.3 Google/Bing
- 基础版:{Google基础语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
- 精准版:{Google精准语句}
- 适用场景:{xxx}
- 预期范围:{xxx}
- 精准度:{高/中/低}
## 4. 异常说明(若无则填“无”)
{工具访问失败/特征缺失/其他异常说明}
4.3 执行指令
- 按上述模板填充所有占位符(
{}内内容),确保信息完整,其中3. 各平台搜索语句下的语句,根据实际情况进行扩展,不局限于基础和精确;
- 检查当前项目目录:
- 生成Markdown文件并保存至指定路径,输出保存成功提示(例:
✅ 结果已保存至:./web_feature_results/网站特征_demo.com_202603191530.md);
- 若保存失败(如权限不足),输出明确异常提示(例:
❌ 保存失败:当前项目目录无写入权限,请检查权限配置)。
三、结果输出规范(含保存结果)
- 控制台/交互界面输出:
- 简要特征清单 + 核心搜索语句 + 保存文件路径;
- 本地文件输出:
- 完整Markdown文件(按4.2模板),保存至指定目录;
- 异常输出:
- 若保存失败,优先提示异常原因,同时仍在界面输出完整结果(避免数据丢失)。
四、异常处理说明(补充保存相关)
- 若当前项目目录无读写权限:
- 提示“请授予当前目录读写权限,或手动创建web_feature_results文件夹后重试”;
- 备选方案:临时保存至系统临时目录(如Windows:%TEMP%,Linux:/tmp),并告知用户具体路径;
- 若自动创建文件夹失败:
- 提示“请手动在项目根目录创建web_feature_results文件夹,再执行保存操作”;
- 若字符编码异常(中文乱码):
- 强制使用UTF-8编码保存,并在文件开头标注
<!-- encoding: UTF-8 -->。