Setting Up Your Hacking Lab: Free Tools for 2025
Every security professional needs a lab—a safe, legal environment to practice attacks, test tools, and break things without consequences. The good news: you can build a complete hacking lab for free.
This guide walks you through setting up everything from virtualization to vulnerable targets to offensive tools.
Why You Need a Lab
Testing on systems you don't own is illegal. Period. Even if you find a bug and report it responsibly, unauthorized testing can result in:
- Criminal charges (Computer Fraud and Abuse Act in the US)
- Civil lawsuits
- Account bans from bug bounty platforms
- Reputation damage
Your lab gives you:
- Legal targets - Break whatever you want
- Learning freedom - Experiment without fear
- Controlled environment - No accidental damage to real systems
- Realistic practice - Modern vulnerable apps mirror real vulnerabilities
Architecture Overview
┌─────────────────────────────────────────────────────┐
│ HOST MACHINE │
│ │
│ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Kali Linux VM │ │ Vulnerable Apps (Docker)│ │
│ │ - Burp Suite │ │ - DVWA │ │
│ │ - sqlmap │ │ - Juice Shop │ │
│ │ - ffuf │ │ - WebGoat │ │
│ │ - etc. │ │ - Custom targets │ │
│ └─────────────────┘ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Isolated Network (NAT/Host-only) │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘Step 1: Virtualization
Option A: VirtualBox (Free, Recommended for Beginners)
# macOS
brew install --cask virtualbox
# Windows
# Download from virtualbox.org
# Linux (Ubuntu/Debian)
sudo apt install virtualboxMinimum specs for smooth operation:
- 8GB RAM (16GB preferred)
- 50GB free disk space
- CPU with virtualization support (VT-x/AMD-V)
Option B: Docker (Free, Lightweight)
For running vulnerable web applications:
# macOS
brew install --cask docker
# Windows
# Download Docker Desktop from docker.com
# Linux (Ubuntu/Debian)
sudo apt install docker.io docker-compose
sudo usermod -aG docker $USEROption C: Cloud-Based (Free Tiers)
If your machine is underpowered:
- Linode - $100 free credit for new accounts
- DigitalOcean - $200 free credit
- AWS Free Tier - Limited but usable
Step 2: Attack Machine (Kali Linux)
Kali Linux comes pre-loaded with security tools:
Download and Install
# Download from kali.org/get-kali
# Choose: Installer Images → Kali Linux 64-bit
# Recommended VM settings:
# - 4GB RAM minimum (8GB preferred)
# - 80GB disk
# - 2 CPU cores
# - NAT or host-only networkFirst Boot Setup
# Update everything
sudo apt update && sudo apt upgrade -y
# Install common additions
sudo apt install -y \
git \
python3-pip \
golang-go \
default-jdk \
nodejs \
npm
# Set up Go path (for many tools)
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.zshrc
source ~/.zshrcAlternative: Parrot OS
Lighter than Kali, good for older hardware:
Download from parrotsec.org
Choose: Security EditionStep 3: Vulnerable Applications
Docker-Based Labs (Easiest)
DVWA (Damn Vulnerable Web Application)
# Pull and run
docker run -d -p 80:80 vulnerables/web-dvwa
# Access at http://localhost
# Default login: admin/password
# Set security level to "Low" initiallyOWASP Juice Shop
# Modern, JavaScript-based vulnerable app
docker run -d -p 3000:3000 bkimminich/juice-shop
# Access at http://localhost:3000
# No login required to startWebGoat
# OWASP's learning platform
docker run -d -p 8080:8080 -p 9090:9090 webgoat/webgoat
# Access at http://localhost:8080/WebGoatAll-in-One Setup
# docker-compose.yml
version: '3'
services:
dvwa:
image: vulnerables/web-dvwa
ports:
- "8081:80"
juice-shop:
image: bkimminich/juice-shop
ports:
- "3000:3000"
webgoat:
image: webgoat/webgoat
ports:
- "8080:8080"
- "9090:9090"
mutillidae:
image: citizenstig/nowasp
ports:
- "8082:80"# Run all at once
docker-compose up -dVM-Based Labs
Metasploitable 2/3
Classic vulnerable Linux machines:
# Download from:
# Metasploitable 2: sourceforge.net/projects/metasploitable
# Metasploitable 3: github.com/rapid7/metasploitable3
# Import OVA into VirtualBox
# Use host-only network (NEVER bridged!)VulnHub
Hundreds of vulnerable VMs for practice:
# Browse: vulnhub.com
# Recommended for beginners:
# - Kioptrix series
# - Mr Robot
# - Basic PentestingStep 4: Essential Tools
Web Proxy: Burp Suite Community
The most important tool for web security:
# Already installed on Kali
# Or download from: portswigger.net/burp/communitydownload
# Configure browser:
# 1. Open Burp → Proxy tab
# 2. Set browser proxy to 127.0.0.1:8080
# 3. Install Burp's CA certificate for HTTPS interceptionKey Burp features to learn:
- Proxy - Intercept and modify requests
- Repeater - Replay and edit requests manually
- Intruder - Automated attacks (limited in free version)
- Decoder - Encode/decode data
- Comparer - Compare responses
SQL Injection: sqlmap
# Already installed on Kali
# Or install:
git clone https://github.com/sqlmapproject/sqlmap.git
cd sqlmap
python3 sqlmap.py --wizardBasic usage:
# Test a parameter
sqlmap -u "http://target.com/page?id=1" --dbs
# With authentication
sqlmap -u "http://target.com/page?id=1" --cookie="session=abc123"
# Increase level/risk for thorough testing
sqlmap -u "http://target.com/page?id=1" --level=5 --risk=3Web Fuzzing: ffuf
# Install
go install github.com/ffuf/ffuf/v2@latest
# Or on Kali
sudo apt install ffufBasic usage:
# Directory bruteforce
ffuf -u http://target.com/FUZZ -w /usr/share/wordlists/dirb/common.txt
# Parameter fuzzing
ffuf -u "http://target.com/page?FUZZ=test" -w params.txt
# POST data fuzzing
ffuf -u http://target.com/login -X POST \
-d "username=admin&password=FUZZ" \
-w passwords.txtSubdomain Enumeration: subfinder
# Install
go install github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Usage
subfinder -d target.com -o subs.txtHTTP Toolkit: httpx
# Install
go install github.com/projectdiscovery/httpx/cmd/httpx@latest
# Check which subdomains are alive
cat subs.txt | httpx -o alive.txt
# With tech detection
cat subs.txt | httpx -tech-detect -o results.txtWordlists: SecLists
# Clone the essential wordlist collection
git clone https://github.com/danielmiessler/SecLists.git ~/wordlists
# Or install on Kali
sudo apt install seclists
# Located at: /usr/share/seclistsKey wordlists:
Discovery/Web-Content/common.txt - Directory bruteforce
Discovery/Web-Content/api/ - API endpoint discovery
Discovery/DNS/subdomains-top1million-5000.txt - Subdomain enumeration
Passwords/Common-Credentials/ - Password lists
Fuzzing/XSS/ - XSS payloads
Fuzzing/SQLi/ - SQL injection payloadsBrowser Extensions
Firefox (recommended for security testing):
- FoxyProxy - Quick proxy switching
- Wappalyzer - Technology detection
- Cookie-Editor - Modify cookies easily
- HackBar - Quick encoding/decoding
Step 5: Network Configuration
Isolate Your Lab
Never expose vulnerable applications to your network:
# VirtualBox network modes:
NAT - VMs can access internet, isolated from LAN
Host-only - VMs talk to host only, no internet
Bridged - NEVER use for vulnerable VMs!Recommended Setup
Attack VM (Kali): NAT + Host-only adapter
Vulnerable VMs: Host-only only
Docker containers: localhost binding onlyHost-Only Network Setup
# VirtualBox
1. File → Host Network Manager
2. Create new network (e.g., 192.168.56.0/24)
3. Assign to VMs needing internal communicationStep 6: Practice Methodology
Daily Workflow
1. Start your vulnerable application
2. Configure browser proxy through Burp
3. Explore the application manually
4. Identify potential vulnerabilities
5. Attempt exploitation
6. Document findings
7. Learn the fixSkill Progression Path
Week 1-2: Environment mastery
- Get comfortable with Burp Suite
- Practice intercepting and modifying requests
- Explore DVWA at security level "Low"
Week 3-4: XSS deep dive
- Complete all DVWA XSS challenges
- Try Juice Shop XSS challenges
- Move to PortSwigger labs
Week 5-6: SQL Injection
- DVWA SQLi challenges
- Learn manual SQLi before using sqlmap
- Practice blind SQLi techniques
Week 7-8: Access Control
- IDOR practice on Juice Shop
- Authentication bypass challenges
- Session management testing
Troubleshooting Common Issues
"Burp isn't intercepting HTTPS"
1. Export Burp's CA certificate:
Proxy → Options → Import/Export CA certificate
2. Import into browser/system trust store
3. Restart browser"Docker containers can't start"
# Check if Docker daemon is running
sudo systemctl status docker
# Check port conflicts
sudo lsof -i :80
sudo lsof -i :8080
# Use different ports if needed
docker run -p 8888:80 vulnerables/web-dvwa"VMs are too slow"
1. Allocate more RAM (at least 4GB for Kali)
2. Enable 3D acceleration if available
3. Use SSD if possible
4. Close unnecessary host applications
5. Consider cloud alternatives"Can't connect to VM from host"
# Check VM's IP
ip addr show
# Verify network adapter is correct type
# Host-only: should have 192.168.x.x address
# NAT: should have 10.0.x.x address
# Ping from host to verify connectivity
ping 192.168.56.xResource Requirements Summary
Minimum Specs
RAM: 8GB (4GB for host, 4GB for VMs)
Storage: 50GB free
CPU: Dual-core with virtualization
Network: Any internet connectionRecommended Specs
RAM: 16GB+ (8GB for VMs)
Storage: 100GB+ SSD
CPU: Quad-core
Network: Stable internet for updatesCloud Alternative
If your hardware is limited:
Provider: Linode, DigitalOcean, AWS
Instance: 4GB RAM, 2 vCPU minimum
Cost: $20-40/month (or use free credits)
Benefit: No local resource usageQuick Reference
Start Your Lab
# Start Docker vulnerable apps
docker-compose up -d
# Start Kali VM (if using)
# Start VirtualBox → Select Kali → Start
# Open Burp Suite
burpsuite &
# Configure Firefox proxy
# Settings → Network → Manual proxy: 127.0.0.1:8080Stop Your Lab
# Stop Docker containers
docker-compose down
# Shutdown VMs through VirtualBox GUIAccess Your Targets
DVWA: http://localhost:8081
Juice Shop: http://localhost:3000
WebGoat: http://localhost:8080/WebGoat
Mutillidae: http://localhost:8082Next Steps
With your lab set up, you're ready to practice. Start with our guided security challenges that match the vulnerabilities in these lab environments:
- XSS challenges → Practice on DVWA, Juice Shop
- SQL Injection challenges → Practice on DVWA, WebGoat
- Authentication challenges → Practice on Juice Shop, WebGoat
Build skills in your safe lab, then apply them to bug bounties and real-world testing.
---
Tools and vulnerable applications are regularly updated. This guide will be refreshed as new resources emerge. Last updated: December 2025.
Stay ahead of vulnerabilities
Weekly security insights, new challenges, and practical tips. No spam.
Unsubscribe anytime. No spam, ever.