## https://sploitus.com/exploit?id=DCE1B782-AD4E-59B9-882D-3AB763737631
```
βββ βββ ββββββ ββββββββββ ββββββ
βββ βββββββββββ βββββββββββββββββββ
βββ βββββββββββ ββ βββββββββββββββββββ
ββββ ββββββββββββ ββββββββββββββββββββββββ
βββββββ βββ βββ ββββββ βββ ββββββ βββ
βββββ βββ βββ ββββ βββ ββββββ βββ
```
# β‘ V A J R A
### Automated Penetration Testing Framework
**by `Pintu Kumar Sutradhar`**
`recon` Β· `network` Β· `web` Β· `exploitation` Β· `post-exploitation`




---
> β οΈ **Authorized use only.** VAJRA is a professional security assessment
> tool. Running it against systems you do not own or lack written permission
> to test is illegal. An authorization gate is enforced on every run.
> π« **Maintainer-only, no contributions.** This repository is published for
> reference and the maintainer's own use. Issues are disabled and external
> pull requests will **not** be accepted.
---
## Highlights
- **Full-spectrum network testing** β asynchronous sweep of all 65,535 TCP
ports with raw-SYN mode, deep binary handshakes (MySQL, MSSQL, SMB2, RDP,
VNC, PostgreSQL, MongoDB, Redis, memcached, LDAP, SMTP), TLS certificate
auditing and optional UDP probes.
- **Adaptive web attack engine** β 3,800+ payloads across 16 injection
classes; when a WAF blocks the standard arsenal, fingerprint-specific
mutation chains (and optionally a local LLM) generate evasions until the
objective is met.
- **Real exploitation, not just detection** β UNION-based SQL injection data
extraction, live command-execution channels with reverse-session support,
JWT forgery, SQLi auth bypass, credential spraying, default-credential
attacks against 20+ platforms.
- **Post-exploitation** β system situational awareness through established
channels, including automated privilege-escalation path analysis.
- **Intelligence built in** β offline bannerβCVE correlation across 133
products, an intel knowledge base (`intel/`: ports Β· services Β· default
creds Β· login surfaces Β· leak paths Β· cloud Β· os), MITRE ATT&CK tagging on
every finding, risk scoring with letter grades, and an AI campaign planner
(opt-in).
- **Workspaces & retest deltas** β every run is snapshotted (auto per-target,
or `--workspace NAME`). Re-running a target surfaces a **new / fixed /
still-open** delta vs the previous snapshot, logs a running
**`workspace_report.md`**
narrative, and lets you export or import findings as JSON for collaboration.
- **Pivoting & multi-hop egress** β SOCKS5 and HTTP CONNECT hop chains
(`tools/pivot.py`, `--socks5`, `rawhttp --connect-proxy`); local SOCKS5
pivot servers, reverse/direct tunnels, and chain probing between segments.
- **Command & control** β standalone multi-session listener with **staged
payloads**, TLS stagers, payload obfuscation, file exfil/upload markers and
per-session transcripts.
- **AD privileged depth** β beyond hashes: a self-relative **DACL parser**
(BloodHound-lite) flags WRITE_DAC/WRITE_OWNER/GENERIC_ALL grants and
dangerous trustees (Everyone, Anonymous, Domain Usersβ¦), plus golden /
silver-ticket forge playbooks.
- **Post-exploitation loot survey** β over SSH/every established channel,
breadcrumb hunting for private keys, cloud creds, kube configs, netrc /
history and password-adjacent notes (read-only, never downloads).
- **Compliance & synthesis in reports** β findings map to **CIS / NIST CSF /
PCI DSS** controls with a prioritized remediation playbook, an auto-written
executive narrative, and cross-host campaign ("spread") correlation.
- **Operator toolkit** β `tools/` ships 11 standalone stdlib utilities
(soft-404-aware fuzzer, offline CVE lookups, hash forensics, DNS recon,
raw HTTP, PoC generator, tooling matrix β see `docs/TOOLKIT.md`) plus
`examples/` for mission playbooks.
- **Zero-mandatory-dependency core** β pure standard library operation;
optional accelerators install cleanly.
---
## Installation
```bash
git clone https://github.com//vajra.git && cd vajra
./setup.sh # deps + wordlists + QA suite
python3 vajra.py --selftest # 37-point verification
```
Runs on stock Python β₯ 3.9. Optional extras (`requests`, `paramiko`,
`scapy`, `dnspython`, `ollama`) are listed in `requirements.txt`; every one
has a stdlib fallback.
---
## Usage
```bash
python3 vajra.py -t [options]
```
| Example | What it does |
|---|---|
| `vajra -t 10.10.10.5 --profile full --aggressive --yes` | complete engagement: all ports, deep tiers, active exploitation |
| `vajra -t https://app.local --yes` | fast application triage |
| `vajra -t 192.168.1.0/24 --udp --syn --yes` | subnet discovery incl. raw SYN + UDP |
| `vajra -t @targets.txt --profile stealth --yes` | low-and-slow batch |
| `vajra -t http://app.local --proxy http://127.0.0.1:8080 --yes` | through Burp |
| `vajra -t 10.0.0.5 --socks5 127.0.0.1:9050 --yes` | egress via SOCKS5 (Tor etc.) |
| `vajra -t https://app.local --workspace app1 --yes` | named workspace for retest deltas |
| `vajra --export-findings findings.json -t 10.0.0.5 --yes` | export merged workspace findings |
| `vajra --import-findings findings.json -t 10.0.0.5 --yes` | import findings β full reports |
| `vajra --listener` | standalone multi-session handler |
Targets: IP Β· CIDR Β· URL Β· comma list Β· `@file`.
Reverse stages (`--aggressive`) request your callback endpoint interactively
at the moment they're needed β pre-fill via `--lhost --lport ` to skip
the prompt.
---
## Profiles
| | ports | wordlists | mutation budget | notes |
|---|---|---|---|---|
| `quick` *(default)* | top-100 | fast tier | 60 / 10 | triage |
| `full` | all 65535 | **complete tiers** | 160 / 28 | time-based blind SQLi |
| `vast` | all 65535 + UDP | **complete tiers** | 320 / 48 | maximum coverage: 400-page crawl, heightened concurrency |
| `stealth` | top-100 | fast | reduced | delays + UA rotation |
| `webonly` | context | fast | standard | application-focused |
| `recon` | top-100 | β | β | intelligence only |
---
## Modules
**Recon** β DNS records (+ **AXFR zone-transfer attempt** from authoritative
NS via dig or raw DNS-over-TCP) Β· WHOIS (raw protocol fallback) Β· subdomain
enum Β· email harvest
**Network** β async/SYN port scanner Β· service & version detection Β· deep
handshake probes Β· LDAP rootDSE Β· **SMTP audit** (open-relay envelope check
without sending mail + VRFY/EXPN user enumeration) Β· **SMB/NFS share
enumeration** (read-only nmap `smb-enum-shares` / `smbclient -L` /
`showmount -e`, risky NFS-export flagging; pure-stdlib anonymous SMBv1 RAP
NetShareEnum fallback when no SMB tooling is installed β never writes,
read-only level-1 walk) Β· **SNMPv1 community sweep** (pure BER GET for
sysDescr/sysName/sysUpTime against a closed wordlist, triggered by a live
161/udp response, read-only β no SETs) Β· OS fingerprint Β·
UDP probes (DNS CHAOS / NTP / SNMP) Β· FTP/SSH/HTTP brute-force Β·
**data-driven unauth-exposure sweeps** covering no-auth Redis, raw Docker API
+ Docker Swarm, Memcached stats, Elasticsearch / InfluxDB / CouchDB without
auth, ZooKeeper / Consul / etcd open, Kafka, k8s/kubelet consoles, SMTP
banner leaks (probes catalogued in `intel/services.json`)
**Active Directory** β compact SMB exploitation folds SMBv1 dialect +
MS17-010 (EternalBlue) verdict + NTLM challenge fingerprint + pass-the-hash
auth check into one module gated on port 445. Kerberos runs an unauthenticated
pass (KDC user enum + AS-REP roasting) and, with any supplied credentials, an
authenticated pass (real kerberoasting via impacket β hashcat -m 13100).
LDAP mining is dual-pass too: anonymous enumeration always, then a deeper
authenticated pass (adminCount / delegation / no-preauth / computers /
forest trusts) whose LDAP bind result is reported explicitly.
Active chain (`--aggressive` + `--ad-user/--ad-pass/--nthash`): credential
verification unlocks **lateral movement** β an impacket psexec β wmiexec β
smbexec β atexec command-execution channel on the target that makes
post-exploitation genuinely reachable β plus **privilege-scalation ops**:
SYSVOL/GPP `cpassword` theft, an nmap ZeroLogon verdict, DC-Sync NTDS NTLM
dump (hashcat -m 1000, golden-ticket guidance) and a **bounded offline
hashcat crack** of every dumped hash set, reporting recovered plaintext
credentials back into findings. NTLM-relay resources (impacket-ntlmrelayx)
and potato/RDP/delegation hints are dropped for operator run. All of it is
step-and-gated β nothing executes without a prior verified signal.
`ad.power` (when a DC's LDAP reach is confirmed) dives one layer deeper:
it pulls raw `nTSecurityDescriptor` blobs for computers, users and groups,
parses each **self-relative DACL**, and flags dangerous grants β WRITE_DAC /
WRITE_OWNER / GENERIC_ALL / control-access masks, and risky trustees
(Everyone, Anonymous, Authenticated Users, Domain Users) plus their
discovered object. It never touches ACLs; with NTDS hashes already in state
(from DC-Sync) it emits the exact golden / silver-ticket `ticketer` +
`secretsdump` command lines instead of inventing delegation (`--aggressive`
required).
**Web** β crawler (robots + sitemap.xml aware) Β· dirbuster (soft-404 aware) Β·
login-form auth (auto-discovers the form β driven by the `intel/login_surfaces`
candidate list β handles CSRF + session-cookie
adoption, and drives the whole crawl authenticated β see `--web-*` flags) Β·
injection suite routed per parameter/body kind β **form, query, JSON and XML
bodies** β covering XSS Β· SQLi (error-based + **boolean/time-blind
differential**) Β· LFI Β· command injection Β· **blind RCE via OOB callback** Β·
SSTI Β· NoSQL Β· **XXE whole-body** Β· LDAP/XPath Β· HTTP parameter pollution Β·
open redirect Β· CRLF/header injection Β· **Host-header / web-cache poisoning** Β·
stored-XSS deposit sweep Β· **API surface** (OpenAPI/Swagger discovery,
endpoint inventory, **unauthenticated + base-ID authz sweep catching
BOLA/IDOR and token-less CSRF surfaces**, JWKS algorithm-confusion +
`alg:none`, OAuth/OIDC metadata audit) Β· **blind SSRF + cloud metadata
(OOB-confirmed)** β and **`web.ssrf_pivot`: once an SSRF is confirmed, it is
drilled into an internal loopback port scan** (latency + response-differential
heuristic, no exploitation) Β· **`web.race`: TOCTOU / race-condition checks** on
coupon/promo/transfer/0x registration surfaces (near-simultaneous POST bursts,
no burned transaction) Β· **domain-takeover probe** (raw DNS CNAME β dangling) Β·
**rate-limit / account-lockout policy checks** (burn-user bursts) Β·
**upload handling** (traversal / double-ext / null-byte / stored-marker
retrievability) Β· **wire tests** (WebSocket upgrade, CL.TE/TE.CL smuggling
signal, deserialization markers) Β· **cloud exposure** (read-only S3 / GCS /
Azure-Blob bucket listing probes from domain + subdomain candidates) Β· JWT
auditor Β· GraphQL prober Β· prototype pollution Β· WAF fingerprinting Β· tech
stack + version β **built-in CVE correlation** (or `--cve-update` for a live
CIRCL lookup when the offline KB misses) Β· security headers (+ full
CORS matrix, HSTS, cookie SameSite) Β· **TLS audit incl. cert expiry /
self-signed / SAN coverage** Β· DOM-XSS JS sink/source hunting Β· sitemap-consume
crawling Β· JS secret hunting
Blind detections (SSRF, RCE) use an embedded OOB callback listener β auto-on
in `full`/`vast`, or `--oob`.
A **sensitive-file checklist** (`web.loot`, driven by `intel/loot_paths.json`)
sweeps classic leak locations β `.git/HEAD`+config, `.env*`, backup archives,
`phpinfo.php`, Spring actuator, admin panels β with marker-led heuristics and
soft-404 filtering so checked paths are not confused with template 404s.
**Exploitation** β SQLi extractor (columns β echo position β version/db/user/
tables) Β· execution-channel negotiation (unix/windows) Β· reverse sessions Β·
full auth-bypass family (25 SQLi/comment/tautology/default pairs + OTP tricks:
drop, weak-code, injection) Β· login-form brute-force (aggressive-gated, caps +
delay, reveals leaks against OTP-protected forms) Β· **catalog-driven default
credentials** (basic-auth panels run read-only; form/service default-cred
tries gated behind `--aggressive`; `intel/creds_default.json` covers Tomcat,
JBoss, WebLogic, WildFly, Jenkins, Grafana, routers, cameras, DBsβ¦) Β·
password spray Β· CVE exposure probes
**Post** β identity/kernel/network/logins/accounts/sudo/SUID/cron/env/SSH
material/container hints + privesc candidate analysis β runs against every
established channel: injected RCE channels, impacket lateral channels and
reverse sessions.
`post.loot` adds a read-only high-value file survey over any SSH session
(paramiko with discovered creds): private keys, cloud provider creds, kube
configs, netrc / shell history / docker config and password-adjacent notes β
reports what is *present and readable* without downloading or modifying
anything; without an SSH transport or creds it logs an info finding instead
of pretending.
---
## Adaptive evasion
```
direct ββblocked?βββΊ fingerprint guard (Cloudflare Β· Akamai Β· Imperva Β·
ModSec Β· AWS WAF Β· F5 Β· Sucuriβ¦)
β² β
β escalate operator chains: inline-comments Β· case-swap
β double-encode Β· utf8-overlong Β· null-byte Β· HPP β¦
βββββ mutant achieves motive? βββΊ logged per attempt (--ai adds
model-crafted variants)
```
---
## Intelligence
- **CVE knowledge base** β 133 products / 183 operator-parsed version ranges
matched directly against harvested banners (Heartbleed β Log4Shell,
EternalBlue, ProxyLogon, BIG-IP TMUI, FortiOS, vCenter, Confluence OGNLβ¦).
- **MITRE ATT&CK** β every finding auto-tagged with technique IDs.
- **Campaign planner** β mid-run next-best-action list combining rule-based
logic with findings context.
- **Optional AI brain** β add `--ai` to involve a local Ollama + **Qwen3 8B**
(auto-installs; fully offline once pulled). Use `--ai-select` to hand the
mission to the operator-agent: Qwen3 inspects each target's live state
(ports, services, web targets, findings) and picks and executes the best
next action from a closed tool set β deeper port probes, re-running
modules, path fuzzing, PoC crafting, brute force and exploit routing.
Exploration is always safe; exploitation stays behind `--aggressive`;
every step is logged to `evidence/ai_mission_log.md`.
---
## Toolkit & knowledge base
`tools/` (stdlib-only, runnable standalone β see `docs/TOOLKIT.md`):
`netkit` (async port scan + risk table) Β· `fuzzurl` (soft-404-aware fuzzer) Β·
`cve` (offline CVE lookup) Β· `hashid` Β· `listener` (reverse-session handler;
`--staged/--tls/--obfuscate`) Β· `dnsrecon` (raw-DNS recon + subdomains) Β·
`pivot` (SOCKS5 servers, reverse/direct tunnels, hop-chain probing) Β·
`envcheck` (read-only tooling
matrix vs `config/tooling.json`) Β· `pocgen` (inert PoC evidence templates) Β·
`rawhttp` (raw request builder + `--connect-proxy`) Β·
`wordlists` (inspect/filter/merge).
`intel/` data drives module behavior: `ports.json` (476 ports + risk notes) Β·
`services.json` (probe catalog for `network.service_exposure`) Β·
`creds_default.json` (default-credential catalog for `exploit.creds`) Β·
`login_surfaces.json` (crawler + policy routing) Β· `loot_paths.json`
(`web.loot`) Β· `os.json` Β· `cloud.json` Β· `community_strings.json` (wordlist
for the SNMPv1 sweep) Β· plus `cve_db.json` and `signatures.json`.
`examples/` contains a command cheat-sheet, an end-to-end pentest scenario
playbook and a runtime `example_config.json`.
---
## Wordlists
Deterministically forged (~303k entries, regenerate:
`python3 tools/gen_wordlists.py`):
| Tier | users | passwords | dirs | subs |
|---|---|---|---|---|
| fast (always) | 600 | 2,500 | 1,200 | 1,500 |
| **complete** (`full`/`--aggressive`) | 115,000 | 148,000 | 16,000 | 18,193 |
---
## Output
Results land in `Outputs///` β reports (HTML dashboard, JSON,
Markdown, **PDF** β clean stdlib PDF writer, paginated + per-severity colour),
SQLite store, full transcript log and an `evidence/` folder of
raw proof dumps per target, plus a run-wide `summary.json`.
Each report now carries the full narrative stack: an auto-written **executive
synthesis** (attack surface, priority signal, exposed web tier), a
**compliance remediation playbook** (every finding cross-referenced to CIS
Benchmark / NIST CSF / PCI DSS 4.0, grouped by severity), a **retest delta**
`vs` the previous workspace snapshot, and cross-host campaign ("spread")
patterns. Workspaces live under `Outputs/workspaces//` (or your
`--workspace` name) β latest snapshot, run history, per-target state and a
running `workspace_report.md`.
## Workspaces, retests & collaboration
- Snapshots are taken automatically at run end. Re-running the same target
produces a delta report (new / fixed / still-open) so an engagement's
progress is trackable across sessions.
- If you kill a running scan, the workspace snapshot + reports for whatever
was found are still persisted for already-reported targets, and the run
summary is written.
- `--export-findings FILE -t ` merges every finding across that
target's snapshots into one JSON file (finding fields, import-safe).
- `--import-findings FILE -t ` ingests findings from a peer/JSON
export and renders complete reports (HTML/JSON/MD) without re-scanning β
handy for merging results from another operator or an earlier engagement.
## Pivoting & egress
- `--socks5 HOST:PORT` routes web + raw probes through a SOCKS5 proxy;
`--proxy URL` does the same for plain HTTP.
- `tools/rawhttp.py --connect-proxy HOST:PORT` walks an HTTP CONNECT
tunnel for arbitrary raw requests.
- `tools/pivot.py` (stdlib) gives you a full pivot toolbox: local SOCKS5
servers, reverse/direct tunnels between segments, multi-hop chain probing
(`socks5://β¦,http://β¦`), and a `--probe` mode to validate reachability
hop by hop. Chain resolution shares the same engine the framework itself
uses.
## Command & control
`tools/listener.py` / `--listener` is a standalone handler for reverse
sessions: interactive shells, `getfile` / `upload` file transfer commands,
multi-session selection, and **staged payloads** (`--staged`) that shrink the
initial connect payload to a bootstrap that pulls the full stage over the
socket, with TLS stagers (`--tls`) and `--obfuscate` (packed payloads) β
`python3 -c "β¦"` one-liners you can paste directly.
---
## CLI reference
```text
-t, --target IP | CIDR | URL | comma list | @file
-p, --ports 80 | 22-1000 | top100 | top1000 | extended | all
--profile quick | full | vast | stealth | webonly | recon
--aggressive deep tiers + intrusive exploitation + reverse stages
--lhost/--lport pre-set callback endpoint for reverse stages
--listener standalone multi-session handler
--ai enable local Ollama+Qwen3 8B brain (opt-in)
--ai-select mission mode: Qwen3 picks next actions per target
--udp UDP service probes (DNS/NTP/SNMP)
--syn raw SYN scanning (root)
--no-brute disable credential attacks
--ad-user/--ad-pass/--nthash AD creds β authenticated LDAP + real kerberoasting
--web-user/--web-pass webapp creds β AUTHENTICATED crawl/scan of the app
--web-login explicit login URL (form is auto-discovered otherwise)
--web-otp static OTP code for the login flow
--web-totp-secret base32 TOTP secret β RFC 6238 code generated at login
--import-findings FILE import findings from JSON file and generate reports
--export-findings FILE export findings from workspace to JSON file
-o, --output output root (default: Outputs/)
--workspace name the workspace (default: auto per-target)
--format html | json | md | pdf | all
--socks5 HOST:PORT egress via a SOCKS5 proxy (web + raw probes route through)
--cve-update when the offline KB misses a product:version, query the
live CIRCL CVE API (cached in intel/cve_online_cache.json)
--modules run only listed modules
--exclude-modules skip listed modules
--proxy HTTP proxy
--oob run an OOB HTTP callback listener for blind detections
--oob-port PORT fixed local port for the OOB listener (default: ephemeral)
-v/-vv verbose / trace
--selftest internal QA suite
```
## AI-select mission mode
When you add `--ai --ai-select`, VAJRA hands each target to the operator-agent
after the normal phases complete. Qwen3 8B receives a live snapshot β open
ports, banners, web targets, API endpoint count, current findings, whether
exploitation is armed β **plus the full module catalog** so it can pick any
capability by id. It returns one JSON action from a closed tool set:
`scan_more` (extra TCP probes) Β· `run_module` (any module id) Β· `web_fuzz`
(path hunting; keeps the primary target so sensitive-path checks still run) Β·
`craft_exploit` (PoC generation, saved to evidence) Β· `exploit` (routes routed
to the matching exploit path) Β· `brute` (credential attacks) Β· `ad_chain`
(validated-credential AD movement + DC-Sync / GPP / crack sequence) Β· `assess`
(narrative) Β· `done` (stop).
The free-text fallback understands intent keywords (ssrf, xxe, jwt, api,
idos, buckets, takeover, rate-limit, smuggling, ssti, upload β¦) and routes
them to the matching module β so brief directives are enough. Read-only
triage (CVE exposure probes) is not gated behind `--aggressive`.
Everything is executed by the framework's own safe adapters β model text is
never run as code. Exploit/brute/intrusive actions require `--aggressive`;
without it, the agent produces verified read-only plans and reviewable PoCs.
Like the MS17-010 decision earlier in this project, agency stays observable:
each step's rationale, arguments and result land in
`evidence/ai_mission_log.md`, and a fetched reverse session is only delivered
through the existing gated listener.
## Authenticated web scans
Pass `--web-user USER --web-pass PASS` (optionally `--web-login URL`, `--web-otp
CODE` or `--web-totp-secret B32SECRET`) and `web.auth_login` runs *before* the
crawler: it auto-discovers the login form (or uses your explicit URL), pulls a
CSRF token, supplies the OTP/TOTP along with credentials, adopts the returned
session cookie into the HTTP client, and only then hands the site to the crawl
and module stack β so every module (dirbuster, injections, JWT, SSRFβ¦) exercises
the authenticated surface. Without credentials, the site is scanned
unauthenticated and the exploit layer still attacks whatever auth systems it
finds: the full 25-pair auth-bypass family plus OTP tricks and aggressive-gated
login brute-force (cap/delay/stop-on-success) that also reports leaks against
OTP-protected forms.
---
## FAQ
**Web-only?** No β network services are first-class: full sweeps, binary
handshakes, relay checks, credential attacks across protocols.
**Root required?** No; connect scans work unprivileged. `--syn` needs root.
**Is the AI mandatory?** No β fully off unless you pass `--ai`. Everything
else works without it.
**Slow with big wordlists?** Complete tiers only engage under
`full`/`vast`/`--aggressive`, HTTP attacks are threaded with stop-on-success.
---
**Validate every finding before acting. Own everything you test.** β‘