Skip to content

About

Python/PyQt6 desktop application for automated web vulnerability assessment, combining OWASP ZAP, supplementary security checks, live analysis, scan history, and multi-format reporting.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Web Application Vulnerability Scanner

A Python desktop application for automated web vulnerability assessment, combining OWASP ZAP with supplementary security checks, live analysis, persistent scan history, and multi-format reporting.

Python 3.11+ PyQt6 OWASP ZAP SQLite

Vulnerability scanner dashboard showing scan risk and severity results

Overview

The Web Application Vulnerability Scanner is a desktop security-testing application built with Python and PyQt6. It coordinates OWASP ZAP scans, performs supplementary black-box checks, displays findings through a live interface, and stores completed assessments for later analysis and reporting. Developed as the practical component of a Computer Science master's dissertation, it demonstrates application-security knowledge alongside API integration, concurrent processing, database design, data visualisation, and report generation.

Use only against applications that you own or have explicit permission to test.

Key Features

Feature What it does
Automated DAST workflow Runs OWASP ZAP spidering and active scanning from the desktop application
Extended assessment mode Adds supplementary checks and targeted verification for selected web-security risks
Live analysis Displays severity-ranked alerts, affected URLs, evidence, CWE references, remediation guidance, and assessment coverage
Security dashboard Presents risk scores, severity totals, recurring findings, affected targets, and scan trends
Persistent history Stores scan summaries and individual findings locally using SQLite
Reporting Exports completed assessments as PDF, JSON, CSV, or Excel

Application Preview

View Live Results and Reports

Live results and assessment coverage

Live Results page showing the OWASP threat coverage matrix and severity-ranked vulnerability alerts

Findings are mapped to the assessment framework and displayed with severity, affected URLs, CWE references, evidence, and remediation guidance.

Scan history and reporting

Reports page showing saved scan history, report previews, severity totals, and export controls

Completed assessments are stored locally and can be reviewed, reopened, filtered, or exported in multiple formats.

How It Works

  1. The user configures an authorised target and selects a scan mode through the PyQt6 interface.
  2. ZapScanWorker runs the scan in a background Qt thread, keeping the application responsive.
  3. ZapClient communicates with OWASP ZAP to perform spidering and active security testing.
  4. Extended mode runs additional Python-based checks and targeted verification.
  5. Findings are classified, displayed in Live Results, stored in SQLite, and made available for export.

Scan modes

Mode Behaviour
Standard ZAP Scan Runs the configured ZAP spider and active scanner, then collects the resulting alerts
Extended OWASP Top 10 Scan Adds supplementary checks and targeted verification to the ZAP scanning workflow

Extended mode adds targeted checks covering injection, access control, exposed files, API security, authentication controls, security headers, and related web-application risks.

Security Coverage

The project uses an assessment framework created for the dissertation brief. It covers eight categories aligned with OWASP Top 10:2021, including Broken Access Control, Injection, and Security Misconfiguration. It also includes two dissertation-specific extensions: Insecure APIs and AI/ML-Based Attacks.

These extensions are not presented as the official A09 and A10 categories. The matrix also distinguishes Checked, Partially checked, and Finding detected, avoiding the assumption that no automated alert proves an application is secure.

Technology

Area Technology
Language Python 3.11+
Desktop interface PyQt6
DAST engine OWASP ZAP API
Local persistence SQLite
Charts Matplotlib and Plotly
PDF generation ReportLab
Spreadsheet output CSV and OpenPyXL
Version control Git and GitHub

Installation

View setup instructions

Prerequisites

  • Python 3.11 or later
  • OWASP ZAP installed locally
  • An application that you are authorised to test

Clone the repository and create a virtual environment:

git clone https://github.com/maxfroggatt/Web-Application-Vulnerability-Scanner.git
cd Web-Application-Vulnerability-Scanner
python -m venv .venv

Activate the environment:

Windows PowerShell

.\.venv\Scripts\Activate.ps1

Windows Command Prompt

.venv\Scripts\activate.bat

macOS/Linux

source .venv/bin/activate

Install the dependencies and start the application:

python -m pip install -r requirements.txt
python main.py

The default connection expects OWASP ZAP at 127.0.0.1:8090 with the API key 12345. These settings can be changed inside the application.

Limitations and Responsible Use

This academic prototype does not replace a professional penetration test. Automated black-box scanning cannot fully assess business logic, role-based authorisation, source-code flaws, supply-chain controls, or every authentication workflow. Findings may also require manual validation to eliminate false positives.

Only scan systems that you own or have explicit permission to test. Vulnerability scanning can disrupt services and may be unlawful when performed without authorisation. This project is intended for education, research, and authorised security testing.

About

Python/PyQt6 desktop application for automated web vulnerability assessment, combining OWASP ZAP, supplementary security checks, live analysis, scan history, and multi-format reporting.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages