
Docker-based multi-stage attack emulation lab demonstrating CVE-2017-5638 and CVE-2021-41773 exploitation, lateral movement, and Suricata IDS detection across a realistic 10-container network.
A 7-host Docker-based attack emulation lab designed to demonstrate a multi-stage kill chain, lateral movement, and multi-point IDS detection.
This lab simulates a realistic network environment where an attacker progresses from initial reconnaissance to a foothold, and finally to a high-value target through pivoting. It features two independent Suricata IDS instances acting as sidecars to the critical hosts, providing a "defender's view" of the entire attack lifecycle.
172.28.0.0/24 subnet.web-struts) via OGNL injection in the Content-Type header.web-struts host, the attacker launches a secondary exploit against an internal target.web-vuln) to achieve root access.The lab consists of 10 containers in total:
web-struts (172.28.0.11): Apache Struts 2.3.28 (Vulnerable to S2-045).web-vuln (172.28.0.10): Apache httpd 2.4.49 (Vulnerable to path traversal/RCE).db-mysql (172.28.0.12): Supporting database.ssh-server (172.28.0.13): Legacy foothold target.ftp-server, smb-server, dns-server: Infrastructure services for realism.ids-suricata-struts: Monitors web-struts network namespace.ids-suricata-web: Monitors web-vuln network namespace.Run the setup script to build and start the environment:
./scripts/setup.sh
This will initialize the network, pull/build images, and start all 10 containers.
The lab provides a dispatcher script to trigger different phases of the attack.
./scripts/attack.sh full
./scripts/attack.sh recon./scripts/attack.sh struts-foothold./scripts/attack.sh struts-pivot./scripts/attack.sh directYou can pass a custom command to be executed on the final target:
./scripts/attack.sh full "whoami; cat /etc/os-release"
Alerts are written to individual eve.json files for each IDS instance:
./alerts/web-struts/eve.json./alerts/web-vuln/eve.jsonYou can tail both feeds live using:
./scripts/tail-alerts.sh
To stop and remove all lab components:
./scripts/teardown.sh