Penjester beta

Install

Download, load, go

Penjester is one Burp Suite extension. It needs Burp and a JDK, nothing else. No service, no account, no network call that is not yours. The optional agent that drives browsers for you also needs Python, Playwright and Chromium installed. Every other part works without them.

Downloaded straight from GitHub. Works with Burp Professional or Community.

1. Load it into Burp

Extensions → Installed → Add, type Java, and select the .jar you downloaded.

The one trap worth knowing before it costs you an hour

A running Burp keeps the jar it loaded at startup. After every update you must untick and re-tick Penjester in Extensions → Installed. A stale load looks exactly like a bug: the feature you expect is simply not there.

2. Set your scope

Open the Penjester tab and add the hosts this engagement covers. Nothing is recorded, replayed or intercepted outside them. The allowlist fails closed, so an empty scope records nothing at all.

3. Save two sessions, then browse

On the Sessions tab, arm a capture slot and log in through the Burp browser as that account. Penjester takes the credential set from the live request, so nothing is typed by hand. Two accounts is the minimum; three, two in one organisation and one in another, tells a tenant-isolation failure from an ordinary within-org IDOR.

Use the application as the first account. When you have covered the features you care about, turn on Auto-test on the History tab. Results land on Live audit.

Built with: Java on Burp's Montoya API, compiled with Maven. The optional browser agent is Python with Playwright. The extension exposes its tools over MCP on loopback, and works with any OpenAI-compatible local model or the Claude CLI already on your machine. The website is static HTML, CSS and JavaScript on Cloudflare, with no framework and no third-party request.

Authorisation

Penjester sends real requests to real systems as real accounts. Use it only on systems you are authorised to test. It asks you to confirm each registrable domain once, and refuses destructive paths for automation while permitting them for your own deliberate click. That is a guardrail, not permission.