FOFA(技巧)是个好东西,真希望人人都有

0x01 前言

本文将介绍FOFA,探讨其在网络安全中的作用。将讨论FOFA的功能、语法和实践,文末包含彩蛋福利。

0x02 FOFA?

FOFA是一款网络空间测绘的搜索引擎,旨在帮助用户以搜索的方式查找公网上的互联网资产。简单的来说就是网络安全中的”谷歌”,不同的是,这些数据不仅包括像谷歌一样的网页,还包括像摄像头、打印机、数据库、操作系统等资产。

网络空间测绘可以被认为是网络空间的“地图”。就像谷歌地图或高德地图通过卫星图像对地形进行测绘,网络空间测绘也是通过技术探针对全球网络资产进行探测。但fofa是基于IP和端口去发现资产,因此有些资产是发现不了的,类似于二级目录下的网页大概率会被收录不了

0x03 基础语法

基础语法在FOFA官网处,这里全部贴过来做个保留,可以直接跳过这个部分,等到用到的时候再查阅

高级搜索

逻辑连接符 具体含义
= 匹配,当设置为=""时,可查询不存在字段或者值为空的情况。
== 完全匹配,当设置为==""时,可查询存在且值为空的情况。
&&
ll
!= 不匹配,当设置为!=""时,可查询值为空的情况。
*= 模糊匹配,使用*或者?进行搜索,比如banner*="mys??"(个人版及以上可用)。
() 确认查询优先级,括号内容优先级最高。

关于建站软件的搜索语法请参考:组件列表

基础类(General)

语法 例句 描述
IP ip="1.1.1.1"
ip="220.181.111.1/24"
ip="IPv6"
分别通过单一IPv4地址、IPv4C段、单一IPv6地址进行查询
端口 port="6379" 通过端口号进行查询
域名 domain="qq.com" 通过根域名进行查询
主机 host=".fofa.info" 通过主机名进行查询
操作系统 os="centos" 通过操作系统进行查询
服务器 server="Microsoft-IIS/10" 通过服务器进行查询
自治系统号 asn="19551" 通过自治系统号进行搜索
组织 org="LLCBaxet" 通过所属组织进行查询
是否拥有域名 is_domain=true
is_domain=false
筛选拥有域名的资产/筛选没有域名的资产
是否为IPv6 is_ipv6=true
is_ipv6=false
筛选是IPv6的资产/筛选是IPv4的资产

标记类(SpecialLabel)

语法 例句 用途说明
app app="Microsoft-Exchange" 通过FOFA整理的规则进行查询
fid fid="sSXXGNUO2FefBTcCLIT/2Q==" 通过FOFA聚合的站点指纹进行查询
product product="NGINX" 通过FOFA标记的产品名进行查询
category category="服务" 通过FOFA标记的分类进行查询
type type="service"
type="subdomain"
筛选协议资产
筛选服务(网站类)资产
cloud_name cloud_name="Aliyundun" 通过云服务商进行查询
is_cloud is_cloud=true
is_cloud=false
筛选是云服务的资产
筛选不是云服务的资产
is_fraud is_fraud=true
is_fraud=false
筛选是仿冒垃圾站群的资产
筛选不是仿冒垃圾站群的资产
is_honeypot is_honeypot=true
is_honeypot=false
筛选是蜜罐的资产
筛选不是蜜罐的资产

协议类(type=service)

语法 例句 用途说明
protocol protocol="quic" 通过协议名称进行查询
banner banner="users" 通过协议返回信息进行查询
base_protocol base_protocol="udp"
base_protocol="tcp"
查询传输层为udp协议的资产
查询传输层为tcp协议的资产

网站类(type=subdomain)

语法 例句 用途说明
title title="beijing" 通过网站标题进行查询
header header="elastic" 通过响应标头进行查询
header_hash header_hash="1258854265" 通过http/https响应头计算的hash值进行查询
body body="网络空间测绘" 通过HTML正文进行查询
body_hash body_hash="-2090962452" 通过HTML正文计算的hash值进行查询
js_name js_name="js/jquery.js" 通过HTML正文包含的JS进行查询
js_md5 js_md5="82ac3f14327a8b7ba49baa208d4eaa15" 通过JS源码进行查询
cname cname="ap21.inst.siteforce.com" 通过别名记录进行查询
cname_domain cname_domain="siteforce.com" 通过别名记录解析的主域名进行查询
icon_hash icon_hash="-247388890" 通过网站图标的hash值进行查询
status_code status_code="402" 筛选服务状态为402的服务(网站)资产
icp icp="京ICP证030173号" 通过HTML正文包含的ICP备案号进行查询
sdk_hash sdk_hash=="Mkb4Ms4R96glv/T6TRzwPWh3UDatBqeF" 通过网站嵌入的第三方代码计算的hash值进行查询

地理位置(Location)

语法 例句 用途说明
country country="CN"
country="中国"
通过国家的简称代码或中文名称进行查询
region region="Zhejiang"
region="浙江"
通过省份/地区的英文名称或中文名称进行查询
city city="Hangzhou" 通过城市英文名称进行查询

证书类

语法 例句 用途说明
cert cert="baidu" 通过证书进行查询
cert.subject cert.subject="OracleCorporation" 通过证书的持有者进行查询
cert.issuer cert.issuer="DigiCert" 通过证书的颁发者进行查询
cert.subject.org cert.subject.org="OracleCorporation" 通过证书持有者的组织进行查询
cert.subject.cn cert.subject.cn="baidu.com" 通过证书持有者的通用名称进行查询
cert.issuer.org cert.issuer.org="cPanel,Inc." 通过证书颁发者的组织进行查询
cert.issuer.cn cert.issuer.cn="SynologyInc.CA" 通过证书颁发者的通用名称进行查询
cert.is_valid cert.is_valid=true
cert.is_valid=false
筛选证书有效性的资产
cert.is_match cert.is_match=true
cert.is_match=false
筛选证书和域名匹配性的资产
cert.is_expired cert.is_expired=true
cert.is_expired=false
筛选证书过期状态的资产
jarm jarm="15af977ce25de452b96affa2addb1036" 通过JARM指纹进行查询
tls.version tls.version="TLS1.3" 通过tls的协议版本进行查询
tls.ja3s tls.ja3s="15af977ce25de452b96affa2addb1036" 通过tls的ja3s指纹进行查询

时间类(Lastupdatetime)

语法 例句 用途说明
after after="2023-01-01" 筛选某一时间之后有更新的资产
before before="2023-12-01" 筛选某一时间之前有更新的资产
after&before after="2023-01-01"&&before="2023-12-01" 筛选某一时间区间有更新的资产

独立IP语法

独立IP系列语法,不可和上面其他语法共用

语法 例句 用途说明
port_size port_size="6" 筛选开放端口数量等于6个的独立IP
port_size_gt port_size_gt="6" 筛选开放端口数量大于6个的独立IP
port_size_lt port_size_lt="12" 筛选开放端口数量小于12个的独立IP
ip_ports ip_ports="80,161" 筛选同时开放不同端口的独立IP
ip_country ip_country="CN" 通过国家的简称代码进行查询独立IP
ip_region ip_region="Zhejiang" 通过省份/地区英文名称进行查询独立IP
ip_city ip_city="Hangzhou" 通过城市英文名称进行查询独立IP
ip_after ip_after="2021-03-18" 筛选某一时间之后有更新的独立IP
ip_before ip_before="2019-09-09" 筛选某一时间之前有更新的独立IP

0x04 奇淫技巧

划重点,这里结合实战经验介绍一下常用的FOFA用法

批量发现资产

在平时的漏洞挖掘中,若发现漏洞,都可以尝试通过FOFA搜索,因为这个模板很有可能是一些通用的建站模板,这里举一个之前挖的EDUsrc案例,开局是一个APP如图,还有一个注册功能,图片没体现出来:

注册后,来到个人中心,绕过ssl pinning后抓包,修改UserId参数越权遍历出全系统用户信息,泄露身份证,手机号等,至此高危到手:

通过数据包获取到了域名为:target.com,直接访问到了一个APP的下载页面:

F12查看网页特征,直接FOFA搜索网页特征body="为全体师生提供咨询、生活....综合服务",这个地方要根据实际的情况选择语法进行搜索,比如搜索特别的js名称,favicon.ico等,最终通过FOFA搜到资产,刷到了60+Rank分

说明一下,下载的第一个APP有注册功能,有的相同APP但没有注册功能,在刷分过程中遇到这种情况怎么办,:

  • 1、开发者删除了前端页面的注册功能,但是通过其他APP的注册页面获取到数据包,替换域名请求也是能够直接注册的。
  • 2、跳过注册,直接替换越权数据包中的域名,如果目标APP开发者对认证信息使用弱校验,凭证通用也是能够验证通过的。
  • 3、通过信息收集去获取帐号。

关于这个打法,企业src也是适用的,若你在A网站发现了未授权漏洞,你通过FOFA规则搜索出来的资产也大概率是存在未授权漏洞的,这个时候就能赏金乘n了。

发现脆弱资产

这是某次运营商众测,通过FOFA搜索目标网站的favicon图标,即:icon_hash="1471194169",逐个点击通过Burpsuite的插件被动扫描成功捡漏BurpShiroPassiveScan,使用ShiroAttack2命令执行:

后面发现打偏了,只能CNVD+1了:

找福利

通过FOFA找福利网站,这里以ChatGPT为例,由于需要魔法上网才能使用,所以很多人选择搭建一些第三方的ChatGPT平台,比如这个项目:
chatgpt-web

通过FOFA语法找到网站特征:

GET到类似网站fid="qRHEiUKnaLogboLxIe3H1w=="

实际应用中,是需要花点心思构造网站特征,语法越详细搜索到资产越符合要求。

其他操作

除了这些操作,还可以利用fofa:

  • 找DVWA靶场:title="DVWA"
  • SQLi-LABS靶场:title="SQL Injections"
  • 看看黑客们都用啥工具:body="Directory listing for /" && body="dirsearch",这里工具可以替换为BurpSuite等
  • 阿里云key:body="AccessKeyId" && body="AccessKeySecret" && body="Expiration"

0x05 彩蛋放送

彩蛋一

最近搭建了一个FOFA在线查询WEB版本,可以供一些没有开通FOFA会员的师傅使用,当然还是建议有条件的师傅去官网开通会员支持华顺信安:

关注公众号回复:FOFA,即可获取,限前50位师傅哈

彩蛋二

活动内容:用FOFA找到博客真实IP
活动网址:sanshiok.com
奖励内容:前三位师傅分别奖励💰33,22,11现金红包奖励
参与方式:直接将你找到的真实IP发送给公众号,每位师傅只能回答一次,要三思噢

免责声明

免责声明:本博客的内容仅供合法、正当、健康的用途,切勿将其用于违反法律法规的行为。如因此导致任何法律责任或纠纷,本博客概不负责。谢谢您的理解与配合!

微信公众号

本文链接:

https://sanshiok.com/archive/13.html

# 最新文章