LintLiot’s pentest engine performs Dynamic Application Security Testing (DAST) against your running application. Unlike static code analysis, DAST sends real HTTP requests with real attack payloads to discover vulnerabilities in your deployed app — including misconfigurations that only appear at runtime. The engine covers the OWASP Top 10 (2021) and maps every finding to a CVSS v3.1 score so you know exactly how serious each issue is.Documentation Index
Fetch the complete documentation index at: https://docs.lintliot.com/llms.txt
Use this file to discover all available pages before exploring further.
What gets tested
The pentest engine runs 16 attack modules covering all 10 OWASP categories:A01: Broken Access Control
A01: Broken Access Control
- IDOR / BOLA — tests whether object IDs can be enumerated to access other users’ data
- Authentication bypass — tests whether protected endpoints return data without auth credentials
- Path traversal / LFI / RFI — tests for directory traversal and file inclusion
- Open redirect — tests for unvalidated redirect and forward parameters
- CSRF — tests for missing or weak CSRF token enforcement
A02–A03: Cryptographic failures and injection
A02–A03: Cryptographic failures and injection
- SQL injection — 45 payloads covering UNION SELECT, OR-based bypass, stacked queries, time-based blind, and error-based techniques
- XSS (reflected, stored, DOM) — 38 payloads including script tags, event handlers,
javascript:URIs, SVG injection - NoSQL injection — 22 payloads targeting MongoDB
$where,$gt,$regex, and operator injection - Command injection — 20 payloads using shell metacharacters, backticks, and process substitution
- XXE — tests for XML external entity injection in XML-processing endpoints
- TLS/SSL configuration — checks for HTTP-only targets, weak cipher suites, and certificate validity
A05: Security misconfiguration
A05: Security misconfiguration
- Security headers audit — checks for missing
Content-Security-Policy,Strict-Transport-Security,X-Frame-Options, andX-Content-Type-Options - CORS misconfiguration — tests whether arbitrary origins are reflected or whether wildcard CORS is combined with
credentials: true - Information disclosure — probes for exposed
.env,.git/config, debug endpoints, stack traces, and version disclosure - SSRF — 25 payloads probing localhost, cloud metadata endpoints (
169.254.169.254), RFC-1918 ranges, andfile://URIs
A07: Authentication failures
A07: Authentication failures
- Rate limiting on login — verifies that authentication endpoints return 429 after repeated failed attempts
- Session fixation, JWT manipulation — tests for authentication bypass via token manipulation
Route discovery
The pentest engine needs to know which endpoints to test. LintLiot discovers your routes in three ways:Via the SDK (recommended)
CallregisterRoutes() from your application startup to register all known routes with the LintLiot API:
Via OpenAPI spec
If you have an OpenAPI (Swagger) specification, upload it from the dashboard under Pentest → Routes or send it to the API endpoint:Automatic fallback
If no routes have been registered, the pentest engine falls back to a set of common endpoint patterns (/api/search, /api/login, /api/users, /api/data, and others). For meaningful results, register your actual routes.
Starting a pentest scan
Navigate to the Pentest page
Open your app in the LintLiot dashboard and click Pentest in the sidebar.
Create a new scan
Click New Scan. Give it a name, enter your target URL (the base URL of your deployed application), and choose which attack modules to run. Running all modules is the recommended starting point.
Add authentication headers (if needed)
If your endpoints require authentication, add your test account’s
Authorization header under Scan Configuration → Auth Headers. The engine uses these headers for all requests.Start the scan
Click Run Scan. The engine starts immediately and updates the dashboard with progress as each attack module completes. A full scan typically takes 2–10 minutes depending on the number of registered routes and modules selected.
Finding severity and CVSS scores
Every finding is assigned a CVSS v3.1 base score and a severity level:| Severity | CVSS range | Example findings |
|---|---|---|
| Critical | 9.0–10.0 | SQL injection, OS command injection, SSRF, auth bypass |
| High | 7.0–8.9 | Stored XSS, IDOR, path traversal, JWT manipulation |
| Medium | 4.0–6.9 | Reflected XSS, CSRF, CORS misconfiguration, missing rate limiting |
| Low | 0.1–3.9 | Missing security headers, server version disclosure, expired TLS certificate |
Risk score
Each completed scan receives an overall risk score from 0 to 100. The score accumulates severity-weighted points from all findings:| Finding severity | Points contributed |
|---|---|
| Critical | 40 |
| High | 25 |
| Medium | 10 |
| Low | 3 |
Proof-of-concept evidence
Each finding captures the exact HTTP request and response that demonstrated the vulnerability:Remediation guidance
Every finding includes a specific, actionable remediation. Examples:SQL injection
SQL injection
Use parameterized queries (prepared statements) for all database operations. Never concatenate user input into SQL strings. Apply input validation and use an ORM where possible.
SSRF
SSRF
Validate and allowlist URLs before fetching. Block requests to internal IP ranges (127.0.0.0/8, 10.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16). Use a URL parser to normalize before checking.
IDOR
IDOR
Implement authorization checks on every data access. Use indirect references (UUIDs) instead of sequential IDs. Verify that the requesting user owns the resource before returning it.
Missing rate limiting
Missing rate limiting
Implement rate limiting on authentication endpoints (max 5–10 attempts per minute), API endpoints (based on plan), and sensitive operations. Use
lintliot.rateLimit() to add rate limiting in one line.CORS misconfiguration
CORS misconfiguration
Restrict
Access-Control-Allow-Origin to specific trusted origins. Never combine wildcard (*) with Access-Control-Allow-Credentials: true. Validate the Origin header server-side.