抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 常见应用系统查询语法
app="Oracle-Weblogic_interface_7001" # 查找使用 Weblogic 的网站
app="CCTV-Cameras" # 查找使用九安视频监控的网站
app="奇安信-天擎" # 查找使用天擎的网站
app="Apache-Shiro" # 查找使用 shiro 的网站
app="struts2" # 查找使用 struts2 的网站
app="TongDa-OA" # 查找使用通达 OA 的网站
app="致远互联-OA" # 查找使用致远 OA 的网站
app="泛微-协同办公OA" # 查找使用泛微 OA 的网站
app="万户网络-ezOFFICE" # 查找使用万户 OA 的网站
app="ATLASSIAN-Confluence" # 查找使用 confluence 的网站
app="f5-BIGIP" # 查找使用 f5 的网站
header="X-Application-Context" # 查找Spring Boot框架
title="+ ID_VC_Welcome +" # 查找 Vcenter 的网站
app="Microsoft-Exchange" # 查找 Exchange 服务器
title="Outlook Web App" # 查找 OWA 界面
app="Microsoft-Exchange-Server-2010" # 查找 Exchange 2010 服务器

数据库资产查询

1
2
3
4
5
# 查找指定数据库的IP
protocol="mysql" # 查找使用MySQL的IP
protocol="mssql" # 查找使用MSSQL的IP
protocol="oracle" # 查找使用Oracle的IP
protocol="redis" # 查找使用Redis的IP

端口资产查询

1
2
3
4
# 查看指定开放端口的IP
port="3389" # 查找开放3389端口的主机
ports="1433,3306,3389" # 查找开放了1433,3306,3389端口的主机
ports=="1433,3306,3389" # 查找只开放了1433,3306,3389端口的主机

IP地址与网段查询

1
2
3
# 查看IP或网段信息
ip="220.181.38.148" # 查找指定IP的信息
ip="220.181.38.0/24" # 查找指定网段的信息

框架指纹识别语法表

框架名称 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的搜索语法可以帮助安全研究人员和渗透测试人员更高效地发现和识别互联网上的资产信息。通过组合使用不同的查询字段、逻辑运算符和通配符,可以构建精确的查询,满足各种复杂的资产收集需求。

注意:本文所列查询语法仅供安全研究和授权渗透测试使用,未经授权对系统进行渗透测试属于违法行为。

评论