VERFENDSecurity Operations
← all samples
Illustrative sample

This is a demonstration report, not a client engagement. All testing was performed against OWASP Juice Shop — a deliberately-vulnerable application hosted locally for training. No third-party systems were tested. Content shows our reporting format and depth.

Web Application Security Assessment

OWASP Juice Shop — findings & remediation

A scoped assessment of an intentionally-vulnerable practice target, demonstrating Verfend’s verify → explain → retest methodology.

Target
juice-shop.local
(self-hosted)
Engagement
VF-SAMPLE-01
Grey-box
Window
2026-10-18
→ 2026-10-19
Classification
Sample
Public

Scope & authorisation

Target. A single instance of OWASP Juice Shop (v15.x) deployed on an isolated local host under our control. The application is published by the OWASP Foundation expressly for security training.

Authorisation. Testing was performed against our own instance only. No production system, customer data or third-party asset was in scope or accessed.

Method. Grey-box testing aligned to OWASP ASVS and the OWASP Web Security Testing Guide; findings verified manually and retested after remediation.

Executive summary

9.1
Max CVSS · critical
CRITICAL1
HIGH2
MEDIUM2
LOW1

The assessment confirmed six issues, led by an authentication bypass via SQL injection that grants administrative access without credentials. Access-control gaps allowed one account to reach another’s data, and a confidential file store was reachable without authentication. All findings were reproduced manually, prioritised by real impact, and retested after the fixes below.

IDFindingOWASPSeverityRetest
JS-01SQL injection → authentication bypassA03CRIT 9.1✓ resolved
JS-02Broken access control (IDOR) on basketsA01HIGH 7.1✓ resolved
JS-03Confidential file store exposed (/ftp)A05HIGH 7.5✓ resolved
JS-04DOM cross-site scripting in searchA03MED 6.1✓ resolved
JS-05JWT accepts “none” algorithmA02MED 5.3✓ resolved
JS-06Security headers missing (CSP/HSTS)A05LOW 3.7↻ accepted

Findings in detail

JS-01

SQL injection → authentication bypass

CRITICAL · 9.1
Class
Injection (OWASP A03) · CWE-89
Impact
The login form concatenates input into a SQL query. A crafted email bypasses authentication and returns the administrator session — full account takeover without a password.
POST /rest/user/loginevidence
# request body
{ "email": "' OR 1=1--", "password": "x" }

# response — authenticated as first user (admin)
HTTP/1.1 200 OK
{ "authentication": { "token": "eyJhbGciOi...", "role":"admin" } }
Remediation
Use parameterised queries / an ORM; never build SQL from user input. Validate and canonicalise the email field.
login.tsfix
- db.query("SELECT * FROM Users WHERE email='"+email+"'")
+ db.query("SELECT * FROM Users WHERE email = ?", [email])
Retest
✓ Resolved. Injection payloads return 401; parameterised query confirmed. Retested 2026-10-19.
JS-02

Broken access control (IDOR) on baskets

HIGH · 7.1
Class
Broken access control (OWASP A01) · CWE-639
Impact
The basket endpoint trusts the :id in the URL and does not check ownership. Any authenticated user can read and modify another customer’s basket by changing the identifier.
GET /rest/basket/{id}evidence
# logged in as user #6, request basket #1
GET /rest/basket/1   Authorization: Bearer <user-6 token>
200 OK  → returns basket of user #1  (not owner)
Remediation
Enforce server-side object ownership on every request: resolve the basket by the authenticated user, not by a client-supplied id.
Retest
✓ Resolved. Cross-account requests now return 403; legitimate access preserved.
JS-03

Confidential file store exposed

HIGH · 7.5
Class
Security misconfiguration (OWASP A05) · CWE-548
Impact
A static /ftp directory is browsable without authentication and serves confidential documents. Depending on contents, this can expose internal data or credentials.
GET /ftp/evidence
# directory listing reachable unauthenticated
GET /ftp/   200 OK
  acquisitions.md
  coupons_2013.md.bak
  package.json.bak
Remediation
Remove confidential files from the web root; disable directory listing; serve only intended public assets and gate the rest behind authorisation.
Retest
✓ Resolved. /ftp now returns 404; no listing.

JS-04 (DOM XSS), JS-05 (JWT “none” algorithm) and JS-06 (missing security headers) are abridged in this public sample, each with evidence, remediation and retest status.

Methodology & standards

OWASP ASVS
verification standard
OWASP WSTG
testing guide
PTES
execution standard
CVSS 3.1
severity scoring

Disclaimer. Illustrative sample for demonstration only. OWASP® and Juice Shop are projects of the OWASP Foundation, used here as a public training target; Verfend is not affiliated with OWASP. “Verfend” is a working brand for a local concept. No third-party systems were tested and no real client data appears in this document. A security assessment reflects a defined scope and point in time and does not guarantee the absence of other issues.