**FofaMap_V1.1.3 国庆特别版【联动 Nuclei】| [FofaMap云查询版](https://github.com/asaotomo/FofaMap-Cloud)**
![image](https://user-images.githubusercontent.com/67818638/149505431-06fbc14b-ac0c-4ccb-a316-949fe08e9ee5.png)
<p align="center">
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-_red.svg"></a>
<a href="https://github.com/asaotomo/fofamap/issues"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat"></a>
<a href="https://github.com/sqlmapproject/sqlmap/actions/workflows/tests.yml"><img src="https://img.shields.io/badge/python-3.x-blue.svg"></a>
</p>
**好消息:FofaMap又可以正常使用了,感谢🙏大家一直以来对FofaMap的支持,我们将继续对FofaMap进行更新和维护。**
**[FofaMap](https://github.com/asaotomo/FofaMap)是一款基于Python3开发的跨平台FOFA数据采集器。用户可以通过修改配置文件,定制化的采集FOFA数据,并导出生成对应的Excel表格或TXT扫描目标。**
**[Nuclei](https://github.com/projectdiscovery/nuclei)是一款基于YAML语法模板的开发的定制化快速漏洞扫描器。它使用Go语言开发,具有很强的可配置性、可扩展性和易用性。**
**本次我们将Fofamap和Nuclei进行联动,通过Fofamap查询到资产目标后,自动调用Nuclei对发现目标进行漏洞扫描,实现资产探测到漏洞扫描的全流程漏洞发掘工作,极大的提升了白帽子挖掘SRC的效率。**
**一.安装说明**
1.工具使用**Python3**开发,请确保您的电脑上已经安装了**Python3**环境。
2.首次使用请使用 **python3 -m pip install -r requirements.txt** 命令,来安装必要的外部依赖包。
3.**fofa.ini**为Fofamap的配置文件,可以通过修改配置文件内容来定制化采集FOFA数据。
4.在使用该工具前,请先填写用户信息[userinfo]中的email和key,**fofa.ini**配置文件说明如下:
```
[userinfo]#用户信息
#注册和登录时填写的email
email = xxxxx@qq.com
#会员到个人资料可得到key,为32位的hash值
key = 001xxxxxxxxxxxxxxxxxxxxx8b2dc5
[size]#查询数量
#每页查询数量,默认为100条,最大支持10,000条/页
size = 100
[full]#查询范围
#默认搜索一年内的数据,指定为true即可搜索全部数据,false为一年内数据
full = false
[excel]
#当sheet_merge设置为on时,批量查询结果将汇聚到一个文件的多个sheet进行输出,设置为false时,每个查询结果将单独作为一个文件进行输出
sheet_merge = on
[fields]#查询内容选项
#默认查询内容为:ip、端口、网站标题、国家和城市
fields = ip,port,title,country,city
#fields可选项有:['host', 'title', 'ip', 'domain', 'port', 'country', 'province', 'city', 'country_name', 'header', 'server', 'protocol', 'banner', 'cert', 'isp', 'as_number', 'as_organization', 'latitude', 'longitude', 'structinfo','icp', 'fid', 'cname']
[page]#查询页数
#查询启始页数
start_page = 1
#查询结束页数
end_page = 2
[logger]#日志开关
#全局日志开关,开启后会默认输入软件执行日志到fofamap.log文件
logger = on
[fast_check]#网站存活检测(Beta)
#网站存活检测开关,默认开启,开启后系统会对查询到的网站目标进行快速存活性检测
check_alive = on
#设置检测爬虫的超时时间
timeout = 5
```
5.不同用户使用**Fofamap**调用FOFA全网资产收集与检索系统API查询次数如下:
**企业会员** 免费前100,000条/次
**高级会员** 免费前10000条/次
**普通会员** 免费前100条/次
**注册用户** 1F币(最多10,000条)/次
用户可以根据自己的账号类型设置对应的查询页数。
6.项目文件结构:
```
├── README.md ##使用说明
├── fofa.ini ##fofa配置文件
├── fofa.py ##fofa api调用类
├── fastcheck.py ##网站存活检测类(引入协程)
├── fofamap.py ##fofamap主程序
├── nuclei ##nuclei主程序,若nuclei主程序有更新,可去https://github.com/projectdiscovery/nuclei/releases下载替换
│ ├── linux ##linux版主程序
│ │ ├── nuclei_386
│ │ ├── nuclei_amd
│ │ ├── nuclei_arm
│ │ └── nuclei_armv6
│ ├── macos ##macos版主程序
│ │ ├── nuclei_amd
│ │ └── nuclei_arm
│ └── windows ##windows版主程序
│ ├── nuclei_386.exe
│ └── nuclei_amd.exe
├── nuclei.py ##nuclei api调用类
├── requirements.txt ##依赖包要求
```
7.适配情况:目前FofaMap春节特别版以及适配了**macOS、Windows、Kali Linux、Ubuntu**等操作系统。
**二.使用方法**
**1.-q 使用FOFA查询语句查询数据**
**关于命令说明:**
如果用户想要使用fofa联合查询语句,例如:**app="grafana" && country="US"**。
Linux和macOS用户直接使用python3 fofamap.py -q 'app="grafana" && country="US"'即可成功查询。
Windows用户因为系统原因,需要使用python3 fofamap.py -q "app=\\"grafana\\" && country=\\"CN\\""系统才可成功识别,即Windows用户需要对查询命令内部的"使用\进行转义,否则系统识别错误。
```
$ python3 fofamap.py -q 'title="Apache APISIX Dashboard"'
```
<img width="1007" alt="image" src="https://user-images.githubusercontent.com/67818638/149065065-205e1f0f-35e1-4c65-a80b-1c632f1f0f58.png">
**网站存活检测功能(Beta):**
用户可以在fofa.ini文件中修改fast_check模块下的check_alive值,当check_alive为on时,系统将会开启网站存活检测功能,该功能会对用户查询到的数据进行智能识别,筛选出开启http或https协议的网站,并对这些网站进行存活检测,生成检测结果。该功能可以帮助用户快速识别查询到的网站是否可以进行正常访问。
```
$ python3 fofamap.py -q 'title="Grafana"'
```
<img width="1007" alt="image" src="https://user-images.githubusercontent.com/67818638/226097116-849b9d6c-3b17-48c7-8714-8f5f022ec0b9.png">
如上图,在开启fast_check功能后,输出结果会增加Http Status Code一列,该列内容是本机访问对应网站时,服务器返回的状态码,我们可以通过该状态码,判定本机是否可以正常访问查询到的网站,建议将timeout值(默认为5s),超时时间设置越大,系统返回到结果将会越精准。
此外我们可通过-i参数筛选出指定的HTTP响应状态码,若要筛选多个状态码可用逗号隔开,如-i 200,403,500。
```
$ python3 fofamap.py -q 'app="Tomcat"' -i 200,403
```
<img width="1007" alt="image" src="https://user-images.githubusercontent.com/67818638/232236835-c1e6205f-965b-48f3-af1b-42fa99f43f37.png">
上图,我们通过-i参数,筛选出了含有Tomcat应用的网站中网站响应状态码为200和403的网站信息。
(PS:1.该功能目前为测试功能,在Python版本低于3.10的平台上运行可能会输出一些报错信息,但不影响总体结果的输出;2.该功能默认为关闭状态,需要启用该功能,请在fofa.ini文件中将check_alive的值由off改为on。)
**2.-hq 使用FOFAMAP查询Host聚合查询**
**关于命令说明:**
用户使用Host聚合查询模式时,系统可以根据当前的查询内容,生成聚合信息,host通常是ip,包含基础信息和IP标签。
```
$ python3 fofamap.py -hq 8.8.8.8
```
<img width="1375" alt="image" src="https://user-images.githubusercontent.com/67818638/221450671-ab53aeed-b436-4cd9-a99a-719b3222b3be.png">
**3.-cq 使用FOFAMAP查询统计聚合数据**
**关于命令说明:**
使用统计聚合功能,可以根据当前的查询内容,生成全球统计信息,当前可统计每个字段的前5排名。例如,我们使用下列命令统计全球范围内使用Redis应�