evilspider 2.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- evilspider-2.5.0/MANIFEST.in +11 -0
- evilspider-2.5.0/PKG-INFO +273 -0
- evilspider-2.5.0/README.md +238 -0
- evilspider-2.5.0/_version.py +5 -0
- evilspider-2.5.0/analyzer/__init__.py +8 -0
- evilspider-2.5.0/analyzer/api_parser.py +188 -0
- evilspider-2.5.0/analyzer/secrets.py +363 -0
- evilspider-2.5.0/analyzer/security.py +186 -0
- evilspider-2.5.0/analyzer/tech.py +216 -0
- evilspider-2.5.0/config.py +373 -0
- evilspider-2.5.0/crawler.py +640 -0
- evilspider-2.5.0/evilspider.egg-info/PKG-INFO +273 -0
- evilspider-2.5.0/evilspider.egg-info/SOURCES.txt +42 -0
- evilspider-2.5.0/evilspider.egg-info/dependency_links.txt +1 -0
- evilspider-2.5.0/evilspider.egg-info/entry_points.txt +2 -0
- evilspider-2.5.0/evilspider.egg-info/requires.txt +10 -0
- evilspider-2.5.0/evilspider.egg-info/top_level.txt +8 -0
- evilspider-2.5.0/extractors/__init__.py +8 -0
- evilspider-2.5.0/extractors/form_extractor.py +164 -0
- evilspider-2.5.0/extractors/html_extractor.py +147 -0
- evilspider-2.5.0/extractors/js_extractor.py +129 -0
- evilspider-2.5.0/extractors/sourcemap.py +53 -0
- evilspider-2.5.0/main.py +392 -0
- evilspider-2.5.0/output/__init__.py +6 -0
- evilspider-2.5.0/output/formatter.py +182 -0
- evilspider-2.5.0/output/reporter.py +226 -0
- evilspider-2.5.0/output/templates/report_template.html +327 -0
- evilspider-2.5.0/prober/__init__.py +6 -0
- evilspider-2.5.0/prober/probe.py +183 -0
- evilspider-2.5.0/prober/wordlists.py +161 -0
- evilspider-2.5.0/pyproject.toml +89 -0
- evilspider-2.5.0/requirements.txt +3 -0
- evilspider-2.5.0/setup.cfg +4 -0
- evilspider-2.5.0/setup.py +18 -0
- evilspider-2.5.0/tests/test_api_parser.py +63 -0
- evilspider-2.5.0/tests/test_config.py +44 -0
- evilspider-2.5.0/tests/test_crawler.py +120 -0
- evilspider-2.5.0/tests/test_extractors.py +98 -0
- evilspider-2.5.0/tests/test_normalization.py +39 -0
- evilspider-2.5.0/tests/test_prober.py +26 -0
- evilspider-2.5.0/tests/test_reporter.py +76 -0
- evilspider-2.5.0/tests/test_secrets.py +60 -0
- evilspider-2.5.0/tests/test_security.py +36 -0
- evilspider-2.5.0/tests/test_tech.py +32 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
include _version.py
|
|
3
|
+
include config.py
|
|
4
|
+
include crawler.py
|
|
5
|
+
include main.py
|
|
6
|
+
include requirements.txt
|
|
7
|
+
recursive-include output/templates *.html
|
|
8
|
+
recursive-include analyzer *.py
|
|
9
|
+
recursive-include extractors *.py
|
|
10
|
+
recursive-include prober *.py
|
|
11
|
+
recursive-include output *.py
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: evilspider
|
|
3
|
+
Version: 2.5.0
|
|
4
|
+
Summary: Fast Async Attack Surface Recon Crawler & Hunter
|
|
5
|
+
Author: Baba01hacker666
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Baba01hacker666/evilspider
|
|
8
|
+
Project-URL: Repository, https://github.com/Baba01hacker666/evilspider
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/Baba01hacker666/evilspider/issues
|
|
10
|
+
Keywords: web-crawler,reconnaissance,bug-bounty,security-tools,attack-surface,secret-scanner,api-discovery
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Information Technology
|
|
13
|
+
Classifier: Intended Audience :: System Administrators
|
|
14
|
+
Classifier: Topic :: Security
|
|
15
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Requires-Python: >=3.8
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
Requires-Dist: aiohttp>=3.9.0
|
|
27
|
+
Requires-Dist: jinja2>=3.0.0
|
|
28
|
+
Requires-Dist: pyyaml>=6.0
|
|
29
|
+
Provides-Extra: dev
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
32
|
+
Requires-Dist: bandit>=1.7.0; extra == "dev"
|
|
33
|
+
Requires-Dist: build>=1.0.0; extra == "dev"
|
|
34
|
+
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
35
|
+
|
|
36
|
+
# 🕷️ EvilSpider
|
|
37
|
+
|
|
38
|
+
[](https://github.com/Baba01hacker666/evilspider/actions/workflows/ci.yml)
|
|
39
|
+
[](https://pypi.org/project/evilspider/)
|
|
40
|
+
[](https://www.python.org/downloads/)
|
|
41
|
+
[](https://opensource.org/licenses/MIT)
|
|
42
|
+
[](https://docs.python.org/3/library/asyncio.html)
|
|
43
|
+
[](https://github.com/astral-sh/ruff)
|
|
44
|
+
|
|
45
|
+
**EvilSpider** is a fast, asynchronous attack-surface crawler and reconnaissance engine designed for bug bounty hunters, penetration testers, and security researchers.
|
|
46
|
+
|
|
47
|
+
Unlike traditional generic crawlers (e.g., Scrapy or Crawlee), EvilSpider focuses strictly on **offensive security use cases**: uncovering hidden endpoints, hunting leaked secrets and API keys, extracting parameterized URLs, fingerprinting technologies, mapping forms, and generating actionable reconnaissance dashboards.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 📥 Installation
|
|
52
|
+
|
|
53
|
+
### 📦 Via `pip`
|
|
54
|
+
```bash
|
|
55
|
+
pip install evilspider
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### ⚡ Via `pipx` (Recommended for isolated CLI)
|
|
59
|
+
```bash
|
|
60
|
+
pipx install evilspider
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 🛠️ From Source (Development)
|
|
64
|
+
```bash
|
|
65
|
+
git clone https://github.com/Baba01hacker666/evilspider.git
|
|
66
|
+
cd evilspider
|
|
67
|
+
pip install -e .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🚀 Quick Start
|
|
73
|
+
|
|
74
|
+
### 1. Standard Recon Crawl
|
|
75
|
+
```bash
|
|
76
|
+
evilspider crawl -u https://example.com
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 2. Multi-Target Crawl from File
|
|
80
|
+
```bash
|
|
81
|
+
evilspider crawl -l targets.txt -t 20 -o results.json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 3. Pipeline URLs to Nuclei / FFUF / HTTPX
|
|
85
|
+
```bash
|
|
86
|
+
evilspider crawl -u https://example.com --urls-only | nuclei -t http/cves/
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 4. Generate Interactive Dark-Mode HTML Dashboard
|
|
90
|
+
```bash
|
|
91
|
+
evilspider crawl -u https://example.com --report-html report.html --report-md report.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## ⚡ Key Features
|
|
97
|
+
|
|
98
|
+
- **🚀 Async Concurrency Engine**: Ultra-fast asynchronous crawler built on `asyncio` and `aiohttp` with connection pooling, rate limiting, and configurable worker threads.
|
|
99
|
+
- **🚨 Secret & Sensitive Data Hunter**: Built-in regex rule engine scanning for 30+ types of credentials across responses (AWS keys, Google Cloud API keys, JWT tokens, Stripe keys, GitHub PATs, Slack webhooks, Private keys, Database URIs, and leaked authorization headers).
|
|
100
|
+
- **📝 HTML Form & Input Extractor**: Detects and categorizes HTML forms (Login, Registration, File Uploads, Password Reset, Search) along with hidden CSRF tokens and field names.
|
|
101
|
+
- **📜 Deep JavaScript Analysis**: Extracts REST API routes, dynamic endpoints, AJAX (`fetch`/`axios`/`$.ajax`) targets, Webpack chunks, and Source Map (`.js.map`) references from inline scripts and external JS files.
|
|
102
|
+
- **🛠️ Tech Stack Fingerprinter**: Detects CMS (WordPress, Drupal, Joomla, Shopify), Backend Frameworks (Django, Laravel, Spring Boot, Express, Rails, FastAPI), Web Servers (Nginx, Apache, Caddy, Cloudflare, IIS), and Frontend Frameworks (React, Vue, Next.js, Nuxt, Angular).
|
|
103
|
+
- **🛡️ Security Headers & Reflection Auditor**: Identifies missing security headers (CSP, HSTS, X-Frame-Options, X-Content-Type-Options), dangerous CORS misconfigurations (`*` with credentials), and reflected URL parameters (potential XSS sinks).
|
|
104
|
+
- **📖 API Documentation & Schema Parsing**: Automatically parses Swagger 2.0 / OpenAPI 3.x specifications and GraphQL schemas to extract all declared endpoints, parameters, and routes.
|
|
105
|
+
- **🎯 Active Sensitive File Prober (`probe`)**: Fast active probing module hunting for VCS leaks (`.git/HEAD`, `.svn`), exposed configs (`.env`, `web.config`), backup archives (`dump.sql`, `backup.zip`), and debug endpoints (`actuator/health`, `pprof`) with smart soft-404 detection.
|
|
106
|
+
- **🌐 Scope & Filter Controls**: Scope by domain, subdomains, regex whitelist/blacklist, extension filters, path exclusions, status codes, and loop prevention algorithms.
|
|
107
|
+
- **🎭 Browser Impersonation Profiles**: Modern User-Agent and Client Hints / header profiles for Chrome, Firefox, Edge, Safari, Chrome Android, and Safari iOS.
|
|
108
|
+
- **📊 Multi-Format Reporting**: Export findings to JSON, JSON Lines (NDJSON), CSV, Plain text URLs, Parameter wordlists, Markdown reports, and a standalone responsive **Interactive Dark-Mode HTML Dashboard**.
|
|
109
|
+
- **🔌 UNIX Pipeline Ready**: `--urls-only` and `--silent` modes designed for piping directly into tools like `nuclei`, `ffuf`, `httpx`, `sqlmap`, or `dalfox`.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🔥 Recon Workflows
|
|
114
|
+
|
|
115
|
+
### 🕵️ 1) Full Hunter Mode (Secrets + Uploads + Sensitive Probing)
|
|
116
|
+
```bash
|
|
117
|
+
evilspider crawl \
|
|
118
|
+
-u https://target.tld \
|
|
119
|
+
--robots --sitemaps \
|
|
120
|
+
--detect-uploads \
|
|
121
|
+
--probe-sensitive \
|
|
122
|
+
-d 4 -t 15 \
|
|
123
|
+
--report-html report.html
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 🔑 2) Sensitive Endpoint & Backup Prober (`probe`)
|
|
127
|
+
```bash
|
|
128
|
+
evilspider probe \
|
|
129
|
+
-u https://target.tld \
|
|
130
|
+
--categories vcs,env_config,backups,api_docs,actuators_debug \
|
|
131
|
+
-o probe_findings.json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 📁 3) Offline JavaScript & File Analysis (`extract`)
|
|
135
|
+
```bash
|
|
136
|
+
evilspider extract -f app.bundle.js -o extracted_assets.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 🔐 4) Authenticated Crawl with Session Cookies & Bearer Token
|
|
140
|
+
```bash
|
|
141
|
+
evilspider crawl \
|
|
142
|
+
-u https://target.tld \
|
|
143
|
+
-C 'session=abc12345; role=admin' \
|
|
144
|
+
--bearer-token 'eyJhbGciOiJIUzI1Ni...' \
|
|
145
|
+
-H 'X-Forwarded-For: 127.0.0.1'
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 🌐 5) Proxied Crawl through Burp Suite / OWASP ZAP
|
|
149
|
+
```bash
|
|
150
|
+
evilspider crawl \
|
|
151
|
+
-u https://target.tld \
|
|
152
|
+
-x http://127.0.0.1:8080 \
|
|
153
|
+
--insecure \
|
|
154
|
+
--report-redirects
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 🎯 6) Parameter Wordlist Harvesting for Fuzzing
|
|
158
|
+
```bash
|
|
159
|
+
evilspider crawl \
|
|
160
|
+
-u https://target.tld \
|
|
161
|
+
--params-file params_wordlist.txt \
|
|
162
|
+
--urls-only > discovered_urls.txt
|
|
163
|
+
|
|
164
|
+
# Pipe discovered parameters into ffuf
|
|
165
|
+
ffuf -u "https://target.tld/endpoint?FUZZ=1" -w params_wordlist.txt
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 🛠️ CLI Options Reference
|
|
171
|
+
|
|
172
|
+
### `evilspider crawl` (Main Crawler)
|
|
173
|
+
|
|
174
|
+
| Flag | Description |
|
|
175
|
+
|---|---|
|
|
176
|
+
| `-u, --url` | Target URL to crawl (e.g. `https://example.com`) |
|
|
177
|
+
| `-l, --list` | File containing target URLs (or `-` for stdin) |
|
|
178
|
+
| `-c, --config` | Path to JSON configuration file |
|
|
179
|
+
| `-t, --threads` | Number of concurrent workers (default: `10`) |
|
|
180
|
+
| `-d, --max-depth` | Maximum crawl depth (default: `3`) |
|
|
181
|
+
| `-m, --max-links` | Maximum total links to visit (default: `5000`) |
|
|
182
|
+
| `--max-time` | Maximum crawl duration in seconds |
|
|
183
|
+
| `--rate-limit` | Maximum requests per second |
|
|
184
|
+
| `--delay` | Delay between requests in seconds |
|
|
185
|
+
| `-s, --status` | Interesting status codes (default: `200`) |
|
|
186
|
+
| `--exclude-status` | Status codes to ignore (e.g. `404,500`) |
|
|
187
|
+
| `-e, --exts` | Extension focus list (e.g. `php,bak,env,json`) |
|
|
188
|
+
| `-k, --keywords` | Keyword filter for response bodies |
|
|
189
|
+
| `-p, --params-only` | Only report URLs with query parameters |
|
|
190
|
+
| `--include-subdomains` / `--no-include-subdomains` | Toggle subdomain in-scope crawling (default: `true`) |
|
|
191
|
+
| `--scope-regex` | Whitelist regex pattern for allowed URLs |
|
|
192
|
+
| `--exclude-regex` | Blacklist regex pattern for ignored URLs |
|
|
193
|
+
| `--exclude-paths` | Comma-separated paths to ignore (`/logout,/signout`) |
|
|
194
|
+
| `--robots` / `--sitemaps` | Parse `robots.txt` and `sitemap.xml` |
|
|
195
|
+
| `--detect-uploads` | Detect forms with file uploads |
|
|
196
|
+
| `--probe-sensitive` | Actively probe target for sensitive files (.git, .env, backups, etc.) |
|
|
197
|
+
| `--probe-categories` | Prober categories (`vcs,env_config,backups,api_docs,actuators_debug,graphql,admin_auth`) |
|
|
198
|
+
| `--no-secrets` | Disable secrets and API keys scanner |
|
|
199
|
+
| `--no-forms` | Disable HTML forms extractor |
|
|
200
|
+
| `--no-tech` | Disable technology stack fingerprinter |
|
|
201
|
+
| `--no-security-audit`| Disable security headers auditor |
|
|
202
|
+
| `-A, --user-agent` | Custom User-Agent string |
|
|
203
|
+
| `-i, --impersonate` | Browser profile (`chrome`, `firefox`, `edge`, `safari`, `chrome-android`, `safari-ios`) |
|
|
204
|
+
| `-C, --cookies` | Cookie string or path to cookie file |
|
|
205
|
+
| `-H, --headers` | Custom header (repeatable, e.g. `-H 'X-Header: value'`) |
|
|
206
|
+
| `-x, --proxy` | Proxy URL (HTTP/SOCKS5 e.g. `http://127.0.0.1:8080`) |
|
|
207
|
+
| `--bearer-token` | Authorization Bearer token |
|
|
208
|
+
| `--auth-basic` | HTTP Basic Auth in format `user:pass` |
|
|
209
|
+
| `-T, --timeout` | Request timeout in seconds (default: `5`) |
|
|
210
|
+
| `--retries` | Number of request retries on failure (default: `2`) |
|
|
211
|
+
| `--follow-redirects` | Follow HTTP redirects (default: `true`) |
|
|
212
|
+
| `--report-redirects`| Include redirect chains in results |
|
|
213
|
+
| `--insecure` | Disable SSL certificate verification |
|
|
214
|
+
| `-o, --output` | Primary output JSON file path |
|
|
215
|
+
| `-j, --json` | Stream findings as JSON Lines to stdout |
|
|
216
|
+
| `--csv` | Export findings as CSV |
|
|
217
|
+
| `--report-html` | Generate interactive standalone HTML dashboard |
|
|
218
|
+
| `--report-md` | Generate Markdown summary report |
|
|
219
|
+
| `--urls-only` | Clean stdout output containing only discovered URLs |
|
|
220
|
+
| `--params-file` | Save discovered query parameter wordlist |
|
|
221
|
+
| `--secrets-file` | Save discovered secrets to separate JSON |
|
|
222
|
+
| `--forms-file` | Save extracted forms to separate JSON |
|
|
223
|
+
| `-q, --quiet` | Suppress banner and info logs |
|
|
224
|
+
| `--silent` | Completely silent mode for UNIX piping |
|
|
225
|
+
| `-v, --verbose` | Enable debug logging |
|
|
226
|
+
| `--no-color` | Disable ANSI terminal colors |
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 📊 Interactive HTML Dashboard
|
|
231
|
+
|
|
232
|
+
EvilSpider generates a standalone, self-contained HTML report with:
|
|
233
|
+
- Summary metric cards (Endpoints, Secrets, Forms, Subdomains, Technologies, Security Issues)
|
|
234
|
+
- Dynamic table filtering and instant keyword search
|
|
235
|
+
- Dedicated tabs for Secrets, Forms, Technologies, Security Headers, API Docs, and Subdomains
|
|
236
|
+
- Zero external CDN dependencies (works completely offline)
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 🏗️ Architecture
|
|
241
|
+
|
|
242
|
+
```
|
|
243
|
+
evilspider/
|
|
244
|
+
├── analyzer/
|
|
245
|
+
│ ├── secrets.py # 30+ regex rules for API keys, tokens & credentials
|
|
246
|
+
│ ├── tech.py # Web server, framework & CMS fingerprinter
|
|
247
|
+
│ ├── security.py # Security headers, CORS & reflected param auditor
|
|
248
|
+
│ └── api_parser.py # Swagger 2.0 / OpenAPI 3.x & GraphQL parser
|
|
249
|
+
├── extractors/
|
|
250
|
+
│ ├── html_extractor.py # Fast HTML parser for links, scripts, frames & comments
|
|
251
|
+
│ ├── js_extractor.py # JavaScript REST endpoint & webpack chunk extractor
|
|
252
|
+
│ ├── form_extractor.py # HTML form, input & CSRF token parser
|
|
253
|
+
│ └── sourcemap.py # Source map (.js.map) unminified route extractor
|
|
254
|
+
├── prober/
|
|
255
|
+
│ ├── probe.py # Active sensitive file prober with soft-404 detection
|
|
256
|
+
│ └── wordlists.py # Curated recon path lists (VCS, configs, backups, APIs)
|
|
257
|
+
├── output/
|
|
258
|
+
│ ├── formatter.py # ANSI terminal formatting, logo & summary tables
|
|
259
|
+
│ ├── reporter.py # Multi-format reporter (JSON, CSV, MD, HTML, TXT)
|
|
260
|
+
│ └── templates/
|
|
261
|
+
│ └── report_template.html # Responsive dark-mode dashboard
|
|
262
|
+
├── tests/ # Comprehensive unit and integration test suite
|
|
263
|
+
├── _version.py # Single source of truth for version and author metadata
|
|
264
|
+
├── config.py # Config parser and CLI argument validator
|
|
265
|
+
├── crawler.py # Async crawl orchestrator and queue worker pool
|
|
266
|
+
└── main.py # CLI entrypoint (crawl, probe, extract, report)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## ⚖️ Legal Disclaimer
|
|
272
|
+
|
|
273
|
+
EvilSpider is developed for authorized security assessments, penetration testing, bug bounty reconnaissance, and educational purposes only. Do not use this tool against targets without explicit authorization. The authors assume no liability for misuse.
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# 🕷️ EvilSpider
|
|
2
|
+
|
|
3
|
+
[](https://github.com/Baba01hacker666/evilspider/actions/workflows/ci.yml)
|
|
4
|
+
[](https://pypi.org/project/evilspider/)
|
|
5
|
+
[](https://www.python.org/downloads/)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://docs.python.org/3/library/asyncio.html)
|
|
8
|
+
[](https://github.com/astral-sh/ruff)
|
|
9
|
+
|
|
10
|
+
**EvilSpider** is a fast, asynchronous attack-surface crawler and reconnaissance engine designed for bug bounty hunters, penetration testers, and security researchers.
|
|
11
|
+
|
|
12
|
+
Unlike traditional generic crawlers (e.g., Scrapy or Crawlee), EvilSpider focuses strictly on **offensive security use cases**: uncovering hidden endpoints, hunting leaked secrets and API keys, extracting parameterized URLs, fingerprinting technologies, mapping forms, and generating actionable reconnaissance dashboards.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 📥 Installation
|
|
17
|
+
|
|
18
|
+
### 📦 Via `pip`
|
|
19
|
+
```bash
|
|
20
|
+
pip install evilspider
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### ⚡ Via `pipx` (Recommended for isolated CLI)
|
|
24
|
+
```bash
|
|
25
|
+
pipx install evilspider
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 🛠️ From Source (Development)
|
|
29
|
+
```bash
|
|
30
|
+
git clone https://github.com/Baba01hacker666/evilspider.git
|
|
31
|
+
cd evilspider
|
|
32
|
+
pip install -e .
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 🚀 Quick Start
|
|
38
|
+
|
|
39
|
+
### 1. Standard Recon Crawl
|
|
40
|
+
```bash
|
|
41
|
+
evilspider crawl -u https://example.com
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Multi-Target Crawl from File
|
|
45
|
+
```bash
|
|
46
|
+
evilspider crawl -l targets.txt -t 20 -o results.json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. Pipeline URLs to Nuclei / FFUF / HTTPX
|
|
50
|
+
```bash
|
|
51
|
+
evilspider crawl -u https://example.com --urls-only | nuclei -t http/cves/
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### 4. Generate Interactive Dark-Mode HTML Dashboard
|
|
55
|
+
```bash
|
|
56
|
+
evilspider crawl -u https://example.com --report-html report.html --report-md report.md
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## ⚡ Key Features
|
|
62
|
+
|
|
63
|
+
- **🚀 Async Concurrency Engine**: Ultra-fast asynchronous crawler built on `asyncio` and `aiohttp` with connection pooling, rate limiting, and configurable worker threads.
|
|
64
|
+
- **🚨 Secret & Sensitive Data Hunter**: Built-in regex rule engine scanning for 30+ types of credentials across responses (AWS keys, Google Cloud API keys, JWT tokens, Stripe keys, GitHub PATs, Slack webhooks, Private keys, Database URIs, and leaked authorization headers).
|
|
65
|
+
- **📝 HTML Form & Input Extractor**: Detects and categorizes HTML forms (Login, Registration, File Uploads, Password Reset, Search) along with hidden CSRF tokens and field names.
|
|
66
|
+
- **📜 Deep JavaScript Analysis**: Extracts REST API routes, dynamic endpoints, AJAX (`fetch`/`axios`/`$.ajax`) targets, Webpack chunks, and Source Map (`.js.map`) references from inline scripts and external JS files.
|
|
67
|
+
- **🛠️ Tech Stack Fingerprinter**: Detects CMS (WordPress, Drupal, Joomla, Shopify), Backend Frameworks (Django, Laravel, Spring Boot, Express, Rails, FastAPI), Web Servers (Nginx, Apache, Caddy, Cloudflare, IIS), and Frontend Frameworks (React, Vue, Next.js, Nuxt, Angular).
|
|
68
|
+
- **🛡️ Security Headers & Reflection Auditor**: Identifies missing security headers (CSP, HSTS, X-Frame-Options, X-Content-Type-Options), dangerous CORS misconfigurations (`*` with credentials), and reflected URL parameters (potential XSS sinks).
|
|
69
|
+
- **📖 API Documentation & Schema Parsing**: Automatically parses Swagger 2.0 / OpenAPI 3.x specifications and GraphQL schemas to extract all declared endpoints, parameters, and routes.
|
|
70
|
+
- **🎯 Active Sensitive File Prober (`probe`)**: Fast active probing module hunting for VCS leaks (`.git/HEAD`, `.svn`), exposed configs (`.env`, `web.config`), backup archives (`dump.sql`, `backup.zip`), and debug endpoints (`actuator/health`, `pprof`) with smart soft-404 detection.
|
|
71
|
+
- **🌐 Scope & Filter Controls**: Scope by domain, subdomains, regex whitelist/blacklist, extension filters, path exclusions, status codes, and loop prevention algorithms.
|
|
72
|
+
- **🎭 Browser Impersonation Profiles**: Modern User-Agent and Client Hints / header profiles for Chrome, Firefox, Edge, Safari, Chrome Android, and Safari iOS.
|
|
73
|
+
- **📊 Multi-Format Reporting**: Export findings to JSON, JSON Lines (NDJSON), CSV, Plain text URLs, Parameter wordlists, Markdown reports, and a standalone responsive **Interactive Dark-Mode HTML Dashboard**.
|
|
74
|
+
- **🔌 UNIX Pipeline Ready**: `--urls-only` and `--silent` modes designed for piping directly into tools like `nuclei`, `ffuf`, `httpx`, `sqlmap`, or `dalfox`.
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 🔥 Recon Workflows
|
|
79
|
+
|
|
80
|
+
### 🕵️ 1) Full Hunter Mode (Secrets + Uploads + Sensitive Probing)
|
|
81
|
+
```bash
|
|
82
|
+
evilspider crawl \
|
|
83
|
+
-u https://target.tld \
|
|
84
|
+
--robots --sitemaps \
|
|
85
|
+
--detect-uploads \
|
|
86
|
+
--probe-sensitive \
|
|
87
|
+
-d 4 -t 15 \
|
|
88
|
+
--report-html report.html
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 🔑 2) Sensitive Endpoint & Backup Prober (`probe`)
|
|
92
|
+
```bash
|
|
93
|
+
evilspider probe \
|
|
94
|
+
-u https://target.tld \
|
|
95
|
+
--categories vcs,env_config,backups,api_docs,actuators_debug \
|
|
96
|
+
-o probe_findings.json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 📁 3) Offline JavaScript & File Analysis (`extract`)
|
|
100
|
+
```bash
|
|
101
|
+
evilspider extract -f app.bundle.js -o extracted_assets.json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 🔐 4) Authenticated Crawl with Session Cookies & Bearer Token
|
|
105
|
+
```bash
|
|
106
|
+
evilspider crawl \
|
|
107
|
+
-u https://target.tld \
|
|
108
|
+
-C 'session=abc12345; role=admin' \
|
|
109
|
+
--bearer-token 'eyJhbGciOiJIUzI1Ni...' \
|
|
110
|
+
-H 'X-Forwarded-For: 127.0.0.1'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 🌐 5) Proxied Crawl through Burp Suite / OWASP ZAP
|
|
114
|
+
```bash
|
|
115
|
+
evilspider crawl \
|
|
116
|
+
-u https://target.tld \
|
|
117
|
+
-x http://127.0.0.1:8080 \
|
|
118
|
+
--insecure \
|
|
119
|
+
--report-redirects
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 🎯 6) Parameter Wordlist Harvesting for Fuzzing
|
|
123
|
+
```bash
|
|
124
|
+
evilspider crawl \
|
|
125
|
+
-u https://target.tld \
|
|
126
|
+
--params-file params_wordlist.txt \
|
|
127
|
+
--urls-only > discovered_urls.txt
|
|
128
|
+
|
|
129
|
+
# Pipe discovered parameters into ffuf
|
|
130
|
+
ffuf -u "https://target.tld/endpoint?FUZZ=1" -w params_wordlist.txt
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## 🛠️ CLI Options Reference
|
|
136
|
+
|
|
137
|
+
### `evilspider crawl` (Main Crawler)
|
|
138
|
+
|
|
139
|
+
| Flag | Description |
|
|
140
|
+
|---|---|
|
|
141
|
+
| `-u, --url` | Target URL to crawl (e.g. `https://example.com`) |
|
|
142
|
+
| `-l, --list` | File containing target URLs (or `-` for stdin) |
|
|
143
|
+
| `-c, --config` | Path to JSON configuration file |
|
|
144
|
+
| `-t, --threads` | Number of concurrent workers (default: `10`) |
|
|
145
|
+
| `-d, --max-depth` | Maximum crawl depth (default: `3`) |
|
|
146
|
+
| `-m, --max-links` | Maximum total links to visit (default: `5000`) |
|
|
147
|
+
| `--max-time` | Maximum crawl duration in seconds |
|
|
148
|
+
| `--rate-limit` | Maximum requests per second |
|
|
149
|
+
| `--delay` | Delay between requests in seconds |
|
|
150
|
+
| `-s, --status` | Interesting status codes (default: `200`) |
|
|
151
|
+
| `--exclude-status` | Status codes to ignore (e.g. `404,500`) |
|
|
152
|
+
| `-e, --exts` | Extension focus list (e.g. `php,bak,env,json`) |
|
|
153
|
+
| `-k, --keywords` | Keyword filter for response bodies |
|
|
154
|
+
| `-p, --params-only` | Only report URLs with query parameters |
|
|
155
|
+
| `--include-subdomains` / `--no-include-subdomains` | Toggle subdomain in-scope crawling (default: `true`) |
|
|
156
|
+
| `--scope-regex` | Whitelist regex pattern for allowed URLs |
|
|
157
|
+
| `--exclude-regex` | Blacklist regex pattern for ignored URLs |
|
|
158
|
+
| `--exclude-paths` | Comma-separated paths to ignore (`/logout,/signout`) |
|
|
159
|
+
| `--robots` / `--sitemaps` | Parse `robots.txt` and `sitemap.xml` |
|
|
160
|
+
| `--detect-uploads` | Detect forms with file uploads |
|
|
161
|
+
| `--probe-sensitive` | Actively probe target for sensitive files (.git, .env, backups, etc.) |
|
|
162
|
+
| `--probe-categories` | Prober categories (`vcs,env_config,backups,api_docs,actuators_debug,graphql,admin_auth`) |
|
|
163
|
+
| `--no-secrets` | Disable secrets and API keys scanner |
|
|
164
|
+
| `--no-forms` | Disable HTML forms extractor |
|
|
165
|
+
| `--no-tech` | Disable technology stack fingerprinter |
|
|
166
|
+
| `--no-security-audit`| Disable security headers auditor |
|
|
167
|
+
| `-A, --user-agent` | Custom User-Agent string |
|
|
168
|
+
| `-i, --impersonate` | Browser profile (`chrome`, `firefox`, `edge`, `safari`, `chrome-android`, `safari-ios`) |
|
|
169
|
+
| `-C, --cookies` | Cookie string or path to cookie file |
|
|
170
|
+
| `-H, --headers` | Custom header (repeatable, e.g. `-H 'X-Header: value'`) |
|
|
171
|
+
| `-x, --proxy` | Proxy URL (HTTP/SOCKS5 e.g. `http://127.0.0.1:8080`) |
|
|
172
|
+
| `--bearer-token` | Authorization Bearer token |
|
|
173
|
+
| `--auth-basic` | HTTP Basic Auth in format `user:pass` |
|
|
174
|
+
| `-T, --timeout` | Request timeout in seconds (default: `5`) |
|
|
175
|
+
| `--retries` | Number of request retries on failure (default: `2`) |
|
|
176
|
+
| `--follow-redirects` | Follow HTTP redirects (default: `true`) |
|
|
177
|
+
| `--report-redirects`| Include redirect chains in results |
|
|
178
|
+
| `--insecure` | Disable SSL certificate verification |
|
|
179
|
+
| `-o, --output` | Primary output JSON file path |
|
|
180
|
+
| `-j, --json` | Stream findings as JSON Lines to stdout |
|
|
181
|
+
| `--csv` | Export findings as CSV |
|
|
182
|
+
| `--report-html` | Generate interactive standalone HTML dashboard |
|
|
183
|
+
| `--report-md` | Generate Markdown summary report |
|
|
184
|
+
| `--urls-only` | Clean stdout output containing only discovered URLs |
|
|
185
|
+
| `--params-file` | Save discovered query parameter wordlist |
|
|
186
|
+
| `--secrets-file` | Save discovered secrets to separate JSON |
|
|
187
|
+
| `--forms-file` | Save extracted forms to separate JSON |
|
|
188
|
+
| `-q, --quiet` | Suppress banner and info logs |
|
|
189
|
+
| `--silent` | Completely silent mode for UNIX piping |
|
|
190
|
+
| `-v, --verbose` | Enable debug logging |
|
|
191
|
+
| `--no-color` | Disable ANSI terminal colors |
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 📊 Interactive HTML Dashboard
|
|
196
|
+
|
|
197
|
+
EvilSpider generates a standalone, self-contained HTML report with:
|
|
198
|
+
- Summary metric cards (Endpoints, Secrets, Forms, Subdomains, Technologies, Security Issues)
|
|
199
|
+
- Dynamic table filtering and instant keyword search
|
|
200
|
+
- Dedicated tabs for Secrets, Forms, Technologies, Security Headers, API Docs, and Subdomains
|
|
201
|
+
- Zero external CDN dependencies (works completely offline)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 🏗️ Architecture
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
evilspider/
|
|
209
|
+
├── analyzer/
|
|
210
|
+
│ ├── secrets.py # 30+ regex rules for API keys, tokens & credentials
|
|
211
|
+
│ ├── tech.py # Web server, framework & CMS fingerprinter
|
|
212
|
+
│ ├── security.py # Security headers, CORS & reflected param auditor
|
|
213
|
+
│ └── api_parser.py # Swagger 2.0 / OpenAPI 3.x & GraphQL parser
|
|
214
|
+
├── extractors/
|
|
215
|
+
│ ├── html_extractor.py # Fast HTML parser for links, scripts, frames & comments
|
|
216
|
+
│ ├── js_extractor.py # JavaScript REST endpoint & webpack chunk extractor
|
|
217
|
+
│ ├── form_extractor.py # HTML form, input & CSRF token parser
|
|
218
|
+
│ └── sourcemap.py # Source map (.js.map) unminified route extractor
|
|
219
|
+
├── prober/
|
|
220
|
+
│ ├── probe.py # Active sensitive file prober with soft-404 detection
|
|
221
|
+
│ └── wordlists.py # Curated recon path lists (VCS, configs, backups, APIs)
|
|
222
|
+
├── output/
|
|
223
|
+
│ ├── formatter.py # ANSI terminal formatting, logo & summary tables
|
|
224
|
+
│ ├── reporter.py # Multi-format reporter (JSON, CSV, MD, HTML, TXT)
|
|
225
|
+
│ └── templates/
|
|
226
|
+
│ └── report_template.html # Responsive dark-mode dashboard
|
|
227
|
+
├── tests/ # Comprehensive unit and integration test suite
|
|
228
|
+
├── _version.py # Single source of truth for version and author metadata
|
|
229
|
+
├── config.py # Config parser and CLI argument validator
|
|
230
|
+
├── crawler.py # Async crawl orchestrator and queue worker pool
|
|
231
|
+
└── main.py # CLI entrypoint (crawl, probe, extract, report)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## ⚖️ Legal Disclaimer
|
|
237
|
+
|
|
238
|
+
EvilSpider is developed for authorized security assessments, penetration testing, bug bounty reconnaissance, and educational purposes only. Do not use this tool against targets without explicit authorization. The authors assume no liability for misuse.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""Analyzer module for EvilSpider: Secrets, Tech Fingerprinting, Security Auditing, API parsing."""
|
|
2
|
+
|
|
3
|
+
from .api_parser import ApiParser
|
|
4
|
+
from .secrets import SecretHunter
|
|
5
|
+
from .security import SecurityAuditor
|
|
6
|
+
from .tech import TechDetector
|
|
7
|
+
|
|
8
|
+
__all__ = ["SecretHunter", "TechDetector", "SecurityAuditor", "ApiParser"]
|