Skip to main content

Agent-native bug bounty hunting framework

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

boba_hunter-0.7.1.tar.gz (3.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

boba_hunter-0.7.1-py3-none-any.whl (160.9 kB view details)

Uploaded Python 3

File details

Details for the file boba_hunter-0.7.1.tar.gz.

File metadata

  • Download URL: boba_hunter-0.7.1.tar.gz
  • Upload date:
  • Size: 3.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for boba_hunter-0.7.1.tar.gz
Algorithm Hash digest
SHA256 bac8a9c6aae8d4eeda7b57cdf21698e1e71e5d4a2f30b62d4accb9713a9e7f2e
MD5 1ae3b1cfaa59bbe0ae976edf1594f16e
BLAKE2b-256 0a99386ae0b6c6d5a40e1242099dec4468d4f9839f25412e19741a27f02d8cae

See more details on using hashes here.

File details

Details for the file boba_hunter-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: boba_hunter-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 160.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for boba_hunter-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 08fd482e45f7856204a8910d6ce7b2d6861691301f48b0d42190ee026326b948
MD5 5eec25d6bb9dbfa84e28171d4b3ce66d
BLAKE2b-256 c02a60a4d73bed6859e149b8a84923b5be1ecb536fa457214aeab43873c922b7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page