amnottdevv/AtDork

GitHub: amnottdevv/AtDork

一款面向安全研究人员的多引擎自动化 OSINT Dorking 工具,支持批量执行高级搜索查询以发现公开暴露的敏感信息。

Stars: 17 | Forks: 4

# AtDork – 专业 OSINT Dorking 工具 ![版本](https://img.shields.io/badge/version-1.3.8-blue.svg) ![Python](https://img.shields.io/badge/python-3.9%2B-blue) ![许可证](https://img.shields.io/badge/license-MIT-green) ![平台](https://img.shields.io/badge/platform-linux%20%7C%20macos%20%7C%20windows-lightgrey) ![测试](https://img.shields.io/badge/tests-114%20passed-brightgreen) ![代码行数](https://img.shields.io/badge/total%20lines-11%2C000%2B-orange) [![PyPI 下载量](https://static.pepy.tech/personalized-badge/atdork?period=total&units=NONE&left_color=BLACK&right_color=BLUE&left_text=pypi+dowonloads)](https://pepy.tech/projects/atdork) **AtDork** 是一款强大且合规的 OSINT 工具,能够跨多个搜索引擎同时执行高级搜索查询(Google Dorks)。专为安全研究人员、渗透测试人员和 Bug Bounty 猎手设计,它可以自动化发现公开网络上暴露的文档、易受攻击的参数、配置错误的服务器以及其他敏感信息。 ## 为什么选择 AtDork? - 🚀 **极速高效** – 支持多线程批处理,且并发数可配置。 - 🔍 **多引擎支持** – 支持 DuckDuckGo、Google、Bing、Startpage、Yandex、Yahoo 等搜索引擎。 - 🛡️ **匿名搜索** – 内置代理轮换、Tor 集成以及防止 IP 泄露的严格模式。**新增:IP 泄露检测 (`--ip-guard`)**,一旦发现您的真实 IP 暴露,将立即停止扫描。 - 🧹 **纯净结果** – 自动进行垃圾信息过滤、URL 验证和去重。 - 📊 **专业输出** – 支持导出为 JSON、CSV、TXT 格式;使用 SQLite 数据库保存历史记录并支持恢复。**CSV 导出现已具备防公式注入保护。** - 🎯 **智能过滤** – 支持 WordPress、Joomla、SQLi 等的漏洞特征检测。 - 📝 **模板系统** – 精心策划的基于 YAML 的 dork 集合,助您即时提升效率。 - ⚙️ **高度可配置** – 提供超过 50 个 CLI 参数,全面掌控搜索的各个方面。 - 🔧 **后处理** – 可对发现的 URL 执行外部命令 (`--exec`)。 - 💾 **缓存机制** – 在本地缓存搜索结果,避免冗余请求并支持离线访问。 - 🔒 **安全日志** – 代理凭据会自动从日志文件中脱敏,防止意外泄露。 ## 安装说明 ### 通过 PyPI 安装(推荐) ``` pip install atdork ``` ### 从源码安装 ``` git clone https://github.com/amnottdevv/atdork.git cd atdork pip install . ``` ### 验证安装 ``` atdork --version # atdork 1.3.8 ``` ## 快速入门 ### 1. 您的首次搜索 ``` atdork -q "site:gov filetype:pdf" -r 10 ``` 该命令将在政府网站上查找 PDF 文件,并显示前 10 条结果。 ### 2. 将结果保存到文件 ``` atdork -q "intitle:index.of mp3" -r 20 --format json -o music.json ``` ### 3. 批处理 创建一个文件 `dorks.txt`: ``` site:edu filetype:xls inurl:admin login intitle:"index of" "backup" ``` 一次性运行它们: ``` atdork --batch-file dorks.txt -r 30 --format csv -o results.csv ``` ### 4. 使用代理搜索(匿名) ``` atdork -q "confidential filetype:docx" --proxy "http://user:pass@proxy:8080" --strict ``` ## 详细用法 ### 单次查询 ``` atdork -q "inurl:product.php?id=" -r 50 --backend google --region uk-en --safesearch off ``` | 参数 | 用途 | |------|---------| | `-q` | 您的 dork 查询语句 | | `-r` | 结果数量(最大 100) | | `--backend` | 搜索引擎:`google`、`bing`、`duckduckgo`、`startpage`、`yandex`、`auto` | | `--region` | 地区代码:`us-en`、`uk-en`、`de-de`、`ru-ru` 等 | | `--safesearch` | `on`、`moderate`、`off` | ### 多线程批处理 ``` atdork --batch-file dorks.txt -r 40 --concurrency 5 --delay 2 --format json -o batch_results.json ``` | 参数 | 用途 | |------|---------| | `--batch-file` | 每行包含一个 dork 的文本文件 | | `--concurrency` | 并行线程数(1‑10) | | `--delay` | 请求之间的延迟秒数(避免触发速率限制) | | `-o` | 将所有结果保存到单个文件中 | | `--output-dir` | 将每个查询的结果保存为单独的文件 | ### Dork 模板(预置) 列出可用的模板: ``` atdork --list-templates ``` 使用模板: ``` atdork --template sqli --target example.com -r 30 ``` 将多个模板与自定义查询结合使用: ``` atdork --template sqli,wordpress,exposed_config -q "site:gov filetype:pdf" -r 25 ``` 预览模板将执行的操作: ``` atdork --template login_panels --preview ``` 仅运行模板中的特定 dorks: ``` atdork --template sqli --select 1,3,5 -r 20 ``` | 参数 | 用途 | |------|---------| | `--template` | 模板名称,用逗号分隔 | | `--target` | 用于替换模板 dorks 中 `{target}` 的域名 | | `--select` | 运行模板中指定的 dork 编号 | | `--list-templates` | 显示所有可用的模板 | | `--preview` | 仅显示 dorks 而不执行 | | `--template-path` | 自定义模板文件夹 | ### 代理与匿名 ``` # 单个 proxy atdork -q "target" --proxy "http://user:pass@host:8080" # 多个 proxy(逗号分隔) atdork -q "target" --proxy "http://p1:8080,socks5://p2:1080" # 从文件 atdork -q "target" --proxy-file proxies.txt # Tor 集成 atdork -q "target" --tor --strict # 严格模式(如果所有 proxy 宕机则失败) atdork -q "target" --proxy-file proxies.txt --strict # proxy 管理 atdork -q "target" --proxy-file proxies.txt --proxy-cooldown 120 --max-failures 3 ``` **代理文件格式 (`proxies.txt`):** ``` # HTTP proxy http://user:pass@dc1.provider.com:3128 http://user:pass@dc2.provider.com:3128 # SOCKS proxy socks5://res1.provider.com:1080 socks5h://res2.provider.com:1080 # 以 # 开头的注释将被忽略 ``` ### 漏洞过滤 ``` # 基础 WordPress 检测 atdork -q "inurl:wp-content" -r 30 --filter-vuln wordpress # 仅链接过滤器(仅匹配 URL) atdork -q "site:example.com" --filter-vuln wordpress-link ``` 在 `wordlists/` 文件夹中创建您自己的字典文件: ``` # wordlists/myplatform.txt wp-content wp-admin wp-includes ``` ### 弹性与速率限制 ``` # 启用 circuit breaker 和 backend fallback atdork --batch-file dorks.txt --resilient # 基于 backend 响应的自适应延迟 atdork --batch-file dorks.txt --adaptive-delay # 组合 atdork --batch-file dorks.txt --resilient --adaptive-delay --concurrency 5 --delay 2 ``` ### 输出验证 ``` # 禁用所有过滤(保留原始结果) atdork -q "test" --no-validate # 严格过滤(要求 snippet 非空) atdork -q "test" --strict-filter # 精细控制 atdork -q "test" --validate-url only --validate-title 10 --validate-desc 50 --validate-spam true ``` ### 数据库与历史记录 ``` # 恢复中断的批处理 atdork --resume # 查看搜索历史 atdork --history # 将数据库导出为 JSON/CSV atdork --export-db all_results.json # 禁用重复 URL 检测 atdork -q "test" --no-dedup ``` ### IP 泄露检测(新增) ``` # 在使用 proxy 时如果暴露了您的真实 IP 则立即停止 atdork --batch-file dorks.txt --proxy-file proxies.txt --strict --ip-guard ``` ### 后处理(新增) ``` # 为每个发现的 URL 运行命令 atdork -q "inurl:admin" -r 10 --exec "curl -I {} | grep Server" # 仅对标记为 vulnerable 的 URL 运行命令 atdork -q "inurl:wp-content" -r 30 --filter-vuln wordpress --exec-on-vuln "wpscan --url {}" ``` ### 缓存结果(新增) ``` # 缓存搜索结果 24 小时(默认) atdork -q "site:gov filetype:pdf" -r 20 --cache # 仅使用缓存结果(offline 模式) atdork -q "site:gov filetype:pdf" -r 20 --cache-only # 清除所有缓存数据 atdork --clear-cache ``` ## 完整参数说明 | 参数 | 描述 | 默认值 | |------|-------------|---------| | `-q`, `--query` | 搜索 dork 查询语句 | | | `-r`, `--max-results` | 最大结果数(1‑100) | 20 | | `--batch-file` | 每行一个查询语句的文件 | | | `--batch-separator` | 内联查询的分隔符 | `;` | | `-o`, `--output` | 将结果保存到文件 | | | `--output-dir` | 将每个查询保存到单独的文件 | | | `--format` | 输出格式:`txt`、`json`、`csv` | `txt` | | `-v`, `--verbose` | 在批处理模式下显示结果 | | | `--no-snippet` | 在终端中隐藏摘要片段 | | | `--template` | 加载 dork 模板 | | | `--target` | 用于模板替换的域名 | | | `--select` | 从模板中选择特定的 dorks | | | `--list-templates` | 列出可用的模板 | | | `--template-path` | 自定义模板目录 | | | `--preview` | 预览模板 dorks | | | `--region` | 搜索地区 | `us-en` | | `--safesearch` | `on`、`moderate`、`off` | `moderate` | | `--timelimit` | `d`、`w`、`m`、`y` | | | `--backend` | 搜索引擎 | `auto` | | `--user-agent` | 自定义 User‑Agent | 自动轮换 | | `--timeout` | 请求超时时间(秒) | 10 | | `--retries` | 失败时的重试次数 | 2 | | `--delay` | 请求之间的延迟(秒) | 0 | | `--proxy` | 逗号分隔的代理 URL | | | `--proxy-file` | 包含代理 URL 的文件 | | | `--tor` | 使用 Tor SOCKS5 代理 | | | `--strict` | 如果所有代理均失效则报错中止 | | | `--proxy-cooldown` | 代理失败后的冷却时间(秒) | 60 | | `--max-failures` | 失败 N 次后移除代理 | 3 | | `--concurrency` | 用于批处理的并行线程数 | 1 | | `--resilient` | 启用熔断与回退机制 | | | `--adaptive-delay` | 启用自适应速率限制 | | | `--ip-guard` | 启用 IP 泄露检测 | | | `--exec` | 对每个结果 URL 执行命令 | | | `--exec-on-vuln` | 对存在漏洞的结果执行命令 | | | `--exec-parallel` | 并行执行的 `--exec` 进程数 | 1 | | `--exec-timeout` | 每个 `--exec` 命令的超时时间(秒) | 30 | | `--cache` | 启用结果缓存 | | | `--cache-db` | 缓存数据库路径 | `atdork_cache.db` | | `--cache-ttl` | 缓存有效期(小时) | 24 | | `--cache-only` | 仅使用缓存,不发送网络请求 | | | `--clear-cache` | 启动前删除所有缓存 | | | `--no-validate` | 禁用垃圾信息过滤 | | | `--strict-filter` | 严格验证模式 | | | `--validate-url` | URL 验证模式 | `all` | | `--validate-title` | 最小标题长度 | 5 | | `--validate-desc` | 最小描述长度 | 10 | | `--validate-spam` | 启用垃圾信息检测 | `true` | | `--filter-vuln` | 漏洞平台过滤器 | | | `--no-fallback-backends` | 禁用后端回退机制 | | | `--no-verify` | 禁用 SSL 验证 | | | `--log-file` | 日志文件路径 | `atdork.log` | | `--db-path` | 数据库路径 | `atdork.db` | | `--resume` | 恢复未完成的查询 | | | `--history` | 显示搜索历史记录 | | | `--no-dedup` | 禁用 URL 去重 | | | `--export-db` | 将数据库导出到文件 | | | `--config` | YAML 配置文件路径 | | | `--interactive` | 交互模式 | | | `--debug` | 启用调试日志 | | | `--version` | 显示版本号并退出 | | ## 实际应用场景 ### 带有全面保护的 Bug Bounty 侦察 ``` atdork --template sqli,xss,lfi --target target.com \ --proxy-file proxies.txt --strict --resilient --ip-guard \ --format json -o recon.json ``` ### 暴露的数据库凭据 ``` atdork -q 'filetype:env "DB_PASSWORD"' -r 50 --no-validate -v ``` ### 发现后台管理面板 ``` atdork -q 'intitle:"admin panel" inurl:login' -r 30 --backend google --region uk-en ``` ### 带有后处理的 WordPress 漏洞扫描 ``` atdork -q "inurl:wp-content site:example.com" -r 40 \ --filter-vuln wordpress \ --exec-on-vuln "wpscan --url {} --enumerate p" \ --exec-parallel 2 --exec-timeout 60 ``` ### 每周自动监控 ``` # 添加到 crontab (Linux/macOS) 0 6 * * 1 cd /path/to/atdork && atdork --batch-file weekly_dorks.txt --format csv --output-dir /reports/$(date +\%Y-\%W)/ ``` ## 配置文件 创建 `atdork.yaml` 以进行持久化设置: ``` max_results: 30 region: "uk-en" safesearch: "off" delay: 1.0 format: "json" output_dir: "./results" proxy_file: "proxies.txt" ``` AtDork 会自动从当前目录加载此文件。CLI 参数的优先级高于 YAML 配置值。 ## 故障排除 | 问题 | 解决方案 | |---------|----------| | **触发速率限制 (429)** | 添加 `--delay 3`,使用 `--proxy-file`,或启用 `--adaptive-delay` | | **没有结果** | 尝试不同的 `--backend`(例如 `startpage`、`yandex`)或更改 `--region` | | **代理失效** | 检查格式:`scheme://user:pass@host:port` | | **批处理卡住** | 降低 `--concurrency`,增加 `--timeout 15`,启用 `--resilient` | | **安装错误** | 使用 `pip install -e .` 进入开发模式安装 | | **使用 --strict 仍发生 IP 泄露** | 启用 `--ip-guard` 以尽早检测泄露;使用 SOCKS5h 代理 | | **所有后端均耗尽** | 启用 `--resilient` 以激活后端回退链 | | **打开 CSV 时显示公式** | 更新至 v1.3.8 及以上版本(已修复 CSV 注入问题) | | **日志中出现代理凭据** | 更新至 v1.3.8 及以上版本(凭据现已自动脱敏) | ## 项目结构 ``` atdork/ ├── atdork.py # CLI entry point ├── core/ │ ├── scanner.py # Search engine integration │ ├── batch_runner.py # Batch execution (seq/parallel, resilience) │ ├── proxy_manager.py # Proxy pool management │ ├── filter_vuln.py # Vulnerability signature filtering │ ├── template_dork.py # YAML template loader │ ├── post_processor.py # External command execution on results │ ├── manage_cache.py # SQLite-based result caching │ ├── database.py # SQLite storage & export │ ├── config.py # YAML configuration loader │ ├── logger.py # Rotating file logger │ └── case/ │ ├── circuit_breaker.py # Prevent hammering dead backends │ ├── ip_guard.py # Real IP leak detection │ ├── error_classifier.py # Categorize exceptions │ ├── fallback_manager.py # Intelligent backend/proxy switching │ ├── retry_handler.py # Exponential backoff with jitter │ ├── adaptive_delay.py # Per‑backend dynamic delay │ ├── recovery_strategy.py # Map errors to recovery actions │ └── stats.py # Runtime statistics collector ├── lib/ │ ├── display.py # Terminal output formatting │ ├── storage.py # File export (TXT/JSON/CSV) │ ├── validator.py # Spam/invalid result filtering │ └── redactor.py # Proxy credential redaction ├── wordlists/ # Vulnerability signatures & templates ├── tests/ # Unit tests (pytest) ├── pyproject.toml # Package configuration └── README.md ``` ## 道德使用与免责声明 AtDork 仅用于**合法、授权的安全测试**。 在扫描之前,您必须获得目标所有者的明确书面许可。 **严禁用于:** - 未经授权访问系统或数据 - 违反法律法规收集信息 - 任何侵犯隐私或知识产权的行为 开发者不对本软件的滥用行为承担任何责任。 ## 许可证 基于 MIT 许可证分发。详情请参阅 `LICENSE`。 ## 致谢 - **tg12** – 负责任地披露了严重的安全漏洞(CSV 注入和代理凭据泄露),并帮助使 AtDork 对所有人都更加安全。 - **Peter786** – 提交了优秀的拉取请求,修复了打包的字典资源问题,确保 `pip install` 用户能够无缝使用。 ## 联系与支持 - **GitHub:** [github.com/amnottdevv/atdork](https://github.com/amnottdevv/atdork) - **问题反馈:** [github.com/amnottdevv/atdork/issues](https://github.com/amnottdevv/atdork/issues) - **PyPI:** [pypi.org/project/atdork](https://pypi.org/project/atdork/) 如果您觉得这个工具好用,请考虑在 GitHub 上给它点个 ⭐!
标签:Prometheus, Python, 实时处理, 搜索引擎Dorking, 无后门, 逆向工具