Fofa语法常用语法整理
Fofa是一款网络空间资产搜索引擎,通过掌握其语法可以高效地发现互联网上的资产信息。本文整理了Fofa常用的查询语法和技巧,便于快速进行目标资产收集。
搜索语法的详细分析
Fofa 的搜索语法基于字段匹配和逻辑运算,支持多种查询方式。以下是详细的字段列表及其用途,基于公开资源整理:
字段 | 描述 | 示例 |
---|---|---|
host | 匹配主机名或域名 | host="example.com" |
domain | 匹配域名 | domain="example.com" |
ip | 匹配 IP 地址 | ip="192.168.1.1" |
port | 匹配端口号 | port="80" |
protocol | 匹配使用的协议 | protocol="http" |
title | 匹配网页标题 | title="Welcome to Example" |
body | 匹配网页正文内容 | body="Powered by WordPress" |
banner | 匹配服务器的 banner 或头信息 | banner="Apache/2.4.1 (Unix)" |
cert | 匹配证书相关信息,包括 is_valid 和 subject | cert.is_valid=true , cert.subject="*.example.com" |
country | 匹配资产所在国家 | country="US" |
asn | 匹配自治系统号 | asn="12345" |
fid | 匹配特征 ID(Feature ID),用于指纹识别 | fid="specific_fid_value" |
is_domain | 过滤具有域名的资产 | is_domain=true |
icon | 匹配具有特定图标的资产(如 favicon) | icon="favicon.ico" |
jarm | 匹配具有特定 JARM 指纹的资产(TLS 指纹识别) | jarm="specific_jarm_value" |
这些字段可以组合使用,创建复杂的查询。例如,title="WordPress" && body="wp-content"
用于查找使用 WordPress 的网站。
逻辑运算符与组合查询
Fofa 支持以下逻辑运算符,用于组合多个条件:
运算符 | 说明 | 示例 |
---|---|---|
&& |
AND 运算符,要求所有条件都满足 | title="WordPress" && body="wp-content" |
|| |
OR 运算符,只要任一条件满足即可匹配 | port="80" || port="443" |
! |
NOT 运算符,用于排除条件 | !country="US" |
这些运算符允许用户构建精确的查询,满足复杂的指纹识别需求。
模糊搜索与通配符
Fofa 支持模糊搜索,通过通配符扩展匹配范围,特别适用于处理不完整或变化的数据:
通配符 | 作用 | 示例 |
---|---|---|
* |
匹配零个或多个字符 | host*="test*.example.com" |
? |
匹配确切的一个字符 | banner*="5.?.*" |
模糊搜索在指纹识别中非常有用,例如匹配版本号或域名中的变体。研究表明,这种方法可以有效处理如 MySQL banner 中 “ubuntu” 被写为 “0ubuntu0” 的情况,增强查询的灵活性。
指纹识别与信息收集的实际应用
Fofa 的指纹识别功能依赖于预定义的指纹规则和用户自定义查询。以下是一些实际应用场景:
场景 | 查询语法 | 说明 |
---|---|---|
查找特定 CMS | body="WordPress" |
查找 WordPress 网站 |
协议识别 | protocol="snmp" |
查找使用 SNMP 协议的设备 |
版本匹配 | banner="mysql version" && banner*="5.5.*" |
查找 MySQL 5.5.x 版本的服务器 |
地理位置过滤 | country="US" |
查找美国的资产 |
证书验证 | is_domain=true && cert.is_valid=true |
确保资产具有有效域名和证书 |
此外,Fofa 提供聚合统计功能,如 “Fingerprint Ranking”(指纹排名)和 “Type Statistics”(类型统计),用户可以通过点击结果页面左侧的分类自动添加语法,进一步精炼搜索。
常见应用系统查询语法
1 | # 常见应用系统查询语法 |
数据库资产查询
1 | # 查找指定数据库的IP |
端口资产查询
1 | # 查看指定开放端口的IP |
IP地址与网段查询
1 | # 查看IP或网段信息 |
框架指纹识别语法表
框架名称 | Fofa 语法 | 中文描述 |
---|---|---|
Spring Boot | header="X-Application-Context" |
Spring Boot 应用通常包含此头部,适合查找 Java 后端应用。 |
Django | body="Django" 或 body="Django Version" |
Django 应用可能在错误页或内容中包含”Django”,建议用更具体字符串提高准确性。 |
Laravel | body="Whoops, looks like something went wrong." |
Laravel 默认错误页包含此提示,适合查找 PHP 框架网站。 |
ASP.NET Core | header="X-Powered-By" && header="ASP.NET" |
ASP.NET Core 应用常在头部显示”ASP.NET”,适合查找 .NET 相关网站。 |
Node.js (Express) | header="X-Powered-By" && header="Express" |
Express 应用常在头部显示”Express”,适合查找 Node.js 后端。 |
Ruby on Rails | header="X-Runtime" |
Rails 应用可能包含性能相关的”X-Runtime”头部,适合查找 Rails 网站。 |
Flask | body="Flask" |
Flask 应用可能在内容中包含”Flask”,适合查找 Python Web 应用。 |
Play Framework | header="X-Powered-By" && header="Play" |
Play Framework 应用常在头部显示”Play”,适合查找 Scala 或 Java 后端。 |
Struts | body="Struts" |
Struts 应用可能在内容中包含”Struts”,适合查找 Java Web 应用。 |
JSF (JavaServer Faces) | header="X-Powered-By" && header="JSF/" |
JSF 应用可能在头部显示”JSF/“,适合查找 Java EE 相关网站。 |
Grails | header="Server" && header="Jetty(" |
Grails 应用常使用 Jetty 服务器,头部可能显示”Jetty(“,适合查找 Groovy 网站。 |
Symfony | body="Symfony\\Component\\Debug\\Exception\\FatalErrorException" |
Symfony 错误页可能包含此字符串,适合查找 PHP 框架网站。 |
WordPress | body="WordPress" |
WordPress 应用通常在 meta 标签中包含”WordPress”,适合查找基于 WordPress 的网站。 |
Joomla! | body="Joomla!" |
Joomla! 应用通常在 meta 标签中包含”Joomla!”,适合查找基于 Joomla! 的网站。 |
Drupal | body="Drupal" |
Drupal 应用通常在 meta 标签中包含”Drupal”,适合查找基于 Drupal 的网站。 |
MediaWiki | body="MediaWiki" |
MediaWiki 应用通常在 meta 标签中包含”MediaWiki”,适合查找基于 MediaWiki 的网站。 |
phpBB | body="phpbb" |
phpBB 论坛通常在 HTML 中包含”phpbb”,适合查找 phpBB 论坛。 |
DotNetNuke | body="DotNetNuke" |
适合查找基于 DotNetNuke 的网站。 |
Adobe ColdFusion | body="headerTags.cfm" |
ColdFusion 应用可能在 HTML 注释中包含”headerTags.cfm”,适合查找 ColdFusion 应用。 |
Microsoft ASP.NET | body="__VIEWSTATE" |
ASP.NET 应用通常在表单中包含”__VIEWSTATE”,适合查找经典 ASP.NET 应用。 |
ZK | body="<!-- ZK" |
ZK 框架应用可能在 HTML 中包含”<!– ZK”,适合查找 ZK 框架应用。 |
Business Catalyst | body="<!-- BC_OBNW -->" |
Business Catalyst 应用可能在 HTML 中包含”“,适合查找 Business Catalyst 应用。 |
Indexhibit | body="ndxz-studio" |
Indexhibit 应用可能在内容中包含”ndxz-studio”,适合查找 Indexhibit 网站。 |
总结
掌握Fofa的搜索语法可以帮助安全研究人员和渗透测试人员更高效地发现和识别互联网上的资产信息。通过组合使用不同的查询字段、逻辑运算符和通配符,可以构建精确的查询,满足各种复杂的资产收集需求。
注意:本文所列查询语法仅供安全研究和授权渗透测试使用,未经授权对系统进行渗透测试属于违法行为。