fofa小白从基础到进阶
fofa入门:
FOFA 是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。
Fofa网站
https://fofa.info/
Fofa语法
fofa逻辑连接符
逻辑连接符 |
具体含义 |
= |
匹配,=””时,可查询不存在字段或者值为空的情况 |
== |
完全匹配,==””时,可查询存在且值为空的情况 |
&& |
与 |
|| |
或者 |
!= |
不匹配,!=””时,可查询值为空的情况 |
~= |
正则语法匹配专用(高级会员独有,不支持body) |
() |
确认查询优先级,括号内容优先级最高 |
fofa常见语法
首先我们可以了解它有那些关键字。
比如body、title、domain这些都是我们经常要用到的,还有一些组合符号,也是我们经常要用到的。我们对这些理解之后就可以正常使用了。
比如:我们使用title="beijing"
然后我们就可以在它的后面加入一些组合语法,进行联合查询。如:&& body domain。
当然也可以配合icon进行定位。
title="baidu" && body="baidu" && icon_hash="443881024"
还可以使用cert进行定位某站的相关资产。
搜索页面标题中含有“后台管理”关键词的网站和IP地址
title="后台管理"
搜索HTTP响应头中含有“flask”关键词的网站和IP地址
header="flask"
搜索根域名中带有“baidu.com”的网站
domain="baidu.com"
搜索域名中带有”login”关键词的网站
host="login"
搜索开放3389端口的ip
fofa查询某个域名:
比如搜索:domain="xxx.com".搜索xxx所有子域名
进一步收集,如下图,有各种规则,点击直接自动添加语法进行数据筛选,其中的分类包括:
如类型分布、年份、特征、国家/地区排名、端口排名、Server排名、协议排名、操作系统排名、网站标题排名、证书持有者排名、证书有效性、ASN排名、组织排名、TCP/UDP、IPV4/IPV6等等,可以查找到自己想要的资产,举一个例子,其他操作具体自行尝试。
比如:你要搜某个域名的相关信息。
输入之后,可以配合左边的一些提示,进行查看是否有你要找的相关资产,然后点一下就加到了你的搜索语法
当中。
比如我点了产品规则第一条之后,它就输出了语法。
domain="xxx.com" && product=="apilayer-Caddy"筛选端口,也是可以组合使用的,还可以筛选国家/地区/市/区/县等。
domain="xxx.com" && product=="apilayer-Caddy" && port="80"
fofa语法进阶
1.查找组件漏洞
查找可能存在log4j漏洞的组件
app="Log4j2"
当然还可以搜索其它的一些组件漏洞。
app="APACHE-ActiveMQ"
app="Jenkins"
app="RabbitMQ"
app="jeewms"
app="APACHE-Skywalking"
app="Struts2"
app="APACHE-Shiro"
app="JEECMS"
2.查找开源靶场
app="DVWA"
这个就可以省掉了我们搭建环境的环节。
3.搜索某某城市的教育网站
"edu." && region="Beijing"
4.使用Fofa搜索开放的Python服务
server="SimpleHTTP"
5.搜索文件上传
在前端进行文件上传时,Form表单需要设置
<form action="****" method="post" enctype="multipart/form-data">
文件选择时,input标签的格式为:
<input type="file" name="****" />
结合这两个特性,就可以使用FOFA发现页面的文件上传接口,如:
body="method=\"post\" enctype=\"multipart/form-data\"" && body="<input type=\"file\""
5.配合指纹识别的方式进行fofa搜索
很多cms是通过一些cms特有的图标、body、title等等,那么我们可以通过此用法反推fofa搜索语句,类似指纹识别,具体可以参考https://x.hacking8.com/post-383.html,里面有4000行指纹和对应的识别代码脚本
可以看到识别规则会包含一些逻辑运算符,原作者只使用了正则来粗略的处理,感觉误报会很多,于是我用“后缀表达式”的方法来识别这些运算符,感觉算是可以完美处理这些规则了。
支持 body=”” titile=”” 这些语法,支持 && || ( ) 等的运算符。同时也把sqlite数据导出为json格式,然后自己也加了一些识别规则。
[
{
"name": "Dell-Printer",
"rule": "title=\"Dell Laser Printer\"",
"program": ""
},
{
"name": "HP-OfficeJet-Printer",
"rule": "title=\"HP Officejet\" || body=\"align=\"center\">HP Officejet\"",
"program": ""
},
{
"name": "Biscom-Delivery-Server",
"rule": "body=\"/bds/stylesheets/fds.css\" || body=\"/bds/includes/fdsJavascript.do\"",
"program": ""
},
{
"name": "DD-WRT",
"rule": "body=\"style/pwc/ddwrt.css\"",
"program": ""
},
{
"name": "ewebeditor",
"rule": "body=\"/ewebeditor.htm?\"",
"program": ""
},
{
body="bds/includes/fdsJavascript.do"
6.获取免费的代理池
body="get all proxy from proxy pool"
body="miner start"
7.搜索一些蜜罐/CS等
(header="uc-httpd 1.0.0" && server="JBoss-5.0") || server="Apache"
蓝队可以根据fofa采集的一些cs,进行反制措施。
protocol="beacon" || protocol="cobaltstrike"
(app="COBALTSTRIKE-团队服务器" || app="COBALTSTRIKE-beacon") && is_honeypot="false"
8.搭配未授权访问漏洞快速打点:
语法如下: - 低调求发展 - 老牌第三方民间网络安全交流平台! _+ |; e: f% a `$ |: Y9 q
- protocol="MongoDB" && banner="asserts"
- protocol="Zookeeper" && port="2181" && banner="version" | 低安全" [$ x" Y" \/ b.
- app="Elasticsearch" && port="9200" && body="name"
- app="Kibana" && port="5601" && body="basic license" S4 X5 W/ [3 D
- app="hadoop" && banner="/cluster"
- protocol="dubbo" && banner="dubbo"
- "Jupyter Notebook" && port="8888" && title="home" && status_code="200"
9.搜寻真实ip地址
使用fofa搜索证书可以查找同类证书网站,还可以查找真实ipwww.t00ls.com6 V% h1 b( X4 S0 v% V M# q
搜索使用某一证书的特定IP段内主机信息,说人话就是如果要获取某一企业(证书)在指定IP段里面托管了多少服务,当然也可以改成指定host被解析到多少主机上(某种程度上可以判断CDN(理论上哈哈))这样的话就可以在某些大型对抗活动中,在资产信息收集中就可以扩展很多面了)www.t00ls.com6 I: N8 @& q1 V
网站的网址左边有个小锁一样的东西,此处可以查看证书和序列号,通过序列号进制转换可以查找cert="phpinfo.me"
以xx网站为例,我们去查找https,我们看一下其证书序列号
然后这一串字符是16进制字符,我们需要将其调整为10进制。
我找的这个网站是没有cdn的,所以它的ip就是它的真实ip。。
10.找同框架网站
例子,查找thinkphp的网站
搜索HTTP响应头中含有"thinkphp"关键词的网站
fofa高阶语法分享
用于寻找属于百度的网站
fofa_query:cert.is_valid=true && cert.subject="Beijing Baidu Netcom Science Technology Co., Ltd"
搜索特定地区特定时间段且存在NFS文件服务免认证访问资产(仅要ip数据)
protocol="nfs" && (country="CN" && region!="HK" && region!="TW" && region!="MO") && banner="\x80\x00\x00\x18\x89\xd3\xd4" && after="2021-12-15" && is_domain=false
搜索IPV6资产
搜索某域名IPV6资产(排除干扰、蜜罐数据)
is_ipv6=true && (domain="qq.com" || cert.subject="qq.com") && is_fraud=false && is_honeypot=false
搜索非教育网的IPV6资产信息(仅获取有域名信息的资产)
is_ipv6=true && country="CN" && is_domain=true && region!="HK" && host!=".edu.cn"
还有很多用法等着大家自己来摸索呢,我今天的分享就到这里了。
最后还可以配合一些采集工具使用,可以高效率地进行信息收集。
fofax:https://github.com/xiecat/fofax
fofa_viewer:https://github.com/wgpsec/fofa_viewer
FofaMap:https://github.com/asaotomo/FofaMap
总结:
我说我很水,表姐说她不信,这篇文用了我大半天的功夫才完成,既要写文字,还得截图,善良的我还默默的排了排版。
REF:
https://github.com/xiecat/fofax/issues/14
- 点赞
- 收藏
- 关注作者
评论(0)