功能 • 安装 • 用法 • 配置 • 运行 Uncover • 加入 Discord
uncover 是一个 Go 语言封装的工具,利用知名搜索引擎的 API 快速发现互联网上暴露的主机。它专为自动化而设计,因此你可以查询它并将其结果与现有的管道工具一起使用。
uncover 需要 go1.21 才能成功安装。运行以下命令获取仓库:
go install -v github.com/projectdiscovery/uncover/cmd/uncover@latest
uncover -h
这将显示工具的帮助信息。以下是它支持的所有标志:
Usage:
./uncover [flags]
Flags:
INPUT:
-q, -query string[] 搜索查询,支持:stdin、file、config 输入(例如:-q 'example query',-q 'query.txt')
-e, -engine string[] 要查询的搜索引擎(shodan,shodan-idb,fofa,censys,quake,hunter,zoomeye,netlas,criminalip,publicwww,hunterhow,google,driftnet,daydaymap)(默认 shodan)
-asq, -awesome-search-queries string[] 使用出色的搜索查询来发现互联网上暴露的资产(例如:-asq 'jira')
SEARCH-ENGINE:
-s, -shodan string[] 对 shodan 的搜索查询(例如:-shodan 'query.txt')
-sd, -shodan-idb string[] 对 shodan-idb 的搜索查询(例如:-shodan-idb 'query.txt')
-ff, -fofa string[] 对 fofa 的搜索查询(例如:-fofa 'query.txt')
-cs, -censys string[] 对 censys 的搜索查询(例如:-censys 'query.txt')
-qk, -quake string[] 对 quake 的搜索查询(例如:-quake 'query.txt')
-ht, -hunter string[] 对 hunter 的搜索查询(例如:-hunter 'query.txt')
-ze, -zoomeye string[] 对 zoomeye 的搜索查询(例如:-zoomeye 'query.txt')
-ne, -netlas string[] 对 netlas 的搜索查询(例如:-netlas 'query.txt')
-cl, -criminalip string[] 对 criminalip 的搜索查询(例如:-criminalip 'query.txt')
-pw, -publicwww string[] 对 publicwww 的搜索查询(例如:-publicwww 'query.txt')
-hh, -hunterhow string[] 对 hunterhow 的搜索查询(例如:-hunterhow 'query.txt')
-gg, -google string[] 对 google 的搜索查询(例如:-google 'query.txt')
-on, -onyphe string[] 对 onyphe 的搜索查询(例如:-onyphe 'query.txt')
-df, -driftnet string[] 对 driftnet 的搜索查询(例如:-driftnet 'query.txt')
-ddm, -daydaymap string[] 对 daydaymap 的搜索查询(例如:-daydaymap 'query.txt')
CONFIG:
-pc, -provider string 提供者配置文件(默认 "$CONFIG/uncover/provider-config.yaml")
-config string 标志配置文件(默认 "$CONFIG/uncover/config.yaml")
-timeout int 超时时间(秒)(默认 30)
-rl, -rate-limit int 每秒发送的最大 HTTP 请求数
-rlm, -rate-limit-minute int 每分钟发送的最大请求数
-retry int 失败请求的重试次数(默认 2)
-proxy string 用于 uncover 的 HTTP 代理
OUTPUT:
-o, -output string 输出文件,用于写入找到的结果
-f, -field string 输出中显示的字段(ip,port,host)(默认 "ip:port")
-j, -json 以 JSONL(ines) 格式写入输出
-r, -raw 按远程 API 接收的原始格式写入输出
-l, -limit int 限制返回结果的数量(默认 100)
-nc, -no-color 禁用输出中的颜色
DEBUG:
-silent 仅在输出中显示结果
-version 显示项目版本
-v 显示详细输出
在 examples 目录中提供了将 uncover 作为库使用的示例。
默认的提供者配置文件应位于 $CONFIG/uncover/provider-config.yaml,并包含以下示例内容。
注意:API 密钥是必需的,必须在运行 uncover 之前配置好。
shodan:
- SHODAN_API_KEY_1
- SHODAN_API_KEY_2
censys:
- CENSYS_API_TOKEN_1:CENSYS_ORGANIZATION_ID_1
- CENSYS_API_TOKEN_2:CENSYS_ORGANIZATION_ID_2
fofa:
- FOFA_EMAIL_1:FOFA_KEY_1
- FOFA_EMAIL_2:FOFA_KEY_2
quake:
- QUAKE_TOKEN_1
- QUAKE_TOKEN_2
hunter:
- HUNTER_API_KEY_1
- HUNTER_API_KEY_2
zoomeye:
- ZOOMEYE_API_KEY_1
- ZOOMEYE_API_KEY_2
netlas:
- NETLAS_API_KEY_1
- NETLAS_API_KEY_2
criminalip:
- CRIMINALIP_API_KEY_1
- CRIMINALIP_API_KEY_2
publicwww:
- PUBLICWWW_API_KEY_1
- PUBLICWWW_API_KEY_2
hunterhow:
- HUNTERHOW_API_KEY_1
- HUNTERHOW_API_KEY_2
google:
- GOOGLE_API_KEY_1:Google_API_CX_1
- GOOGLE_API_KEY_2:Google_API_CX_2
onyphe:
- ONYPHE_API_KEY_1
- ONYPHE_API_KEY_2
driftnet:
- DRIFTNET_API_KEY_1
- DRIFTNET_API_KEY_2
daydaymap:
- DAYDAYMAP_API_KEY_1
- DAYDAYMAP_API_KEY_2
nerdydata:
- NERDYDATA_API_KEY_1
- NERDYDATA_API_KEY_2
当配置文件中为同一提供者指定了多个密钥/凭据时,每次执行将使用随机密钥。
或者,你也可以在 bash 配置文件中将 API 密钥设置为环境变量。
export SHODAN_API_KEY=xxx
export CENSYS_API_TOKEN=xxx
export CENSYS_ORGANIZATION_ID=xxx
export FOFA_EMAIL=xxx
export FOFA_KEY=xxx
export QUAKE_TOKEN=xxx
export HUNTER_API_KEY=xxx
export ZOOMEYE_API_KEY=xxx
export NETLAS_API_KEY=xxx
export CRIMINALIP_API_KEY=xxx
export PUBLICWWW_API_KEY=xxx
export HUNTERHOW_API_KEY=xxx
export GOOGLE_API_KEY=xxx
export GOOGLE_API_CX=xxx
export ONYPHE_API_KEY=xxx
export DRIFTNET_API_KEY=xxx
export DAYDAYMAP_API_KEY=xxx
export NERDYDATA_API_KEY=xxx
必需的 API 密钥可通过注册以下平台获取:Shodan、Censys、Fofa、Quake、Hunter、ZoomEye、Netlas、CriminalIP、Publicwww、Google [1]、[2]、Onyphe、Driftnet、DayDayMap 和 NerdyData。
uncover 支持多种方式进行查询,包括 stdin 或 q 标志,如果未指定引擎,默认使用 shodan 引擎进行搜索。
echo 'ssl:"Uber Technologies, Inc."' | uncover
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
107.180.12.116:993
107.180.26.155:443
104.244.99.31:443
161.28.20.79:443
104.21.8.108:443
198.71.233.203:443
104.17.237.13:443
162.255.165.171:443
12.237.119.61:443
192.169.250.211:443
104.16.251.50:443
使用包含每行多个搜索查询的 文件 输入运行 uncover。
cat dorks.txt
ssl:"Uber Technologies, Inc."
title:"Grafana"
uncover -q dorks.txt
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
107.180.12.116:993
107.180.26.155:443
104.244.99.31:443
161.28.20.79:443
104.21.8.108:443
198.71.233.203:443
2607:7c80:54:3::74:3001
104.198.55.35:80
46.101.82.244:3000
34.147.126.112:80
138.197.147.213:8086
uncover 支持多个搜索引擎,默认使用 shodan,可以使用 -e 标志对任意或所有搜索引擎运行相同的查询。
echo jira | uncover -e shodan,censys,fofa,quake,hunter,zoomeye,netlas,criminalip,driftnet,daydaymap
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
176.31.249.189:5001
13.211.116.80:443
43.130.1.221:631
192.195.70.29:443
52.27.22.181:443
117.48.120.226:8889
106.52.115.145:49153
13.69.135.128:443
193.35.99.158:443
18.202.109.218:8089
101.36.105.97:21379
42.194.226.30:2626
uncover -shodan 'http.component:"Atlassian Jira"' -censys 'services.software.product=`Jira`' -fofa 'app="ATLASSIAN-JIRA"' -quake 'Jira' -hunter 'Jira' -zoomeye 'app:"Atlassian JIRA"' -netlas 'jira' -criminalip 'Jira' -driftnet 'field=product-tag:jira' -daydaymap 'Jira'
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
104.68.37.129:443
162.222.160.42:443
34.255.84.133:443
52.204.121.166:443
23.198.29.120:443
136.156.180.95:443
54.194.233.15:443
104.117.55.155:443
149.81.4.6:443
54.255.218.95:443
3.223.137.57:443
83.228.124.171:443
23.202.195.82:443
52.16.59.25:443
18.159.145.227:443
104.105.53.236:443
uncover 支持 shodan-internetdb API,用于拉取给定 IP/CIDR 输入的可用端口。
当输入为 IP/CIDR 时,shodan-idb 用作 默认 引擎,否则使用 shodan 搜索引擎。
echo 51.83.59.99/24 | uncover
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
51.83.59.1:53
51.83.59.1:10000
51.83.59.2:53
51.83.59.3:25
51.83.59.3:80
51.83.59.3:389
51.83.59.3:443
51.83.59.3:465
51.83.59.3:587
51.83.59.3:993
uncover 支持使用 driftnet API 快速查找给定 IP/CIDR 输入的开放端口。
echo 8.8.8.8/20 | uncover -e driftnet
__ ______ _________ _ _____ _____
/ / / / __ \/ ___/ __ \ | / / _ \/ ___/
/ /_/ / / / / /__/ /_/ / |/ / __/ /
\__,_/_/ /_/\___/\____/|___/\___/_/ v0.0.9
projectdiscovery.io
[WRN] 谨慎使用。您对自己的行为负责
[WRN] 开发者不承担任何责任,对任何滥用或损害不负责。
[WRN] 使用 uncover,即表示您也同意所用 API 的条款。
...
8.8.4.4:443
8.8.4.4:53
8.8.4.4:853
8.8.6.29:443
8.8.6.40:443
8.8.6.70:443
8.8.6.94:443
8.8.11.1:22
8.8.11.253:22
8.8.11.64:443
8.8.8.8:443
8.8.8.8:53
8.8.8.8:853
...
-f, -field 标志可用于指定返回哪些字段,目前支持 ip、port 和 host,可用于返回所需字段。
uncover -q jira -f host -silent
ec2-44-198-22-253.compute-1.amazonaws.com
ec2-18-246-31-139.us-west-2.compute.amazonaws.com
tasks.devrtb.com
leased-line-91-149-128-229.telecom.by
74.242.203.213.static.inetbone.net
ec2-52-211-7-108.eu-west-1.compute.amazonaws.com
ec2-54-187-161-180.us-west-2.compute.amazonaws.com
185-2-52-226.static.nucleus.be
ec2-34-241-80-255.eu-west-1.compute.amazonaws.com
uncover 有一个 -f, -field 标志,可用于自定义输出格式。例如,对于 uncover -f https://ip:port/version,ip:port 将被替换为结果中的内容,同时保留定义的格式。它还可用于指定已知的方案/路径/文件,以便准备好输出,使其可以立即作为管道中其他工具的输入。
echo kubernetes | uncover -f https://ip:port/version -silent
https://35.222.229.38:443/version
https://52.11.181.228:443/version
https://35.239.255.1:443/version
https://34.71.48.11:443/version
https://130.211.54.173:443/version
https://54.184.250.232:443/version
uncover 的输出可以进一步通过管道传递给工作流中接受 stdin 作为输入的其他项目,例如:
uncover -q example -f ip | naabu - 对发现的主机运行 naabu 进行端口扫描。uncover -q title:GitLab | httpx - 对发现的结果运行 httpx 进行 Web 服务器探测。uncover -q 51.83.59.99/24 | httpx - 对从 shodan-internetdb 获得的主机/端口运行 httpx。uncover -q http.title:GitLab -silent | httpx -silent
https://15.185.150.109
https://139.162.137.16
https://164.68.115.243
https://135.125.215.186
https://163.172.59.119
http://15.236.10.197
https://129.206.117.248

query 标志支持 搜索引擎支持的所有且仅支持的筛选器。100,可以通过 limit 标志增加。shodan-idb API 不需要 API 密钥,开箱即用。shodan-idb API 用作 默认 引擎。uncover 由 projectdiscovery 团队用 🖤 制作。