Vulnerability
Management
Workbook
A complete, hands-on training programme covering the full VM lifecycle — from asset discovery through to metrics reporting. Work through each module at your own pace.
| # | Module | Topics Covered | Est. Time |
|---|---|---|---|
| 0 | 📋 Cover | Overview, objectives, instructions | 5 min |
| 1 | 📚 Foundations | VM lifecycle, CVE/NVD/CVSS/EPSS, standards, free tools | 45 min |
| 2 | 🔍 Asset Inventory | Asset register, criticality scoring, discovery lab | 30 min |
| 3 | 📡 Scanning Lab | Nmap commands, scan types, output analysis exercise | 45 min |
| 4 | ⚡ CVSS Scoring | CVSS v3.1 interactive calculator, worked CVEs, scoring quiz | 60 min |
| 5 | 🎯 Risk Prioritisation | EPSS, risk scoring formula, 12-vuln triage lab | 45 min |
| 6 | 🛠️ Remediation Tracker | SLA targets, live tracker, patch rate metrics | 30 min |
| 7 | 📊 Metrics Dashboard | KPI definitions, trend charts, exec summary builder | 30 min |
| 8 | 🔁 Process Review | Maturity assessment, lessons-learned template | 45 min |
| 9 | 📝 Final Assessment | 30-question exam, auto-graded MC, immediate feedback | 45 min |
| 10 | 🖥️ Hands-On Lab Setup | Build a free VirtualBox lab (Kali + Metasploitable2), 8 guided exercises | 90 min |
| 11 | ☁️ Cloud Lab Alternative | TryHackMe & HTB Academy zero-install track for locked-down laptops | 60 min |
| 12 | 🎓 Instructor Lab Setup | Classroom pre-provisioning, shared cloud lab, Docker track, student reset scripts | Instructor use |
Foundations of
Vulnerability Management
Vulnerability Management (VM) is a continuous, proactive process of identifying, classifying, prioritising, remediating, and reporting on security vulnerabilities across an organisation's technology estate. Unlike a one-off penetration test, VM is an ongoing programme — not a project with a defined end date.
CVE-YEAR-NUMBER (e.g. CVE-2021-44228). Maintained by MITRE. Browse at cve.mitre.org| Tool | Purpose | Where to Get It |
|---|---|---|
| Nmap | Network discovery & port scanning — the foundation of any scan workflow | nmap.org (free, open-source) |
| OpenVAS / Greenbone | Full vulnerability scanner — detects CVEs across hosts | greenbone.net (community edition free) |
| Metasploit Community | Exploitation framework for confirming exploitability of findings | metasploit.com (community edition free) |
| NIST CVSS Calculator | Official online CVSS v3.1 & v4.0 scorer — replicated interactively in Module 4 | nvd.nist.gov/vuln-metrics/cvss |
| Shodan | Search engine for internet-exposed devices — useful for external attack surface discovery | shodan.io (free basic tier) |
| Vulners / OSV | Vulnerability databases with API access for automation workflows | vulners.com / osv.dev |
Asset Inventory Lab
Build and complete an asset register for fictional company AcmeCorp. Fill in the yellow cells, write the criticality formula, and identify your top scan targets.
Internet Facing: Yes = 5, No = 1
| Asset ID | Hostname | IP Address | OS | Type | Owner | Internet Facing? | Data Sensitivity (1–5) | Business Impact (1–5) | Criticality Score |
|---|
Vulnerability Scanning Lab
| Command | Description |
|---|---|
nmap -sn 10.0.1.0/24 | Ping sweep — discover live hosts without port scanning. Fast first step. |
nmap -sS -p 1-1000 10.0.1.10 | SYN (stealth) scan on ports 1–1000. Faster than full connect. Requires root/admin. |
nmap -sV -sC 10.0.1.10 | Service version detection + default NSE scripts. Run after host discovery. |
nmap -A -T4 10.0.1.10 | Aggressive scan: OS detect, version, scripts, traceroute. Noisy but thorough. |
nmap -sU -p 53,161,500 10.0.1.10 | UDP scan on DNS, SNMP, IKE. Often overlooked — UDP services have major CVEs. |
nmap -p 445 --script smb-vuln-* 10.0.1.0/24 | Run SMB vulnerability scripts across subnet. Detects EternalBlue and related vulns. |
nmap --script vuln 10.0.1.10 | Run all vulnerability detection scripts against a host. Comprehensive but slower. |
nmap -oX output.xml 10.0.1.0/24 | Export to XML for import into VM platforms like OpenVAS, Nessus, or Defect Dojo. |
| Scan Type | How It Works | Accuracy | Best Used For |
|---|---|---|---|
| Unauthenticated / External | No credentials; simulates outside attacker | ⭐⭐ Moderate | External attack surface, open ports, banner grabbing |
| Authenticated / Credentialed | Logs in with read-only creds; sees software versions | ⭐⭐⭐⭐⭐ High | Internal patch state, installed software, missing patches |
| Agent-Based | Lightweight agent installed on each host | ⭐⭐⭐⭐⭐ Highest | Laptops, remote workers, always-on monitoring |
| Passive / Traffic Analysis | Listens to network traffic; no packets sent | ⭐⭐ Limited | Zero-noise environments; discovering assets passively |
CVSS v3.1 Scoring Calculator
| CVE | Description | CVSS Vector | Score |
|---|---|---|---|
| CVE-2021-44228 Log4Shell | RCE in Apache Log4j via JNDI lookup in logged strings. Affects millions of Java apps. | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | 10.0 CRITICAL |
| CVE-2021-34527 PrintNightmare | Windows Print Spooler RCE. Allows privilege escalation when spooler is accessible remotely. | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | 8.8 HIGH |
| CVE-2022-0847 Dirty Pipe | Linux kernel privilege escalation via pipe mechanism. Local user gains root on kernel 5.8+. | AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H | 7.8 HIGH |
| CVE-2023-23397 Outlook NTLM | Zero-click Outlook vuln leaks Net-NTLMv2 hash via malicious calendar reminder. No user action needed. | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | 9.8 CRITICAL |
Risk-Based Prioritisation
You are AcmeCorp's VM analyst. Your patching team can only handle 4 vulnerabilities this week. Use the Risk Priority Score formula to decide which 4 to patch first.
= (CVSS/10 × 0.35) + (EPSS × 0.35) + (Asset Criticality/5 × 0.20) + (Exploit Available × 0.10)
Exploit Available: Yes = 1, No = 0
Remediation Tracker
| Severity | CVSS Range | Patch SLA | Guidance |
|---|---|---|---|
| Critical | 9.0–10.0 | 24 hours | Escalate immediately; emergency change if required |
| High | 7.0–8.9 | 7 days | Schedule in next maintenance window |
| Medium | 4.0–6.9 | 30 days | Include in monthly patch cycle |
| Low | 0.1–3.9 | 90 days | Address in quarterly patch cycle |
| Ticket | CVE | Severity | Asset | Detected | SLA Deadline | Owner | Status | Notes | Verified? |
|---|
VM Metrics Dashboard
Process Review & Maturity Assessment
Rate your organisation (or AcmeCorp) on each area from 1 (none) to 5 (optimised). Drag the sliders.
Final Assessment
Hands-On Lab Setup Guide
Modules 1–9 taught you the theory and let you analyse simulated scan output. That's necessary but not sufficient — real VM analysts need muscle memory from running tools against a live target. This module walks you through building a free, fully isolated practice lab on your own laptop in under an hour, then gives you 8 progressively harder hands-on exercises to run inside it.
| Component | Role | Size | Source |
|---|---|---|---|
| VirtualBox | Free hypervisor — runs all the VMs below | ~150 MB | virtualbox.org |
| Kali Linux VM | Your "attacker" machine — Nmap, Metasploit, and scanners pre-installed | ~3–4 GB | kali.org/get-kali (official VirtualBox image) |
| Metasploitable 2 | Your primary "target" — 30+ deliberately vulnerable services | ~800 MB | sourceforge.net/projects/metasploitable |
| DVWA (bundled in Metasploitable2) | Web app target — SQLi, XSS, CSRF, file upload practice | included | Already on Metasploitable2; standalone version also exists |
kali / kali.vmdk file. Default credentials: msfadmin / msfadminifconfig to note its IP (e.g. 192.168.56.101). Start Kali, log in, run ip a to confirm it's on the same subnet. From Kali, run ping 192.168.56.101 to confirm connectivity.Run every command from your Kali VM, targeting Metasploitable2's IP. Replace TARGET_IP with the IP you noted in Step 5. Work through them in order — each builds on skills from the last. Record your findings in the answer boxes provided.
Confirm the target is alive, then enumerate every open port and the service/version running on each.
Use Nmap's built-in vulnerability scripts to automatically flag known CVEs on the open ports you found.
Port 21 runs vsftpd 2.3.4, which contains a known backdoor (CVE-2011-2523). Confirm it manually, then exploit it via Metasploit.
DVWA is bundled on Metasploitable2 at port 80. Log in (admin/password) and identify the underlying technology stack.
Set DVWA's security level to "low" (DVWA Security menu), navigate to the SQL Injection module, and extract data you shouldn't have access to.
Metasploitable2 ships a misconfigured Samba service exploitable via Metasploit's usermap_script module.
Using everything found in Exercises 1–6, write a one-page finding report for the vsftpd backdoor exactly as you would for a real client or employer.
Mitigate the FTP backdoor by disabling vsftpd, then re-run your scan to prove closure — exactly as Module 1's "Verification" phase requires.
Instructor Lab Provisioning Guide
Three deployment models — classroom machines, shared cloud server, and Docker — with exact commands, student reset procedures, and a pre-session checklist. Choose the model that fits your setup.
Run this as Administrator on each classroom machine, or deploy via GPO/SCCM. Downloads and installs VirtualBox silently with extension pack.
sudo apt update && sudo apt install -y virtualbox virtualbox-ext-pack — accept the PUEL license non-interactively by pre-seeding with echo "virtualbox-ext-pack virtualbox-ext-pack/license select true | sudo debconf-set-selections"Pre-download the VM files to a shared network drive or USB, then run this script to import both VMs on each machine. Much faster than having students download individually.
Run this script between student sessions to restore both VMs to the clean-install snapshot. Takes ~30 seconds per machine. Automate across all machines via PowerShell remoting or a classroom management tool.
Invoke-Command -ComputerName lab01,lab02,lab03 -FilePath .\reset_lab.bat — or your institution's imaging/classroom management software (Deep Freeze, NetRestore, Faronics) to push the reset to all stations simultaneously.You provision one cloud VPS (Ubuntu 22.04) running Metasploitable2 in Docker + an OpenVPN server. Each student receives a personal .ovpn config file. They connect from any device (Kali laptop, Windows with Kali WSL, or even Kali on TryHackMe via OpenVPN) and scan/exploit your shared target. You reset the target between cohorts with a single command.
| Provider | Spec Needed | Monthly Cost | Notes |
|---|---|---|---|
| DigitalOcean | 2 vCPU, 4GB RAM, 80GB SSD (Basic Droplet) | ~$24/mo | Simple UI, hourly billing — destroy when not teaching |
| AWS EC2 | t3.medium (2 vCPU, 4GB RAM) | ~$30/mo or Free Tier t2.micro for small groups | t2.micro (1GB RAM) free for 12 months — enough for 1–5 students |
| Hetzner | CX22 (2 vCPU, 4GB RAM) | ~€4.35/mo (~$5) | Cheapest option; EU-based; ideal for cost-sensitive programmes |
| 💡 Best practice | Spin up the VPS only when teaching, destroy when done. Saves 80–90% of cost for weekly sessions. Store the docker-compose.yml in Git so you can rebuild in 5 minutes. | ||
Save this as docker-compose.yml on your VPS. The vulnerable target is on an isolated Docker network — not reachable from the internet, only from the OpenVPN tunnel.
openvpn-install bash script (github.com/Nyr/openvpn-install) which handles the entire OpenVPN + EasyRSA setup in one command and generates .ovpn files interactively. Highly recommended for non-sysadmin instructors.Add this to your OpenVPN server config (/etc/openvpn/server.conf) so connected students can reach the 10.20.0.0/24 Docker lab network:
One command resets both targets to a clean state. Run between sessions or cohorts. Takes ~20 seconds.
studentXX.ovpn file provided by your instructor. In OpenVPN Connect: click the + icon → Import from File → select your .ovpn file10.20.0.10 (Metasploitable2) and 10.20.0.11 (DVWA).ping 10.20.0.10 from your Kali terminal. If you get replies, you are connected and ready to begin.Docker containers start in under 10 seconds vs 60–90 seconds for VMs. Resetting is instant — docker restart recreates a clean target in seconds. Requires only Docker Desktop (4GB RAM minimum) vs 8GB for dual VMs. The tradeoff: students don't learn network configuration, and some Metasploitable2 services don't run perfectly in Docker. Use this model for demos or when time between exercises is at a premium.
Students (or you pre-install) Docker Desktop, then run this. Everything else is managed by the compose file.
| Factor | 🖥️ Model A — Classroom VMs | ☁️ Model B — Shared Cloud | 🐳 Model C — Docker |
|---|---|---|---|
| Setup time (first time) | 45–90 min per machine | 2–3 hrs (one server) | 15–30 min per machine |
| Reset time between students | ~30 sec (snapshot restore) | ~20 sec (docker compose) | ~5–10 sec (docker restart) |
| Student device requirement | Must use classroom PC | Any device + internet | Must have Docker Desktop |
| Internet dependency | None after setup | Required (VPN) | None after image pull |
| Ongoing cost | Free (uses existing PCs) | $5–30/month (spin down when not teaching) | Free |
| Networking skills students gain | High — they configure VirtualBox networking | Medium — VPN setup only | Low — abstracted away |
| Instructor complexity | Medium — must image all machines | High — VPS + OpenVPN config | Low — one compose file |
| Best for | Dedicated lab room, in-person | Remote/hybrid cohorts | Quick demos, constrained time |
Cloud Lab Alternative Track
For students on locked-down laptops, Chromebooks, school-managed devices, or Apple Silicon Macs — complete all the same hands-on skills entirely in a browser, no installation required.
| What's Free | What's Paid |
|---|---|
| ✅ Everything — 250+ labs | Nothing — there is no paid tier |
| ✅ SQL Injection, XSS, CSRF, Access Control | — |
| ✅ Apprentice → Expert difficulty | — |
| ✅ Burp Suite integration tutorials | — |
| What's Free | What Requires Premium (~$10–14/mo) |
|---|---|
| ✅ Selected individual rooms (including all rooms recommended in this workbook) | 🔒 Most rooms inside structured learning paths (SOC L1, Jr Pentester, etc.) |
| ✅ Browser-based AttackBox — 1 hour per day limit | 🔒 Unlimited AttackBox time |
| ✅ OpenVPN access (connect your own Kali — no time limit) | 🔒 Certificates of completion for learning paths |
| ✅ Community access | 🔒 Network simulation rooms (special labs) |
| What's Free (Tier 0) | What Requires Payment |
|---|---|
| ✅ Intro to Academy | 🔒 Tier I: Network Enumeration with Nmap (~$) |
| ✅ Linux Fundamentals | 🔒 Tier I: Getting Started module (~$) |
| ✅ Learning Process | 🔒 Tier II+: Vulnerability Assessment, SQL Injection (~$$) |
| ✅ Web Requests (Tier 0) | 🔒 All certifications (CPTS, CBBH/CWES) — exam fees ~$210+ |
| ✅ 1 Pwnbox spawn/day (2hrs) | 🔒 Unlimited Pwnbox with subscription |
| What's "Free" (very limited) | What Requires VIP+ ($25/mo) |
|---|---|
| ⚠️ Active machines only — no writeups, no hints | 🔒 Retired machines (hundreds) + official writeups |
| ⚠️ No Pwnbox — must use own Kali + OpenVPN | 🔒 Pwnbox (browser Kali) |
| ⚠️ Very limited for structured learning | 🔒 Starting Point guided beginner machines |
| Platform | Truly Free? | Free Daily Time Limit | Credit Card Needed? | Browser-Based? | Best Free Starting Point |
|---|---|---|---|---|---|
| PortSwigger Web Academy | ✅ 100% Free | No limit | No | Yes | portswigger.net/web-security → SQL Injection track |
| TryHackMe | ⚠️ Free tier exists | 1 hr/day (AttackBox) | No | Yes | tryhackme.com → "Vulnerabilities 101" room |
| HTB Academy | ⚠️ Tier 0 only free | 2 hrs/day (Pwnbox) | No (Tier 0 only) | Yes (Pwnbox) | academy.hackthebox.com → "Linux Fundamentals" (Tier 0) |
| HTB Labs | ❌ Effectively paid | No Pwnbox on free | Yes (for useful access) | Paid only (Pwnbox) | Not recommended until free content exhausted |
| THM Room | Maps To | Cost | Est. Time | URL |
|---|---|---|---|---|
| Vulnerabilities 101 | Module 1 — Foundations (CVE, CVSS, NVD) | ✅ Free | 1–2 hrs | tryhackme.com/room/vulnerabilities101 |
| Nmap | Module 3 — all scan types, NSE scripts, output formats | ✅ Free | 2–3 hrs | tryhackme.com/room/furthernmap |
| Metasploit: Introduction | Module 10 Ex 3 — Metasploit framework basics | ✅ Free | 2 hrs | tryhackme.com/room/metasploitintro |
| OWASP Top 10 | Module 10 Exercises 4–5 — web app vuln categories | ✅ Free | 4–6 hrs | tryhackme.com/room/owasptop10 |
| Blue (EternalBlue) | Module 10 Ex 6 — Windows SMB exploitation | ✅ Free (retired room) | 2 hrs | tryhackme.com/room/blue |
| Vulnerability Management | Modules 1 + 6 — Full VM lifecycle, OpenVAS walkthrough | ⚠️ Some tasks free, some premium | 2–3 hrs | tryhackme.com/room/vulnerabilitymanagementkj |
| Pre-Security path | Prerequisite foundation — Linux, networking, web | 🔒 Mostly premium rooms | 40 hrs | tryhackme.com/path/outline/presecurity |
| HTB Academy Module | Maps To | Cost | Est. Time |
|---|---|---|---|
| Linux Fundamentals (Tier 0) | Prerequisite — command line skills needed for all scanning exercises | ✅ Free (Tier 0) | 8 hrs |
| Web Requests (Tier 0) | Module 3 / 10 — HTTP fundamentals for web scanning | ✅ Free (Tier 0) | 3 hrs |
| Intro to Academy (Tier 0) | Platform orientation — do this first | ✅ Free (Tier 0) | 30 min |
| Getting Started (Tier I) | Modules 1–3 — VM lifecycle, tools, first scan | 🔒 Paid (Tier I — ~$) | 3–4 hrs |
| Network Enumeration with Nmap (Tier I) | Module 3 — Full Nmap scanning methodology | 🔒 Paid (Tier I — ~$) | 4–6 hrs |
| Vulnerability Assessment (Tier II) | Modules 1, 4, 5, 6 — Full VA methodology, Nessus + OpenVAS lab | 🔒 Paid (Tier II — $$) | 5–8 hrs |
| SQL Injection Fundamentals (Tier I) | Module 10 Ex 5 — SQLi attack and remediation | 🔒 Paid (Tier I — ~$) | 5–7 hrs |
| Learning Path | Maps To | Approx Labs | URL |
|---|---|---|---|
| SQL Injection | Module 10 Exercise 5 — SQLi in DVWA, CWE-89 | 18 labs (beginner → expert) | portswigger.net/web-security/sql-injection |
| Cross-Site Scripting (XSS) | Module 4 Scenario C — XSS CVSS scoring exercise, CWE-79 | 30 labs | portswigger.net/web-security/cross-site-scripting |
| Access Control / IDOR | Module 5 — Risk prioritisation context: privilege escalation via broken access | 13 labs | portswigger.net/web-security/access-control |
| Authentication | Module 10 Exercise 6 — Weak credential/auth bypass context | 14 labs | portswigger.net/web-security/authentication |
Each row below gives you the cloud-platform equivalent of the corresponding Module 10 hands-on exercise. Complete whichever exercises you can on the free tier; mark the others for when you have access to a paid tier or the local lab.
| Module 10 Exercise | Cloud Equivalent | Platform | Free? |
|---|---|---|---|
| Ex 1 — Host discovery & full port scan | THM "Nmap" room — Tasks 3–6 (host discovery, port scanning) | TryHackMe | ✅ Free |
| Ex 2 — Vulnerability script scanning | THM "Nmap" room Task 8 — NSE scripts section | TryHackMe | ✅ Free |
| Ex 3 — vsftpd backdoor exploitation | THM "Metasploit: Introduction" room — exploitation walkthrough | TryHackMe | ✅ Free |
| Ex 4 — Web app recon (DVWA) | PortSwigger "Burp Suite: The Basics" + web recon intro | PortSwigger | ✅ 100% Free |
| Ex 5 — SQL Injection in DVWA | PortSwigger "SQL Injection" — Apprentice labs 1–5 (identical SQLi mechanics to DVWA) | PortSwigger | ✅ 100% Free |
| Ex 6 — Samba exploitation | THM "Blue" room — EternalBlue via SMB (equivalent privilege escalation scenario) | TryHackMe | ✅ Free (retired room) |
| Ex 7 — Write a vulnerability report | Complete in this workbook using your findings from Ex 1–6 above | This workbook | ✅ Free |
| Ex 8 — Remediate & re-scan | THM "Vulnerability Management" room — remediation workflow using OpenVAS (some tasks may be premium) | TryHackMe | ⚠️ Partially free |
As you complete each cloud room or lab, record your key finding, the command or technique that was most important, and what it taught you. This becomes your personal evidence log — equivalent to the scan outputs from Module 10.
Check off each item as you complete it. Aim to tick all "free" items before requesting any paid access.
| Factor | Cloud Platforms (THM / HTB) | Local VirtualBox Lab |
|---|---|---|
| Setup time | 5 minutes — create account, done | 45–90 mins first time |
| Device requirements | Any browser, any OS, any hardware | 8GB RAM, admin rights, 20GB disk |
| Networking knowledge gained | Low — networking is abstracted away | High — you configure every interface |
| Tool installation experience | None — tools pre-installed | Real — you troubleshoot install issues |
| Scan output authenticity | Real scans against real targets | Real scans against real targets |
| Offline access | None — requires internet | Full offline |
| Cost | Free tier limited; $10–14/mo for full access | Free forever once set up |
| Employer signal | TryHackMe completion well-known; HTB Labs very well-regarded | Describing self-built lab in interview = strong signal |
| Verdict | Best for: locked-down devices, beginners, structured learning | Best for: deeper skills, interview talking points, offline use |