Run scans

Web App Scanning

Scan websites and web APIs, signed in or not, with classic scanners, AI DAST or the AI Pentest agent; the target rules for every scan.

View as Markdown

Scan running websites and web APIs, signed in or not, from the Dynamic Analysis page (Web App Scanning in the sidebar). You can run classic web scanners, the AI DAST engine, or the AI Pentest agent, which is what the form selects for a new user.

Best practice

Create separate products for different scan types, or group websites by category. This makes result analysis and reporting far simpler later on.

Before you start

You needWhere it is setHow to check
The URLs are allowed for your teamTeams in the sidebar, Scanning tab, Web targets card. A new team allows nothing until a team admin adds hosts.In the same card, open Check whether targets are allowed, paste the URLs and select Check: each must be reported as allowed.
An AI provider, for AI DAST and AI PentestTeams, AI tab (or the system AI a system administrator sets up). See AI providers.From a terminal: scansuite-ci --scan-type dast --list-scanners. mldast and ai_pentest must not say NOT AVAILABLE.
Acunetix, only if you use itTeams, Scanning tab, Scanner engines card.The Acunetix block shows a connected badge.
Nessus Web, only if you use itThe shared Nessus a system administrator sets up in System Settings.The number of runs left appears next to Nessus Web on the form.
A productProducts page. The scan files its results under it.It is listed under Product / Eng ID on the form.

See Teams and roles for allowed targets and who may change them, and AI providers and cost for the AI setup. Starting a scan needs the Operator or Team admin role.

Run a web scan

  1. 01
    Open the form

    Select Web App Scanning in the sidebar. The page title reads Dynamic Analysis.

  2. 02
    Choose the product

    Product / Eng ID, in the Schedule & Access section.

  3. 03
    Enter the URLs

    In Specify the URLs under Target Scope, or select Fetch targets (the cloud button) to reuse the targets last scanned for this product. See Targets below for what is accepted.

  4. 04
    Choose the scanners

    The form opens with Autonomous AI assessment on (the AI Pentest agent) unless you chose something else last time. To run classic scanners or AI DAST alone, switch Autonomous AI assessment off and switch on what you want under DAST Engine Settings. Specialized & API Scanning is collapsed: open it to see its scanners.

  5. 05
    Add sign-in details (optional)

    Cookies (optional) and Custom header (optional), see Signing in below.

  6. 06
    Leave Run or save on Run now

    Changing Frequency, Date or Time switches it to Save scan and schedules the scan instead, see Schedule the scan.

  7. 07
    Select Start Analysis

    Scan submitted appears. The scan's page then opens; if the scan is waiting in the queue, Scan History opens instead and lists it.

ScanSuite dynamic scan configuration
The Dynamic Analysis page

Check that it worked: the scan's page shows the status Queued or Started and the log begins to fill. Follow it there or in Scan History; a finished scan shows Finished.

If the scan does not start

MessageWhat to do
No valid URLs provided: … is not accepted (…)No URL passed the input check. The message names up to three refused URLs and why, for example give the URL without a query string. Fix them as in Targets below.
Target is not allowed by the team target policyA URL is outside the team's web targets. Ask a team admin to add it, or remove it.
Invalid headers format. Try Header: Value Multiple headers separated by |The custom header has no colon, or contains a comma or semicolon. See Signing in.
Invalid cookies format. Try Key=Value Multiple cookies separated by ;The cookie text has no =.
Chosen scanners are not allowed in this versionNo scanner is switched on, or a scanner your edition does not include.
Another message under the formScanSuite refused to start the scan and says why, for example that the team is already running its limit of concurrent scans (wait for one to finish), or that the web targets are set to Only the targets listed below, also checked while the scan runs while a scanner other than AI DAST is on.
The scan could not be submitted. The system logs have the reason.The worker failed to take the scan. An administrator finds the reason on the server with ./scansuite logs web and ./scansuite logs worker.

The form

FieldWhat it doesDefaultWhen to change it
Saved ScansLoads a scan you saved or scheduled, to change or re-save it. Lists only your own saved scans.NewTo edit a schedule, see Schedule the scan.
Delete saved scan (bin)Deletes the saved scan selected in Saved Scans.–To remove a schedule.
Specify the URLsThe websites or API specifications to scan.EmptyAlways.
Fetch targets (cloud button)Fills the URLs with the targets this product was last scanned with. Without any it says Targets not found. Run OSINT scan for this product. Every scan you submit replaces the product's stored targets.–To rescan the same URLs.
Instructions (optional)Guidance for the AI Pentest agent. Shown only while Autonomous AI assessment is on; every other scanner ignores it.EmptySee AI Pentest.
Frequency, Date, Run or save, TimeRun now, or save the scan to run once later or repeatedly.Once, Run nowSee Schedule the scan.
Product / Eng IDThe product the results are filed under.The newest productAlways check it.
Cookies (optional)Session cookies sent with every request, name=value, several separated by ;.EmptyTo scan behind a login.
Custom header (optional)Request headers sent with every request, such as Authorization.EmptyTo scan behind a login or an API key.
DAST Engine Settings, AI PentestThe scanner switches, see The scanners.Autonomous AI assessment on, everything else offTo choose what runs.

The scanner switches open as you left them: the form remembers the selection you last submitted, per person.

Targets

These rules apply to the targets of every web, API, infrastructure and AI Pentest scan, on the forms and in CI/CD and automation.

RuleWhat happens
SeparatorsComma, semicolon or a new line. Spaces are removed.
Web targetsA URL such as https://app.example.com/shop. A URL without a scheme gets https://.
Infrastructure targetsAn IP address (10.20.30.40), a range (10.20.40.40-45), a network (10.20.50.0/24) or a host name (example.com).
Accepted charactersOnly letters, digits and : . _ / -. A URL with a query string (?a=b) or a fragment (#) is refused: give the URL without it.
DuplicatesDropped.
A refused target next to accepted onesDropped without a message; the scan starts with the rest. Check the Targets card on the scan's page.
Every target refusedThe scan does not start. The message names up to three refused targets and the reason.
Allowed targetsEvery target must match the team's Web targets or Infrastructure targets (Teams, Scanning tab). A container image is checked against the registry it comes from, see Infrastructure Checks.

Each kind of allowed targets has one of three modes, set by a team admin:

AllowEffect on scans
Only the targets listed belowTargets are checked when the scan starts. Every scanner can run.
Only the targets listed below, also checked while the scan runsWeb scans: every request and redirect is checked as well, and only AI DAST can do that, so every other scanner, AI Pentest included, is refused. To scan in this mode, switch Autonomous AI assessment off and switch AI DAST on. Infrastructure scans are all refused in this mode.
Any targetNo check.

Signing in

The cookies and headers you enter are sent by the classic scanners, AI DAST and AI Pentest, so the signed-in part of the application is tested too.

FieldFormat
Cookies (optional)name=value. Separate several with a semicolon (a comma also works): session=abc123; theme=dark. Spaces are removed.
Custom header (optional)Name: value. Separate several with |: Authorization: Bearer eyJ…|X-Tenant: demo. A header whose value contains a comma or a semicolon is refused, so such a header cannot be sent.

A signed-in scan acts as that user: it submits forms and follows links a person in that session could. Use a test account, not a real person's session, and expect test data to appear in the application.

The scanners

ScannerGroup on the formWhat it does
QuickWeb Scanning (DAST)Fast web checks (ZAP baseline and Dastardly), sized for CI/CD smoke testing.
BalancedWeb Scanning (DAST)Broader coverage for routine web scans (Arachni and Wapiti).
NucleiWeb Scanning (DAST)Template-based checks for known web exposures.
AcunetixWeb Scanning (DAST)Commercial web application scanner. Needs Acunetix in the team's Scanner engines card.
Nessus WebWeb Scanning (DAST)Commercial web vulnerability scanner on the shared Nessus. The runs left are shown next to its name.
Tech DiscoverySpecialized & API ScanningFingerprints frameworks, stacks and versions.
Hidden PathsSpecialized & API ScanningFinds unlinked content and exposed directories.
SecretsSpecialized & API ScanningCrawls pages for leaked keys and tokens.
Custom RulesSpecialized & API ScanningYour own Nuclei templates from the Rules page. Under the switch the form says how many rules will run for the chosen product, and Only these packs: narrows them to some packs. With no active rule it says the scanner will be skipped.
Deep ScanSpecialized & API ScanningComprehensive crawling and intrusive testing (ZAP full scan, up to two hours).
API ScanSpecialized & API ScanningTests an API from its OpenAPI specification, see Web API scans.
Autonomous AI assessmentAI PentestThe AI Pentest agent. On by default. While it is on, the other scanners do not run on their own: the agent uses what it needs.
AI DASTAI PentestScanSuite's AI web scanner, described below. Switched off and greyed out while Autonomous AI assessment is on.

AI DAST is part of AI Pentest, so the form switches it off while Autonomous AI assessment is on and says: AI Pentest already includes AI DAST coverage. To run AI DAST alone, switch Autonomous AI assessment off first.

Quick, Balanced and Deep Scan first check for a web application firewall. If one is detected, Balanced and Deep Scan are skipped and Quick leaves out Dastardly.

See Custom Rules for writing your own rules.

AI DAST

AI DAST crawls the application, tests what it finds for the vulnerability classes below, and reports only findings it has confirmed with a working request. Every finding is re-tested before it is reported, and comes with the URL, the parameter, the payload that proved it, the HTTP exchange and how to fix it.

ScanSuite AI DAST selected, with Autonomous AI assessment off
AI DAST selected, with Autonomous AI assessment off

What AI DAST tests for

  • SQL injection, command injection, server-side template injection (SSTI), XML external entities (XXE) and server-side request forgery (SSRF)
  • Reflected and stored cross-site scripting (XSS)
  • Open redirect and path traversal
  • Information disclosure
  • Default and common credentials on every login form it finds, reported as High. Credentials marked Use in AI scans on the Credentials page (the product's and the team-wide ones) are tried as well.
  • Vulnerable client-side JavaScript libraries, with the CVE and the severity from the library's advisory

Further classes are experimental and are not run from the console.

What to expect

  • Requests it sends. AI DAST uses GET, POST, HEAD and OPTIONS, never PUT, PATCH or DELETE. It does submit forms, for example to test stored XSS and login forms, so test entries can appear in the application and repeated failed logins can lock an account.
  • Without an AI answer. If the AI provider does not answer, AI DAST still runs a built-in set of checks, with lower coverage.
  • Limits per URL. Each URL is tested with at most 800 requests, 200 AI calls and one hour. A run that hits a limit says so in the log, for example AI DAST stopped before it covered the target: the request budget (800 requests) was used up, followed by the findings it confirmed and the advice to narrow the target. Such a run counts as not completed; give a narrower URL, such as one section of the application, to test the rest.
  • Cost. AI DAST spends AI tokens; the scan page and Scan History show how many.

An intrusive test can still affect a live system. Scan a staging copy where you can.

Several URLs and scanners

The scanners and URLs of one scan run in parallel. An administrator can add workers so that more scans run at once, see Setup parameters and services.

When a scan is incomplete

A scanner that is not set up (Acunetix, Nessus Web) is skipped with a Scanner skipped warning in the log, and a URL that does not answer is a warning, not a failure. An engine whose scanner images this server lacks is marked Not installed on this server. on the form and cannot be chosen. What each outcome means and what to do is listed in Managing scan execution.

From a pipeline or a terminal

The same scan runs without the console through scansuite-ci and a team API token:

A DAST scan of a staging deployment
scansuite-ci --scan-type dast --target https://staging.example.com \
  --profile standard --header "Authorization: Bearer $STAGING_TOKEN"

--profile takes quick, standard (the default) or deep; --scanners names them instead, for example --scanners mldast for AI DAST alone. The command waits for the scan and exits 0 when it passes the quality gate. See CI/CD and automation.

Where results go

  • AI DAST, AI Pentest, Nessus Web and Custom Rules always record their findings on the Vulnerabilities page.
  • The classic scanners (Quick, Balanced, Deep Scan, API Scan, Nuclei, Acunetix) record their findings there too, at Medium severity and above, unless the team changes it: Teams, Scanning tab, Scanner findings in Vulnerabilities card, Store scanner findings (On by default) and Lowest severity to store (Medium by default). Close findings a rescan no longer reports in the same card decides whether a rescan closes them; see Vulnerability Management.
  • Everything is in the scan's Report in Scan History and, when the team has DefectDojo connected, in DefectDojo (see Set up DefectDojo). Hidden Paths, Secrets and Tech Discovery are never exported to DefectDojo; download the Report to review them.

Last reviewed 2026-10-19