Enterprise-grade BOLA and API Vulnerability Scanner
Project description
Janus Security Scanner 🛡️
Janus is an enterprise-grade API security scanner designed for Red Teams and advanced security testing. Unlike traditional scanners, Janus uses a distinct approach for detecting BOLA (Broken Object Level Authorization), BFLA, and Race Conditions without relying on external AI APIs.
Features 🚀
- BOLA/IDOR Detection: Automatic analysis of resource access patterns.
- Broken Function Level Authorization (BFLA): Vertical privilege escalation testing.
- PII & Secrets Scanning: Detect sensitive data leaks in API responses.
- Race Condition Testing: Multi-threaded exploitation of concurrency bugs.
- SSRF Testing: Server-Side Request Forgery with 25+ payloads (internal networks, cloud metadata, file protocols).
- Stealth Mode: WAF evasion with header rotation, jitter, and proxies.
- Proxy Support: HTTP, HTTPS, and SOCKS5 proxies (including Tor).
- Custom Headers: Add custom headers to all requests.
- Team Collaboration: Real-time finding synchronization via Redis/Hive-Mind.
- CI/CD Integration: Export findings to SARIF for GitHub Security tab.
- Web Dashboard: Modern UI for managing scans and viewing reports.
- Webhook Notifications: Send alerts to Discord, Slack, or custom endpoints.
Installation 📦
PyPI (Recommended)
pip install janus-security
From Source
git clone https://github.com/ksanjeev284/janus.git
cd janus
pip install .
Quick Start 🏃♂️
1. Web Dashboard (Recommended)
Option A: Using Docker (Fastest)
# Pull and run the latest image
docker run -p 8000:8000 ghcr.io/ksanjeev284/janus:latest
Option B: From Source Start the web server and dashboard:
python -m janus.interface.web.server
# Access at http://localhost:8000
2. CLI Usage
Janus provides a powerful CLI for automation testing.
Basic BOLA Scan:
janus scan --victim <token> --attacker <token> --host <url>
SSRF Testing:
janus ssrf --endpoint https://api.example.com/fetch --param url --quick
Stealth Test:
janus stealth-test
Vertical Escalation (BFLA):
janus bfla --host https://api.example.com --low <user_token>
3. Proxy & Custom Headers
Using the HTTP client programmatically:
from janus.core.http_client import JanusHTTPClient
client = JanusHTTPClient()
client.set_proxy("http://proxy.example.com:8080") # HTTP proxy
client.set_proxy("socks5://127.0.0.1:9050", "socks5") # Tor
client.add_global_header("X-API-Key", "your-key")
client.set_ssl_verify(False) # For testing
status, body, raw = client.get("https://api.example.com", token="Bearer xyz")
Architecture 🏗️
Janus operates by "learning" from legitimate traffic (via its proxy or provided tokens) to understand the structure of API resources. It then attempts to access those same resources using a different user's context (the attacker), analyzing the structural similarity of the responses to determine vulnerability.
Contributing 🤝
We welcome contributions! Please see CONTRIBUTING.md for details.
License 📄
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file janus_security-0.1.3.tar.gz.
File metadata
- Download URL: janus_security-0.1.3.tar.gz
- Upload date:
- Size: 186.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a0c8198cb9ff39ffe582f6ba3c5d6cff0a8ea6fc22f503721ce80e76167657c6
|
|
| MD5 |
1f83c0214570c5c6ed8954ed84474bbe
|
|
| BLAKE2b-256 |
a1b420cb4a1ee575bc7b6b86255ce7185e9b517a97693c35ea7bd90f994888e5
|
File details
Details for the file janus_security-0.1.3-py3-none-any.whl.
File metadata
- Download URL: janus_security-0.1.3-py3-none-any.whl
- Upload date:
- Size: 96.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3662e9fbe2d8b1bcefa963f826bda5d41138072425292f11bb1798b26b29f11
|
|
| MD5 |
87aceecd7346a2187e7e490e9b89999c
|
|
| BLAKE2b-256 |
4fdb96f60c412fda8cd5058ab89f21dcf29591ac82b6618b4049eec50ea8d5ed
|