Skip to main content

boba

boba

Agent-native bug bounty hunting framework.
Everything an LLM agent needs to go from target scope to submitted vulnerability report.

Quickstart · What It Does · Architecture · Agent Guide · Vision · Changelog


Bug bounty hunting is a closed-loop process: discover attack surface, interact with the target, test for vulnerabilities, chain findings, report. Human hunters do this with a browser, Burp Suite, and a dozen CLI tools held together by bash scripts and muscle memory.

LLM agents can reason and write — but they have no way to hold an authenticated session, replay a modified HTTP request, or diff two responses to confirm an IDOR. Boba gives them that. Every phase of the hunting lifecycle is exposed as a typed Python function with structured I/O: subprocess adapters normalize 9+ security tools into a uniform interface, a Playwright-based interaction layer replaces Burp Suite, and a SQLite-backed hunt context gives the agent persistent state across the entire engagement. Scope enforcement is framework-level — the agent cannot touch what it shouldn't.

Quickstart

pip install boba                 # CLI only
pip install 'boba[mcp]'          # + MCP server (boba-mcp)
pip install 'boba[oob]'          # + Interactsh OOB listeners
pip install -e '.[dev]'          # development install

playwright install chromium      # required for browser-based vuln tests
boba --help

External binaries (subfinder, httpx, nuclei, ffuf, ...) are not Python deps — install whichever tools you need from the External Tools table below.

# Create a hunt with scope, run recon
boba hunt create --name acme --scope scope.yaml
boba recon subdomains <id> --domain acme.com
boba recon hosts <id>
boba recon urls <id> --domain acme.com

# Test for vulnerabilities
boba test sqli <id> --url https://app.acme.com/search --param q
boba test xss <id> --url https://app.acme.com/search --param q
boba test auth <id> --endpoint https://app.acme.com/admin

# Analyze, chain, and report
boba analyze severity <id> --platform hackerone
boba analyze chain <id>
boba report draft <id> --finding-id 7
boba report format <id> --report-id 1 --platform hackerone

# Query what you've found
boba context stats <id> --format json

Every command supports --format json for agent consumption.

What It Does

Recon & Enumeration — Subdomain discovery, live host detection, port scanning, historical URL mining, tech fingerprinting, directory fuzzing, web crawling. 10 adapters wrapping subfinder, httpx, naabu, gau, waybackurls, whatweb, katana, ffuf, nuclei.

Web Interaction — Headless Playwright browser with real-time traffic interception. HTTP client with request(), replay(), compare(), fuzz() — four Burp Intruder attack types. Named auth sessions (bearer, basic, cookie, form login). OOB callback listeners via Interactsh for blind vuln detection.

Vulnerability Testing — 11 detection engines: IDOR (multi-account response diffing), SSRF (response content analysis + OOB callbacks), XSS (reflected + DOM-based via browser), SQLi (error/boolean/time-based with multi-DBMS payloads), auth bypass (JWT alg:none, claim escalation, endpoint ACL testing), CSRF (token validation + cross-origin), race conditions (concurrent request divergence), open redirect (external host detection), mass assignment (field persistence check), password reset (host header injection + rate limiting), AI/LLM prompt injection (exfiltration + override scoring). Nuclei adapter for template-based scanning with custom YAML support.

Analysis & Intelligence — Coverage tracking (tested vs. untested per endpoint per vuln class), finding deduplication (union-find with canonical selection), CVSS 3.1 scoring with platform-specific payout estimation (HackerOne, Bugcrowd), vulnerability chaining (8 chain rules — e.g., redirect + SSRF → P1), and attack path prioritization (rank untested endpoints by likelihood of vulnerability).

Reporting — Structured report drafting from findings and chains with auto-generated reproduction steps. Platform-specific formatting (HackerOne, Bugcrowd, generic markdown). PoC evidence packaging (HTTP request/response dumps, evidence.json, README).

Scope Enforcement — Default-deny model. Exclusions always win over inclusions. Domain wildcards, CIDR ranges, URL prefixes. Enforced at the adapter layer — the agent cannot touch out-of-scope targets regardless of what it tries to pass downstream.

Persistence — SQLite (WAL mode, FK constraints) backing 17 tables: subdomains, hosts, ports, URLs, technologies, directories, HTTP exchanges, sessions, findings, coverage, dedup groups, chains, OOB listeners, reports, tool runs. Upserts deduplicate via json_each() merges. Full hunt state survives across invocations — the agent never loses context.

Architecture

CLI / MCP Server / Agent SDK          <- exposure layer
        │
   Tool Functions                     <- composition (recon.py, vuln.py)
        │
   Adapter Layer                      <- normalize external tools
   ├── CLI Adapters (subprocess)         subfinder, httpx, nuclei, ffuf...
   └── Interaction Adapters              Playwright browser, HTTP client
        │
   Core                               <- scope engine, hunt context (SQLite), models

Every adapter follows a 6-phase lifecycle: find_binary → pre_filter → build_command → run_subprocess → parse_output → post_filter. This normalizes tools with wildly different I/O (JSON lines, JSON arrays, plain text, file-based output, stdin piping) into a uniform ToolResult. Tool functions compose one or more adapters with scope checking and context persistence. The CLI bridges async with asyncio.run().

External Tools

Boba wraps these — install whichever you need:

Tool Purpose Install
subfinder Subdomain discovery go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
httpx Live host detection go install github.com/projectdiscovery/httpx/cmd/httpx@latest
naabu Port scanning go install github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
gau Historical URLs go install github.com/lc/gau/v2/cmd/gau@latest
waybackurls Wayback Machine URLs go install github.com/tomnomnom/waybackurls@latest
whatweb Tech fingerprinting gem install whatweb
katana Web crawling go install github.com/projectdiscovery/katana/cmd/katana@latest
ffuf Directory fuzzing go install github.com/ffuf/ffuf/v2@latest
nuclei Template scanning go install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

Development

pip install -e ".[dev]"

pytest                          # 840 tests
ruff check src/ tests/          # lint
ruff format --check src/ tests/ # format check

Python 3.11+. Fully async. Dataclasses (not Pydantic). Ruff for lint + format (line-length 100).

Roadmap

  • V1 — Recon & enumeration (10 adapters, scope engine, persistence, CLI)
  • V2 — Browser, HTTP interaction, vulnerability testing (5 vuln tools, Nuclei, sessions, OOB)
  • V3 — Analysis, chaining, severity scoring, report generation (6 more vuln tools, CVSS 3.1, platform formatting)
  • V4 — Recon breadth (parameter discovery, API mapping, secret scanning, GraphQL, ASN, cloud buckets)

License

Apache 2.0 — see LICENSE.

Metadata

Release files for boba-hunter 0.7.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for boba-hunter 0.7.1
File Size Uploaded Provenance
boba_hunter-0.7.1.tar.gz 3.6 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for boba-hunter 0.7.1
File Interpreter ABI Platform
boba_hunter-0.7.1-py3-none-any.whl Python 3 none any Details

Total release size: 3.8 MB

Release files / boba_hunter-0.7.1.tar.gz

Download URL boba_hunter-0.7.1.tar.gz
Size 3.6 MB
Tags Source
SHA-256 checksum
How to use checksums
bac8a9c6aae8d4eeda7b57cdf21698e1e71e5d4a2f30b62d4accb9713a9e7f2e
BLAKE2b-256 checksum
How to use checksums
0a99386ae0b6c6d5a40e1242099dec4468d4f9839f25412e19741a27f02d8cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / boba_hunter-0.7.1-py3-none-any.whl

Download URL boba_hunter-0.7.1-py3-none-any.whl
Size 160.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08fd482e45f7856204a8910d6ce7b2d6861691301f48b0d42190ee026326b948
BLAKE2b-256 checksum
How to use checksums
c02a60a4d73bed6859e149b8a84923b5be1ecb536fa457214aeab43873c922b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Security for boba-hunter 0.7.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.7.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page