VERFENDSecurity Operations
← all samples
Illustrative sample

This is a demonstration report, not a client engagement. All testing was performed against DVWA (Damn Vulnerable Web Application) — a deliberately-vulnerable app hosted locally for training. No third-party systems were tested. Content shows our reporting format and depth.

Web Application Security Assessment

DVWA — findings & remediation

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

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

Scope & authorisation

Target. A single instance of DVWA deployed on an isolated local host under our control, with the security level set to “low” for demonstration. DVWA is distributed expressly as a learning environment.

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.8
Max CVSS · critical
CRITICAL1
HIGH2
MEDIUM2
LOW1

The assessment confirmed six issues. A union-based SQL injection permits extraction of the entire user database, while OS command injection and an unrestricted file upload each lead to remote code execution on the host. Input-handling and session issues follow. All findings were reproduced manually, prioritised by real impact, and retested after the fixes below.

IDFindingOWASPSeverityRetest
DV-01SQL injection (union) → database disclosureA03CRIT 9.8✓ resolved
DV-02OS command injection → RCEA03HIGH 8.6✓ resolved
DV-03Unrestricted file upload → web shellA05HIGH 8.8✓ resolved
DV-04Stored & reflected cross-site scriptingA03MED 6.1✓ resolved
DV-05CSRF on password changeA01MED 6.5✓ resolved
DV-06Weak session cookie flagsA05LOW 3.1↻ accepted

Findings in detail

DV-01

SQL injection → database disclosure

CRITICAL · 9.8
Class
Injection (OWASP A03) · CWE-89
Impact
The id parameter is placed directly into a SQL query. A union-based payload returns arbitrary columns, enabling extraction of all usernames and password hashes.
GET /vulnerabilities/sqli/?id=evidence
# payload
?id=1' UNION SELECT user, password FROM users-- -

# response (excerpt)
admin : 5f4dcc3b5aa765d61d8327deb882cf99
gordonb : e99a18c428cb38d5f260853678922e03
Remediation
Use prepared statements with bound parameters; apply least-privilege to the DB account; store passwords with a slow salted hash (bcrypt/argon2).
sqli.phpfix
- $q = "SELECT first_name,last_name FROM users WHERE id='$id'";
+ $stmt = $db->prepare("SELECT first_name,last_name FROM users WHERE id = ?");
+ $stmt->execute([$id]);
Retest
✓ Resolved. Union/boolean payloads no longer alter the query; prepared statement confirmed. Retested 2026-10-19.
DV-02

OS command injection → RCE

HIGH · 8.6
Class
Injection (OWASP A03) · CWE-78
Impact
The “ping” feature passes user input to a shell. A metacharacter chains an arbitrary command, giving code execution with the web server’s privileges.
POST /vulnerabilities/exec/evidence
# ip field
127.0.0.1 ; cat /etc/passwd

# response (excerpt)
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:...
Remediation
Avoid shelling out; use a native library for ICMP. If a command is unavoidable, pass arguments as an array (no shell), and strictly allow-list input.
Retest
✓ Resolved. Metacharacters are rejected; input validated against an IP pattern.
DV-03

Unrestricted file upload → web shell

HIGH · 8.8
Class
Security misconfiguration (OWASP A05) · CWE-434
Impact
The upload accepts executable PHP with no type or content checks. The file is reachable and executed under the web root — a web shell and full host compromise.
POST /vulnerabilities/upload/evidence
# uploaded
shell.php → 200 OK  stored at /hackable/uploads/shell.php
# executed
GET /hackable/uploads/shell.php?c=id → uid=33(www-data)
Remediation
Validate MIME and content, not just extension; store outside the web root; randomise names; disable script execution in the upload directory.
Retest
✓ Resolved. Non-image uploads rejected; upload path no longer executes scripts.

DV-04 (XSS), DV-05 (CSRF on password change) and DV-06 (weak cookie flags) 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. DVWA is an open-source project used here as a public training target; Verfend is not affiliated with its authors. “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.