
discover — 已更新!
用于自动化各种渗透测试任务的自定义 Bash 和 Python 脚本,包括使用 Metasploit 进行侦察、扫描、枚举和恶意载荷创建。适用于 Ubuntu。对 Kali Linux 提供有限支持。
Custom bash scripts used to automate various penetration testing tasks including recon, scanning,
enumeration, and malicious payload creation using Metasploit. For use with Kali Linux or Ubuntu.
设置与使用
- 下载到你的主目录。``` cd ~ git clone https://github.com/leebaird/discover cd discover/ ./discover.sh
* 选择 **Update**(主菜单选项 16)来更新操作系统并安装依赖项(`ffuf`、`feroxbuster`、`jq` 等)。
* 开发扫描器位于 `dev/` 目录下,也可以通过主菜单选项 **15. Dev** 访问。
* 某些选项需要 root 凭证才能运行。
### 主菜单```
RECON
1. Domain
2. Person
SCANNING
3. Generate target list
4. CIDR
5. List
6. IP, range, or URL
7. Rerun Nmap scripts and MSF aux
WEB
8. Insecure direct object reference
9. Open multiple tabs in Firefox
10. Nikto
11. SSL
MISC
12. Parse XML
13. Generate a malicious payload
14. Start a Metasploit listener
15. Dev
16. Update
17. Exit
开发子菜单(选项15)
安全扫描工具,由 Yiğit ibrahim (ibrahimsql) 编写。脚本位于 dev/ 目录下,也可以直接运行。```
Dev scripts originally by ibrahimsql
- API Security
- Cloud Security
- Container Security
- OAuth and JWT Security
- Open Redirect Scanner
- Sensitive Information
- WAF Detection
- Web and API Security
- Previous menu
(无内容,输入为空)```
dev/
├── api-scanner.sh
├── cloud-scanner.sh
├── container-scanner.sh
├── oauth-jwt-scanner.sh
├── open-redirect.sh
├── sensitive-scanner.sh
├── waf-detect.sh
├── web-api-scanner.sh
├── data/
│ ├── api-paths.txt
│ ├── openredirect-payloads.txt
│ ├── sensitive-denylist.txt
│ ├── sensitive-patterns.tsv
│ ├── sensitive-skip-paths.txt
│ ├── sensitive-web-paths-quick.txt
│ ├── sensitive-web-paths-full.txt
│ ├── waf-aliases.tsv
│ ├── waf-labels.tsv
│ ├── waf-signatures.tsv
│ ├── web-api-phases.tsv
│ ├── web-api-tech-signatures.tsv
│ └── swagger-paths.txt
└── lib/
├── api-scanner/
│ └── common.sh
├── cloud-scanner/
│ ├── common.sh
│ ├── aws.sh
│ ├── azure.sh
│ └── gcp.sh
├── container-scanner/
│ ├── common.sh
│ ├── docker.sh
│ └── k8s.sh
├── oauth-jwt-scanner/
│ ├── common.sh
│ ├── oauth.sh
│ └── jwt.sh
├── open-redirect-scanner/
│ ├── common.sh
│ └── engine.py
├── sensitive-scanner/
│ ├── common.sh
│ ├── files.sh
│ ├── web.sh
│ ├── filescan.py
│ ├── engine.py
│ ├── fixtures/
│ └── run-tests.sh
├── waf-detect/
│ ├── common.sh
│ ├── probe.sh
│ ├── fixtures/
│ └── run-tests.sh
└── web-api-scanner/
├── common.sh
├── phases.sh
├── waf.sh
├── targets.sh
├── msf.sh
├── msf_parse.py
├── probe.sh
├── fixtures/
└── run-tests.sh
侦察
域名```
RECON
-
Passive
-
Breaches
-
Find registered domains
-
Google dorks
-
Web search
-
Import names
-
Import subdomains
-
Active
-
Previous menu
注意:被动和主动扫描不能以root身份运行。
**被动侦察(PASSIVE RECON)**
使用 Amass、ARIN、DNSRecon、dnstwist、Metasploit、subfinder、sublist3r、theHarvester、Whois 及多个网站。
* 获取所有免费 API 密钥以获得 theHarvester 的最佳结果。
* 将 API 密钥添加到 `$HOME/.theHarvester/api-keys.yaml`。
* 被动扫描会在 `$HOME/data/<domain>/` 生成一个 HTML 报告。
* 查找已注册域名会更新现有报告中的 `pages/registered-domains.htm` 文件。
* 主动扫描使用 httpx、whatweb 和 gowitness;可选的 NVD API 密钥可加速主动报告中的 CVSS 丰富过程(参见下文 **NVD API 密钥**)。
#### 导入名称(`import-names.sh`)
在手动研究(如通过 LinkedIn、公司网站、电话目录等)后运行,以便在被动扫描之后添加或丰富联系人信息。```
Enter the location of your previous passive scan:
/home/user/data/example.com
Enter manual contacts file (or press Enter for default):
- 编辑 $HOME/data//tools/names-manual.tsv
- 格式:Name, Title, Phone(制表符分隔,每行一个人)
- 以 # 开头的行为注释
- Title 和 Phone 可为空
- 每次向手动文件添加行时,请重新运行 Import names
Import names 合并三个来源,然后刷新 pages/names.htm:
- tools/names — 被动扫描自动发现的名称
- pages/names.htm — 现有的报告表格(保留页面中已有的工作)
- tools/names-manual.tsv — 手动录入项;在填写时优先使用其中的 Title 和 Phone
合并后的TSV被保存回 tools/names。名称页面是一个可排序的三列表格:Name, Title, Phone。
导入子域名 (import-subdomains.sh)
在被动扫描之后运行,用于添加或丰富来自 Pentest-Tools 或手动研究的主机。``` Enter the location of your previous passive scan: /home/user/data/example.com
Enter import file or firefox (or press Enter for default):
Supported imports:
* `firefox` — 从您的 Firefox 配置文件拉取 `pinia/scans` (免费的 Pentest-Tools 扫描)
* Firefox `pinia/scans` 导出 (`pinia-scans.json`)
* Pentest-Tools JSON (`pentest-tools-<domain>.json`)
* Pentest-Tools 文本导出 (`pentest-tools.txt`)
* 制表符分隔的主机/IP 行
* 编辑 `$HOME/data/<domain>/tools/subdomains-import.tsv` 以手动输入
* 格式:子域名, IP (制表符分隔;IP 可选)
* 没有 IP 的主机在导入期间会通过 `dig` 解析
* 每当您添加行或运行新的 Pentest-Tools 扫描时,重新运行 Import subdomains
Import subdomains 与现有的 `tools/subdomains` 合并,从 `old/subdomain-categories.tsv` 分配类别,将私有 IP 拆分到 `tools/private-subs`,并仅使用子域名、类别和 IP 列刷新 `pages/subdomains.htm`。之后运行 **Active** 以填充照片、状态、Web 服务器和技术信息。
#### Active (`active.sh`)
主动侦察
在被动扫描后运行(可选择运行 Import subdomains),当您想要探测哪些公共主机通过 HTTP/HTTPS 响应、指纹识别技术并捕获截图时。```
Enter the location of your previous passive scan:
/home/user/data/example.com
需要 httpx、whatweb、gowitness、python3 以及 Chrome 或 Chromium(通过 更新 安装)。
- 从
tools/subdomains读取公开主机名(跳过 RFC1918 IP) - 使用 httpx 探测主机名;写入
tools/httpx.jsonl - 将状态码为 200–399、401、403 或 405 的响应视为存活
- 使用 whatweb 对存活 URL 进行指纹识别;写入
tools/whatweb.json - 使用 gowitness(go-rod 驱动)截图存活 URL,保存至
tools/gowitness/ - 通过
recon/active-tech.py合并 httpx 和 whatweb 结果,并刷新pages/subdomains.htm - 将活动摘要写入
pages/active.htm(报告菜单 → 活动),包含在可用时通过 NVD CVSS 扩充的软件版本 - 重新运行 Active 以替换 httpx/whatweb/gowitness 产物,重建
pages/subdomains.htm上的活动列,并刷新pages/active.htm
报告菜单包含 被动(pages/passive.htm,原 report.htm 汇总)和 活动(pages/active.htm,httpx/whatweb 统计信息)。
活动范围指标
| 指标 | 含义 |
|---|---|
| 公开子域名 | tools/subdomains 中非 RFC1918 IP 的主机 |
| 私有子域名 | tools/private-subs 中的行 |
| 响应主机 | 拥有 httpx 状态(任意代码)的唯一主机 |
活动页面上的 状态码 计算所有 httpx 响应(包括 404/5xx)。截图、whatweb 和 按类别存活的 仍然仅使用存活子集(状态 200–399、401、403 或 405)。
公开子域名表(运行 Active 后):
| 列 | 来源 |
|---|---|
| 子域名、类别、IP | 被动扫描 / 导入子域名 |
| 照片 | 截图 gowitness 链接(已捕获时) |
| 状态 | httpx 状态码 |
| Web 服务器 | httpx/whatweb Server 头 |
| 标题 / 技术 | httpx 页面标题(已过滤)+ httpx 技术 / whatweb 插件 |
私有子域名表保持三列(子域名、类别、私有 IP 地址)。
active-tech.py 合并并去重列之间的重叠数据——例如,当 Technologies 中已列出 OpenSSL 和 mod_jk 版本时,它们会从 Web Server 中移除;Microsoft IIS/10 缩短为 Microsoft IIS(当 IIS:10 存在时);Apache/2.4.37 缩短为 Apache(当 Apache HTTP Server:2.4.37 存在时);诸如 Red Hat 等操作系统名称会从 Technologies 中移除(当 Web Server 横幅已显示时);httpx 的 Nginx 标签标准化为 nginx。
在 tools/ 下写入的产物:
active-targets.txt— 发送给 httpx 的公开主机名httpx.jsonl— httpx JSON 输出active-alive.tsv— 存活响应中的主机、URL 和状态active.txt— 发送给 whatweb 和 gowitness 的存活 URLwhatweb.json— whatweb JSON 输出gowitness/screenshots/— JPEG 截图gowitness/gowitness.jsonl和gowitness/gowitness.db— gowitness 元数据software-cves-cache.json— 用于活动报告的 NVD CVSS/CVE 查找缓存
NVD API 密钥(可选,活动 CVSS)
活动侦察可以使用来自 国家漏洞数据库 的 CVSS 评分和 CVE ID 来丰富 pages/active.htm 上的 软件版本 表。查找功能在 recon/software-cve.py 中实现。
没有密钥: 扩充仍然运行,但应用 NVD 的匿名速率限制(较慢;请求之间大约几秒)。
有密钥: 经过身份验证的速率限制(快得多)。
完全跳过扩充:``` export DISCOVER_SKIP_CVE=1
**获取免费的API密钥**
1. 请求密钥: https://nvd.nist.gov/developers/request-an-api-key
2. 确认NIST发送的电子邮件
3. 将密钥提供给Discover (shell导出和/或私有 `.env` — 见下文)
**Discover如何查找密钥**
优先级顺序(列表中较高的非空值始终优先):