信息收集之FOFA工程师的养成

admin 2022年8月28日23:03:59评论1,202 views字数 5973阅读19分54秒阅读模式

        最近一直在打HW,这段时间让我对之前就听过的一句话更加印象深刻了,那就是----渗透的本质是信息收集。我一直在好奇为什么同样的浏览器,同样的时间,大佬总是能轻而易举的找到后台,找到shiro,找到OA系统,自己却什么都找不到,因此抽时间对FOFA语法进行了收集和整理,下面的语法有些是自己之前看公众号号收藏的,有些是在网上找到高频语法,还有一些是大佬们用的语法被我收集下来了,后面还会继续收集,因为渗透的本质是信息收集。

一、FOFA介绍

0x01 FOFA简介

         随着网络安全的普及,黑客的攻击手段也日新月异,越来越多的企业对网络安全产品与服务的需求有了新的变化。那么,在险象丛生的互联网世界之中企业如何能够更加有效的保护自己的网络空间资产呢?FOFA(https://fofa.so)给出了相应的解决方案。与传统扫描相比,企业更需要一款能够根据特征、检索条件迅速进行全网资产匹配的搜索引擎。“佛法无边”通常比喻神通广大,无所不能,企业用户终于可以安心的“抱佛脚”了,FOFA可以迅速进行网站资产匹配,加快后续工作进程,如漏洞影响范围分析,应用分布统计,应用流行度排名统计等;当前版本覆盖服务数量为7089366102个,覆盖网站数量523362748个,覆盖规则数量为45937条。

0x02 FOFA特点

(1):支持API查询接口,便于进行程序间的自动化查询、处理功能,进行进一步的业务分析,用法如下:所有调用都需要提供身份信息,主要是email和key,email主要是注册和登陆时填写的email,key需要用户到个人中心获取32位的hash值,即为API KEY。

信息收集之FOFA工程师的养成

将上面的两个信息填入api接口中,即可获取json格式的数据。

(2):支持下载功能:搜索到结果之后可在右侧选择下载功能,可下载搜索到的所有数据,下载的格式支持CSV,JSON,XML格式,方便程序调用进行全网扫描。

0x03 FOFA使用场景

         例如Apache出来了一个高危漏洞,受影响的版本号为2.4.23,我们需要去本公司可能受此漏洞影响的Apache服务器,那么我们可以使用高级查询语句server=="Apache/2.4.23"&&domain="xxx.com",搜索结果即为本公司域名下的所有子域名可能存在Apache2.4.23版本漏洞的URL,安全人员可以对结果进行检查,及时修复漏洞。

二、FOFA的工作原理

         有些人觉得不需要关心Fofa的工作原理,我只需要找到我想要的东西就行。其实你可以找到一部分渗透中目标的信息,通过title搜索目标的信息大家都会,你能搜到别人也能搜到,你能打下来别人也肯定能打下来,那么我们该怎么找别人找不到的资产呢?这就需要你去深入理解Fofa的工作机制。

0x01 FOFA是什么

         fofa的收录是基于端口扫描的收录,底层原理就类似一个扫全网的zmap加上各种指纹识别的脚本和规则来维护的,基于:IP、端口、指纹、部分域名子域名的关系数据库。

0x02 什么东西可以被FOFA收录

上面说过了,fofa是基于IP端口来决定什么可以入库,什么东西不能库,也不可能入得了库的。
举个例子

例子

是否会被收录

解释

111.111.111.111:80

IP、端口两要素

111.111.111.111:80/test/test.html

仅会收录和目录返回结果,二级目录不会收录,fofa不会进行目录扫描

http://baidu.com:80

可能

某些特定情况下,可能会扫到baidu.com对应的IP,并且该IP未作针对性防护

http://baidu.com:80/test/test.html

可能(概率很小)

唯一一种可能的情况就是/test/目录单独解析到某个IP,或服务由某个IP节点提供

         上面列举了一些可能被收录的和不会被收录的资产,fofa搜索开始之前就应该了解,自己搜索什么可以搜到东西,而搜索什么不可能找到东西。

0x03 Title&Header&Body&Html的关系

(1):Title

Title顾名思义就是网站的标题,那么我们仔细观察一下常见的标题构成要素。根据标题构成自己手动分词!

查找尽可能多的XX市XX医院资产,我们可能会这样搜索:

title = "XX市XX医院"

        但是这样有一个弊端,对于有些标题为"XX医院"的某些资产也可能是XX市XX医院的资产,但是我们就无法获取这部分资产信息。因此我们可以这样搜索:

title = "XX市" && title = "XX医院"

          这条规则比上面的规则可以匹配到更多的资产,但是会搜索到目标之外的结果"XX市XX医院与AA医院合作系统"所以搜索的时候拆分title来搜索可以获得更多的搜索结果和更大的搜索范围,但是可能会带来脏数据,需要我们人工辨别是否为目标所属资产。

          为什么下面这条命令会搜索到更多的内容呢?举个例子来说,比如我们要搜索"北京市协和医院",第一条语句就是这样的,我们会搜索title="北京市协和医院",这样的话,所有title里面有"北京市协和医院"的资产都会被搜到,但是如果有一个资产是"北京市顺义区协和医院"或者"北京市第二协和医院"这样的标题就不会被搜到;第二条语句会这样搜索,title="北京市" && title="协和医院",这样的话凡是标题里面带有北京市和协和医院的网站都会被找到,比如说北京市顺义协和医院、北京市第二协和医院分院等都会被搜索到。

注意:"||"是或者的意思,如:

title = "北京市" || title = "协和医院"

         这条语句表示的就是标题里面包含XX市或者某某医院的,比如北京市人民政府可能也会被收录进去,因为满足第一个条件,西安市协和医院可能也会被搜索出来,因为满足第二个条件。

"!="是不属于的意思,"=="是属于的意思。

(2):Header/Body

需要注意的点和Title类似,不做过多解释。

(3):HTML

         当我们分别查找title、header、body的关键字的时候总觉得太麻烦,能不能直接搜索一次就包含所有的搜索结果呢?答案是肯定的。

<html><head><title>首页 - XX管理系统</title></head><body><p>body welcome to my web</p><p>user:</p><p>pass:</p></body><footer>版权信息:XX市XX医院<footer></html>

         上面的代码可以看到,footer里面包含我们的目标关键字,但是fofa中并没有专门搜索footer的语法,那么我们怎么把这个结果搜索到呢?

如下代码就可以了:

"XX市XX医院"

         上面这个代码虽然官方没有解释,但是测试是可以搜索整个source code==里面的关键字的。
         需要注意的是,这个语法会搜到很多垃圾数据,有多多呢?根据网站类型来说,很多仿冒的网站、新闻网站、色情网站都会插入大量辣鸡数据增加搜索引擎收录的概率,这也会影响我们搜索结果的筛选。有没有办法过滤掉这些辣鸡数据呢?有办法,实验country来限定国家,使用region来限制区域。

"XX市XX医院" && country="CN" && region!="HK"

         看一眼这个语法,应该不用解释了,过滤掉容易出现垃圾网站的地区,只要中国的结果,其中去掉香港的相关网站,这样会过滤掉很多垃圾数据。
其他一些语法的组合自己尝试吧:

title="登陆" && "XX市" && "XX医院" && country="CN" && region!="HK"title="管理" && "XX市" && "XX医院" && country="CN" && region!="HK"title="系统" && "XX市" && "XX医院" && country="CN" && region!="HK"title="测试" && "XX市" && "XX医院" && country="CN" && region!="HK"等等···

三、FOFA语法介绍

         首先FOFA作为一个搜索引擎,我们要熟悉它的查询语法,类似google语法,FOFA的语法也是简单易懂,主要分为检索字段以及运算符,所有的查询语句都是由这两种元素组成的。目前支持的检索字段包括:domain,host,ip,title,server,header,body,port,cert,country,city,os,appserver,middleware,language,tags,user_tag等等,支持的逻辑运算符包括:= ,==,!= ,&&,||。了解了检索字段和逻辑运算符之后,就基本掌握了FOFA的用法了。例如搜索title字段中存在后台的网站,我们只需要在输入栏中输入title="后台",输出的结果即为全网title中存在后台两个字的网站,对于黑客而言,可以利用得到的信息可以继续进行渗透攻击,对于网站的后台进行密码暴力破解,密码找回等等攻击行为,这样就可以轻松愉快的开始一次简单渗透攻击之旅,而企业用户也可以利用得到的信息进行内部的弱口令排查等等,防范于未然。

下面为大家举例介绍目前支持的所有检索字段的用法:

0x01 domain

搜索QQ的所有子域名

domain="qq.com"

信息收集之FOFA工程师的养成

0x02 host

搜索所有带qq.com的域名

host="qq.com"

信息收集之FOFA工程师的养成

0x03 ip

搜索某个IP上的相关信息

ip="58.63.236.248"

信息收集之FOFA工程师的养成

搜索某个IP段的相关信息

ip="58.63.236.248/24"

信息收集之FOFA工程师的养成

0x04 title

搜索title包含有”漏洞”的IP

title="漏洞"

信息收集之FOFA工程师的养成

0x05 header

搜索HTTP响应头中含有“thinkphp”关键词的网站和IP

header="thinkphp"

信息收集之FOFA工程师的养成

0x06 body

搜索html正文中含有“管理后台”关键词的网站和IP

body="管理后台"

信息收集之FOFA工程师的养成

0x07 port

搜索开放某个端口的网站

port="3389"

信息收集之FOFA工程师的养成

0x08 cert

搜索包含某个证书的网站

cert="phpinfo"

信息收集之FOFA工程师的养成

0x09 after

         搜索指定日期后的网站,对于fofa来说,如果不指定日期,搜索出来的只是今年的网站,因此可以使用after来指定一个年限,这样就可以搜索到某一年后的所有网站。

after 1111-1-1

信息收集之FOFA工程师的养成

四、常用的FOFA语法

0x01 查看后台登录

body="admin" && server="tomcat"

          这个语句的查询结果是各种各样的登录后台(服务器为tomcat的后台),这个语句虽然不是很有趣,但是闲着无聊的时候搜着玩一玩,可以提交个高危漏洞。

信息收集之FOFA工程师的养成

0x02 查看供暖监控系统

body="s1v13.htm"

信息收集之FOFA工程师的养成

0x03 查询阿里云某段Webshell

body="webshell ->http://{ip}:{port}/?cmd=ifconfig"

         这个语句也很有趣,可用来查询 阿里云某网段Webshell,body语法可用于检索页面源代码中特定字样,存在此问题的机器多为 Aliyun Server,通过使用此处 FOFA Dork 检索出的机器可以通过构造特殊请求(Linux命令),对服务器执行命令,服务器会将命令执行后的结果通过页面进行回显,从而进一步掌控服务器。

0x04 获取免费的代理池

body="get all proxy from proxy pool"

         这个语法可以用来获取免费的代理池,针对的是别人所获取的一些免费代理的工具

信息收集之FOFA工程师的养成

0x05 查询Shadowsocks-Manager登录界面(一种VPN)

body="indeterminate" &&body="MainController" && header="X-Powered-By: Express"

这个语法可用来查询 Shadowsocks-Manager登录界面。

信息收集之FOFA工程师的养成

0x06 寻找目录遍历漏洞

body="Directory listing for" || title="Index of /" || body="转到父目录"

这个语法可以查询目录遍历漏洞,可能作用不是很大,但是可以用来找一些敏感数据。

信息收集之FOFA工程师的养成

0x07 多个条件寻找网站

((host="baidu.com" || title="百度") && country="CN") && region!="HK"

         这条语句主要是可以通过||来进行或选择,在查询网站时可以将多个并列条件放在括号中进行合并查询,可能会出现更多的内容。

信息收集之FOFA工程师的养成

0x08 寻找shiro

app="Apache-Shiro"header="rememberMe=deleteMe"header="shiroCookie"city="Beijing"&&(header="deleteme"||app="Apache-Shiro"||header="shiroCookie")&&title="北京"&&after="1111-1-1"

         上面三条语句都是可以搜索shiro的,也可以将三条语句合并起来,形成第四条语句,这样就会更加全面,使用after也会出现从1111年1月1日之后的所有网站数据。

信息收集之FOFA工程师的养成

0x09 寻找失陷主机

body="miner.start("&&header!="Mikrotik HttpProxy"&&country=CN)

通过搜索代理可以发现已经失陷的主机,这些主机可能会是挖矿主机。

信息收集之FOFA工程师的养成

0x10 寻找Solr

app="Solr"

信息收集之FOFA工程师的养成

0x11 搜索通达OA

body="10点停电"&&after="1111-1-1"&&city="Beijing"

         这条语句十分有意思,在通达OA的body里面有一行注释写着10点停电,这也可以作为一个指纹来进行搜索,但是这个只是指定版本,并不能搜到所有版本的通达OA。

信息收集之FOFA工程师的养成

信息收集之FOFA工程师的养成

原文始发于微信公众号(想走安全的小白):信息收集之FOFA工程师的养成

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月28日23:03:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   信息收集之FOFA工程师的养成http://cn-sec.com/archives/886312.html

发表评论

匿名网友 填写信息