- DAST — fast active scanning for XSS, injection, CSRF, XXE, and auth/session flaws.
- Autonomous pentest — multi-tool exploit orchestration that goes past detection to exploitation, and ships Proof-of-Exploit: the exploited request and response, with a reproducible
curlor a replay video depending on the exploit class.
Add a domain
Open Domains → Add domain and enter the host — a full name, a bare hostname, orhost:port. Nothing else is needed to start a DAST scan.
Authorize before you attack
This gate is enforced server-side: a pentest request against an un-authorized domain is refused. It’s there to keep you on the right side of the line — pointing an exploit engine at something you don’t own is a crime, not a scan.Run DAST
1
Open the domain
Go to Domains and click the target, then open the Scan tab.
2
Run the scan
Start a DAST scan. It crawls the app and actively probes what it finds; expect results in minutes for a typical site.
Authenticated scanning
Most of an app lives behind login. BreachLens reaches it two ways — pick by how the app authenticates:Credentials (breadth)
Give BreachLens the login and it authenticates itself, then crawls widely. Best when a form login or token gets you in.
Recorded session (depth)
Proxy your browser through BreachLens and click through the exact flows that matter. Best for SPAs, multi-step wizards, and anything a crawler can’t reach on its own.
Credentials
On the domain’s auth config (admin-gated), configure one of:- Form login — login URL, the username/password field names, your credentials, and a logged-in / logged-out text pattern so BreachLens can tell it’s still authenticated.
- JSON API login (SPA / JWT) — for apps that authenticate through a JSON API and return a token in the response body instead of a
Set-Cookie— the norm for React, Vue, and Angular single-page apps. Point the login URL at the JSON login endpoint itself (e.g./rest/user/login, not the SPA’s home page); BreachLens posts your credentials as JSON, reads the token back from the response, and authenticates the whole scan as a bearer. - Bearer / header token — a header name + value injected on every request.
- OAuth2 — token URL, client id/secret, scope, and grant type (
client_credentialsorpassword).
A single-page app needs its API endpoint, not its front door. A SPA served from
/ returns the same HTML shell for every path, so a login URL pointing at the app root can never authenticate. Use the URL your browser’s network tab shows when you actually sign in — a POST to something like /rest/user/login or /api/auth/login. BreachLens tolerates the usual field-name variations (email, username, user, login), so a token still comes back even if your config labels the field differently than the API expects.Recorded session
For flows a crawler can’t drive, record one:1
Start recording
On the domain, Start recording. BreachLens opens a capture session and gives you a CA certificate to trust so your browser can proxy through it.
2
Click the flows that matter
Log in and walk the app — the authenticated pages, the multi-step forms, the endpoints you care about. A live pane shows captured requests; a self-test flags if capture isn’t working before you invest time.
3
Scan or promote to pentest
Scan the recorded URLs directly, or Promote to full pentest to run it over exactly what you recorded.
Run an autonomous pentest
Once the domain is authorized, start a pentest and pick a depth:
If you recorded a session, promoting it runs the pentest against your captured flows; you can also narrow scope to specific discovered subdomains.
Proof-of-Exploit
DAST is famously noisy. BreachLens’s answer is proof: a finding markedCONFIRMED isn’t a maybe — it carries the wire-level request/response that proves it, with a reproducible curl or, for browser-driven exploits, an exploit-replay video. That turns the noisiest stage of testing into the most trustworthy.
Findings carry one of three confidence levels. Only the top one earns the Proof-of-Exploit badge:
A confirmed finding, annotated
Here’s a realCONFIRMED finding — a SQL-injection authentication bypass on a login endpoint. It signs in as a valid user with no valid password by closing the SQL string and commenting out the rest of the query. BreachLens ships the curl that runs it:
Reproducer
Response — a real session token, from credentials that were never valid
' OR 1=1-- makes the login query’s WHERE clause always true and comments out the password check, so the server returns a valid auth token for the first user in the table. A 200 carrying a real token — from credentials that should have been rejected — is the exploit, not an inference about one.
A fully reproducible CONFIRMED finding ships three things:
Because the proof is self-contained, a confirmed finding is portable — hand the
curl to a developer, a customer, or an auditor and they verify it themselves. That’s the difference between “our scanner flagged this” and “here’s the exploit.”Cutting the noise: AI triage
Not every signature match is real. BreachLens runs an AI false-positive review over findings — each is analyzed and tagged with a verdict (likely real or likely false positive) with the reasoning attached, so you see why before you trust it. For domain (DAST / pentest) findings, a high-confidence likely false positive verdict can auto-dismiss a finding to keep your active list clean — but never blindly:- Severity and class are a hard gate. A critical or high finding, or anything in an injection / exploitation class (SQL injection, command injection, XSS, path traversal, …), is never auto-dismissed on an AI verdict alone — no matter how confident the model is. Only low-stakes hygiene noise (informational / low, non-injection) is eligible to be set aside automatically.
- Everywhere else the verdict is advisory. On other scan tiers the review still runs, but it only annotates — it doesn’t hide anything.
Reveal what was dismissed
Auto-dismissed findings are hidden, not deleted. On a domain’s Findings tab, the Status filter brings them back: switch it to show Ignored (or Fixed) and every finding the review set aside reappears for a second look — verdict and reasoning intact. If the model got one wrong, re-open it in a click.BreachLens treats dismissed and deleted as different things on purpose. An AI verdict can tidy your active queue, but it can never make a finding vanish — the Status filter always surfaces the full history, and the severity/class gate means the dangerous classes were never hidden to begin with. A real vulnerability can’t be silently buried.
Fix at source
A domain finding is observed on a running URL, not in a file — so on its own it can’t open a code pull request. But when the same application’s repository has also been scanned, BreachLens correlates the vulnerable route back to the source file that backs it. Open any domain finding and, when a match exists, a Fix at source panel appears, showing:- Where it was observed — the vulnerable URL, and
- The source file and line it maps to, in the repository that serves the app, with a confidence indicator for the trace.
The link between a URL and a source file is a heuristic trace — BreachLens shows the confidence and the reason, and never opens a PR on its own. You review the file and the diff first.
Next steps
Monitor continuously
Schedule recurring DAST against staging and route new confirmed findings to your team.
Fit it into your pipeline
Where DAST and pentest sit in the delivery flow, and what to configure at each stage.