
OmniScan is a lightweight, multi-engine vulnerability scanner based on Python, designed for red team operations and security research. It integrates a lightweight Nuclei engine (Lite) and Afrog engine, and provides powerful asset collection and result management capabilities.
simpleeval instead of eval and executes DSL expressions in a sandbox environment to prevent malicious templates from executing code.{{lang-file}} -> etc/passwd), supporting intelligent Fuzzing.hmac, gzip, reverse, rand_base, etc.).flow and req-condition logic control.cookie-reuse session persistence and redirects redirection control.Interactsh client, automatically handles vulnerabilities with no direct output (e.g., Blind RCE, SSRF).tqdm progress bar, showing real-time scanning progress of each plugin on each target.BasePlugin class and implement the check(url) method.git_config.py: Detects .git/config leakagespring_boot.py: Detects Spring Boot Actuatords_store.py: Detects .DS_Store leakagephpinfo.py: Detects phpinfo() pagesbackup_files.py: Detects common backup files (.bak, .zip, etc.)swagger_ui.py: Detects Swagger UI documentationcountry="CN").asyncio and aiohttp framework.interactsh-client binary. (I have uploaded interactsh-client.zip, you can extract it directly in this directory)xxx.oast.pro).{{interactsh-url}} in templates with the real-time obtained Payload.Clone Repository:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
Install Dependencies:
pip3 install -r requirements.txt
Configure Tools (Optional):
Afrog or XRay, ensure the respective executable is in the project root directory or system path.config.yml (optional) to set API Keys and scan parameters.Scan a single URL:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
Search assets from FOFA and scan using Nuclei Lite engine:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/
Read targets from urls.txt and scan:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/cve/
python3 omniscan.py -l urls.txt --tool lite -T ./templates/python3 omniscan.py -l urls.txt --tool afrogpython3 omniscan.py -l urls.txt --tool xrayRun without --tool parameter to enter interactive menu for tool selection:
python3 omniscan.py -l urls.txt
Scan for Blind RCE vulnerabilities (automatically enables Interactsh):
python3 omniscan.py -l urls.txt --tool lite -T ./templates/blind-rce.yaml
If OOB interaction is detected, the console will output [OOB DETECTED] and record the vulnerability.
Use Nuclei Lite engine and enable all plugins:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/ --plugins
Run only Git Config and PHPInfo plugins:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/ --plugin-file plugins/git_config.py,plugins/phpinfo.py
Check template compatibility without actual scanning:
python3 omniscan.py --classify-only --tool lite -T ./templates/
config.yml)app:
lite_timeout: 10 # Request timeout (seconds)
lite_threads: 10 # Concurrent threads
use_async: true # Enable async mode
user_agents: # Custom User-Agent pool
- "Mozilla/5.0..."
fofa:
email: "your_email"
key: "your_key"
shodan:
api_key: "your_key"
output:
formats: ["json", "csv", "html"] # Report formats
omniscan.py: Main program entry, responsible for parameter parsing and task scheduling.nuclei_lite.py: Nuclei Lite core engine, implements YAML template parsing and scanning.result_manager.py: Result management module, handles deduplication and report generation.database.py: SQLite database management.config.py: Configuration loading module.Q: What does [OOB DETECTED] mean?
A: This means the scanner successfully detected an Out-of-Band interaction. It typically indicates that the target triggered a DNS or HTTP request callback, proving the existence of vulnerabilities such as Blind RCE, SSRF, or Blind SQLi.
Q: How to configure FOFA/Shodan API?
A: You can fill in the API Key in the config.yml file, or set it through environment variables FOFA_EMAIL, FOFA_KEY, SHODAN_API_KEY.
Q: Which operating systems are supported? A: OmniScan is cross-platform, supporting Linux, macOS, and Windows. External tools (e.g., afrog, interactsh-client) need to be executable on the current system.
MIT License
| Parameter | Description | Example |
|---|
-u URL | Scan a single URL | -u http://example.com |
-f | Use FOFA to search assets | -f 'country="CN"' |
-s | Use Shodan to search assets | -s 'apache' |
-l FILE | Specify local target file | -l targets.txt |
-T TEMPLATE | Specify Nuclei template path (file/directory) | -T ./templates/ |
--tool NAME | Specify scan tool (nuclei/afrog/xray/lite) | --tool lite |
--severity | Specify vulnerability severity (default critical,high) | --severity high,medium |
--plugins | Enable Python plugin scanning (scan plugins/ directory) | --plugins |
--plugin-file FILE | Specify specific plugin file(s) to run (comma-separated) | --plugin-file plugins/test.py |
--new | Only scan newly released templates (requires Nuclei support) | --new |
--no-resume | Disable resume from breakpoint | --no-resume |
--verbose | Show detailed debug logs | --verbose |