PoC files

67 files

File viewing is interactive and short-lived. Downloads are password-protected ZIP archives using password eip.

GitHub

Analysisdeepseek-v4-pro:cloud ·

Technical assessment

The repository 'Windfall' contains a full exploitation framework for CVE-2026-29059 (path traversal) and CVE-2026-23696 (SQL injection) in Windmill/Nextcloud Flow. It includes Python scripts (windfall_afr.py, windfall_sqli.py, windfall_nc_pivot.py) and Metasploit modules that actively exploit these vulnerabilities to leak credentials, forge JWTs, and achieve remote code execution.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of documentation and Metasploit module source code for a publicly disclosed path traversal and SQL injection exploit (CVE-2026-29059, CVE-2026-23696) targeting Windmill/Nextcloud Flow. All reviewed files describe or implement the expected exploit behavior: reading arbitrary files, leaking credentials, forging JWTs, and achieving remote code execution on the target. No concealed backdoor, unrelated payload, or operator-directed harm beyond the stated exploit was observed.

ClassificationExploit
Model confidence95%
AuthenticationNot required
Languagespythonruby
Target softwareWindmillNextcloud Flow
Attack typespath traversalsql injectioncredential leakprivilege escalationremote code execution
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The artifact includes Metasploit modules (windmill_path_traversal_rce.rb, windmill_sqli_rce.rb) that actively exploit vulnerabilities to achieve remote code execution. The README describes these as 'exploits' and provides usage examples for obtaining shells. The code is intended to exercise the vulnerability, not merely detect it.

README.md:128-130metasploit/modules/exploits/linux/http/windmill_path_traversal_rce.rb:17-21metasploit/modules/exploits/linux/http/windmill_sqli_rce.rb:18-22

Requirements

  • Target running vulnerable Windmill (v1.309.0 - v1.603.2) or Nextcloud Flow (v1.0.0 - v1.2.2)README.md:23-24
  • Network access to the target's Windmill API endpointREADME.md:195

Observed behavior

  • Sends crafted HTTP requests with path traversal sequences (e.g., '../') to the vulnerable get_log_file endpoint to read arbitrary files like /etc/passwd.README.md:294
  • Leaks credentials by reading /proc/1/environ for SUPERADMIN_SECRET, windmill_users_config.json for tokens, or PostgreSQL data files for jwt_secret.README.md:140-144
  • Uses leaked credentials or forged JWT to authenticate to the Windmill API and execute arbitrary commands via the job execution feature, achieving remote code execution.metasploit/modules/exploits/linux/http/windmill_path_traversal_rce.rb:115-117
  • The SQL injection module authenticates as a low-privileged user, exploits a SQLi in the addowner endpoint to extract jwt_secret, forges an admin JWT, and escalates privileges to superadmin for RCE.metasploit/modules/exploits/linux/http/windmill_sqli_rce.rb:147-165
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Exploit Behavior
Path traversal to read /etc/passwd, /proc/1/environ, PostgreSQL data files, and windmill_users_config.jsonThis is the documented vulnerability exploitation path; no hidden behavior detected.README.md:107-110metasploit/modules/exploits/linux/http/windmill_path_traversal_rce.rb:121-124
Exploit Behavior
Credential leak via SUPERADMIN_SECRET, windmill_users_config.json, and PostgreSQL jwt_secret extractionMatches the documented attack chain; no evidence of exfiltration to an attacker-controlled destination beyond the module's normal operation.metasploit/modules/exploits/linux/http/windmill_path_traversal_rce.rb:134-145
Exploit Behavior
Remote code execution via Windmill job API using leaked or forged tokensThe module executes attacker-supplied commands on the target; this is the stated purpose of the exploit.metasploit/modules/exploits/linux/http/windmill_path_traversal_rce.rb:115-117
Exploit Behavior
SQL injection via folder addowner endpoint to extract jwt_secret and escalate privilegesDocumented authenticated SQLi attack chain; no hidden queries or data exfiltration beyond the described escalation.metasploit/modules/exploits/linux/http/windmill_sqli_rce.rb:147-165
Opsec Technique
Ghost mode cleanup (--clean) that deletes job traces from the databaseDescribed as an OPSEC feature to remove forensic evidence; this is part of the exploit's self-destruct mechanism, not a backdoor.README.md:263-275
Review boundaries

What the analysis did not establish

  • Only 8 of 67 files in the repository were provided as text evidence. The actual Python exploit scripts (windfall_afr.py, windfall_sqli.py, windfall_nc_pivot.py) and other Metasploit module files are not included in the selected text.
  • The evidence packet reports complete_artifact_coverage as false, indicating that not all files from the repository were analyzed.
  • 59 files (344,110 bytes) were classified as unclassified or binary and were not inspected; their content is unknown.
  • Only 8 of 67 total files were provided as readable text; the remaining files could contain additional code or configuration not reviewed.
Model interpretation

This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.

Docker lab environments

6
GitHub

labs/windmill/docker-compose.yml

Created
Model review verdict: Suspicious behavior.Vuln labNo linked CVECompose · images

1 Compose manifest · 4 services

AnalysisSuspicious behaviordeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment for Windmill (v1.603.2) consisting of a PostgreSQL database, a Windmill server, a Windmill worker with Docker socket access, and a setup service that creates a default operator user and workspace. The environment is designed to demonstrate path traversal, SQL injection, and host escape vulnerabilities.

labs/windmill/docker-compose.yml:1-91labs/windmill/README.md:1-43

Lab assessment

Vulnerability lab

The README explicitly states it is a 'Test environment for Windmill vulnerabilities' and provides commands to run path traversal, SQLi, and host escape exploits. The Docker Compose file pins a vulnerable version (1.603.2) and includes a comment about a Docker socket mount for a 'host escape demo (INSECURE - lab only!)'.

labs/windmill/README.md:1-3labs/windmill/docker-compose.yml:1-5labs/windmill/docker-compose.yml:62-63
Lab shapeCompose · images
Services4
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

db

database

PostgreSQL 16 database for Windmill, configured with a healthcheck.

labs/windmill/docker-compose.yml:14-23

windmill_server

web applicationvulnerable target

Windmill server v1.603.2, exposed on port 8000, with a SUPERADMIN_SECRET environment variable. It depends on the db service and mounts a volume for worker logs.

labs/windmill/docker-compose.yml:25-44

windmill_worker

workerhost escape vector

Windmill worker v1.603.2, with the Docker socket mounted for a host escape demonstration. It depends on the db service.

labs/windmill/docker-compose.yml:46-63

setup

initialization

A temporary service using curlimages/curl that creates an operator user, a demo workspace, and adds the operator to the workspace via the Windmill API, using the SUPERADMIN_SECRET for authentication.

labs/windmill/docker-compose.yml:66-89
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose installed on the host.labs/windmill/README.md:7-8
  • Python 3.10+ with dependencies (rich, requests, pyjwt, prompt_toolkit) installed, as specified in pyproject.toml.pyproject.toml:6-12
  • The exploit scripts (windfall_afr.py, windfall_sqli.py) must be present and runnable from the repository root.labs/windmill/README.md:13-20
  • The Docker socket (/var/run/docker.sock) must be accessible on the host for the host escape demonstration.labs/windmill/docker-compose.yml:62-63

Evidence-described exercise path

  1. Start the lab environment with 'docker-compose up -d'.labs/windmill/README.md:7-8
  2. Wait for services to become healthy.labs/windmill/README.md:10-11
  3. Run the path traversal exploit: 'python3 windfall_afr.py http://localhost:8000 -c "id"'.labs/windmill/README.md:13-14
  4. Run the SQL injection exploit: 'python3 windfall_sqli.py http://localhost:8000 -u operator@windmill.dev -p password123 -c "id"'.labs/windmill/README.md:16-17
  5. Run the host escape exploit: 'python3 windfall_afr.py http://localhost:8000 --host'.labs/windmill/README.md:19-20
Safety-review evidence

Behaviors behind the stored safety assessment

Suspicious behavior

The windmill_worker service mounts the host's Docker socket (/var/run/docker.sock) for a documented host escape demonstration. While the README and Compose file disclose this as a lab-only insecure configuration, the mount enables the exploit to execute arbitrary commands on the Docker host, which constitutes concrete host impact. The behavior is disclosed, but the impact is severe and warrants a suspicious verdict.

labs/windmill/docker-compose.yml:62-63labs/windmill/README.md:19-20

Indicators requiring review

  • The windmill_worker service mounts the host Docker socket, enabling container escape and potential host compromise.labs/windmill/docker-compose.yml:62-63
Review boundaries

What the analysis did not establish

  • The exploit scripts (windfall_afr.py, windfall_sqli.py) are not included in the evidence packet, so their exact behavior cannot be verified.
  • The pyproject.toml references scripts that are not present in the packet, so the full exploit chain cannot be assessed.
  • The CVE association is ambiguous; the repository claims CVE-2026-29059, but the unit has no CVE IDs, and no CVE details are provided in the evidence.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

labs/postgres-post

Created
UncertainNo linked CVEDockerfile

1 Dockerfile

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A PostgreSQL 16 container initialized with a SQL script that creates tables and inserts sample data, including simulated secrets, tokens, and credentials. The Dockerfile installs curl. The broader repository describes a Windmill/Nextcloud Flow vulnerability research project, but this unit only contains a standalone database setup.

labs/postgres-post/Dockerfile:1-6labs/postgres-post/init.sql:1-158

Lab assessment

Uncertain lab purpose

The unit provides a PostgreSQL database with sample data that could serve as a target for SQL injection or credential theft exercises described in the repository README. However, the unit itself contains no exploit code, vulnerable application, or explicit vulnerability research instructions. It is a standalone database initialization that may support a lab but does not independently demonstrate a vulnerability research purpose.

labs/postgres-post/Dockerfile:1-6labs/postgres-post/init.sql:1-158README.md:1-490
Lab shapeDockerfile
ServicesUnknown
Compose manifests0
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

postgres:16 container

database server

A PostgreSQL 16 database server initialized with tables (users, secrets, api_tokens, metrics, files, events, sessions, tags, configurations) and sample data including simulated credentials, tokens, and secrets. The Dockerfile installs curl, but no curl usage is shown.

labs/postgres-post/Dockerfile:1-6labs/postgres-post/init.sql:1-158
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker must be available to build the image from the Dockerfile and run the container.labs/postgres-post/Dockerfile:1-6
  • The init.sql script must be present in the build context to be copied into the container.labs/postgres-post/Dockerfile:5
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The unit only builds a PostgreSQL container with sample data. It does not execute any commands, expose ports, mount host resources, or perform any actions beyond database initialization. No harmful behavior is visible.

labs/postgres-post/Dockerfile:1-6labs/postgres-post/init.sql:1-158
Review boundaries

What the analysis did not establish

  • The unit does not include a docker-compose.yml or any runtime configuration; port mappings, network settings, and volume mounts are unknown.
  • The unit's relationship to the Windmill/Nextcloud Flow vulnerabilities described in the repository README is not defined within the unit itself.
  • No exploit code or vulnerable application is present in this unit; the exercise path cannot be determined from the unit alone.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

labs/postgres-post/docker-compose.yml

Created
Not a vuln labNo linked CVECompose · images

1 Compose manifest · 1 service

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A single-service Docker Compose environment running PostgreSQL 16 with a custom initialization script that creates tables and inserts sample data, including simulated secrets and credentials. The environment appears to be a standalone database lab, not directly related to the Windfall vulnerability research described in the repository README.

labs/postgres-post/docker-compose.yml:1-16labs/postgres-post/init.sql:1-158

Lab assessment

Not identified as a vulnerability lab

The Docker Compose file defines a basic PostgreSQL service with no vulnerable application, no exploit code, and no connection to the Windfall vulnerability research described in the repository README. The init.sql script populates the database with sample data, including fake secrets, but does not set up a vulnerable target or exercise any vulnerability. The lab is a simple database environment, not a vulnerability reproduction lab.

labs/postgres-post/docker-compose.yml:1-16labs/postgres-post/init.sql:1-158
Lab shapeCompose · images
Services1
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

postgres

database server

PostgreSQL 16 database service with environment variables for user, password, and database name. It mounts an initialization script and a named volume for data persistence. Port 15432 on the host is mapped to container port 5432.

labs/postgres-post/docker-compose.yml:2-12
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose must be installed to run the environment.labs/postgres-post/docker-compose.yml:1
  • The init.sql file must be present in the same directory as the Compose file.labs/postgres-post/docker-compose.yml:9
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The environment is a simple PostgreSQL database with no exploit code, no vulnerable application, and no behavior that targets the host, external systems, or persists beyond the container. The port mapping and volume mounts are standard for a database lab and do not indicate malicious intent.

labs/postgres-post/docker-compose.yml:1-16labs/postgres-post/init.sql:1-158
Review boundaries

What the analysis did not establish

  • The repository README describes Windfall exploits for Windmill/Nextcloud Flow, but the lab unit contains only a PostgreSQL database with no Windmill or Nextcloud components. The relationship between this lab and the repository's vulnerability research is unclear.
  • The unit_cve_ids array is empty, so no CVE assessments are provided. The README mentions CVE-2026-29059, CVE-2026-23696, and CVE-2026-22683, but these are not associated with this lab unit.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

labs/postgres-multiversion/docker-compose.yml

Created
UncertainNo linked CVECompose · images

1 Compose manifest · 6 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment that starts six PostgreSQL database instances (versions 12 through 17) with a shared initialization script that creates tables and populates them with sample data including simulated secrets, tokens, and credentials.

labs/postgres-multiversion/docker-compose.yml:1-80labs/postgres-multiversion/init.sql:1-161

Lab assessment

Uncertain lab purpose

The environment provides multiple PostgreSQL versions with a dataset that includes secrets, tokens, and password hashes, which could serve as a target for vulnerability research or exploit development. However, the Compose file and init script contain no exploit code, no vulnerable application, and no explicit vulnerability-research instructions. The README describes a Windmill/Nextcloud vulnerability lab, but the supplied unit (postgres-multiversion) does not include Windmill or Nextcloud components. The relationship between this database environment and the Windfall exploits is not established by the evidence.

labs/postgres-multiversion/docker-compose.yml:1-80labs/postgres-multiversion/init.sql:1-161README.md:1-490
Lab shapeCompose · images
Services6
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

pg12

PostgreSQL 12 database server

A PostgreSQL 12 container initialized with the shared init.sql script, exposing port 5432 on host port 15012.

labs/postgres-multiversion/docker-compose.yml:2-11

pg13

PostgreSQL 13 database server

A PostgreSQL 13 container initialized with the shared init.sql script, exposing port 5432 on host port 15013.

labs/postgres-multiversion/docker-compose.yml:13-22

pg14

PostgreSQL 14 database server

A PostgreSQL 14 container initialized with the shared init.sql script, exposing port 5432 on host port 15014.

labs/postgres-multiversion/docker-compose.yml:24-33

pg15

PostgreSQL 15 database server

A PostgreSQL 15 container initialized with the shared init.sql script, exposing port 5432 on host port 15015.

labs/postgres-multiversion/docker-compose.yml:35-44

pg16

PostgreSQL 16 database server

A PostgreSQL 16 container initialized with the shared init.sql script, exposing port 5432 on host port 15016.

labs/postgres-multiversion/docker-compose.yml:46-55

pg17

PostgreSQL 17 database server

A PostgreSQL 17 container initialized with the shared init.sql script, exposing port 5432 on host port 15017.

labs/postgres-multiversion/docker-compose.yml:57-66
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose must be installed to start the services.labs/postgres-multiversion/docker-compose.yml:1
  • The init.sql file must be present in the same directory as the Compose file.labs/postgres-multiversion/docker-compose.yml:8
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The Compose file defines six standard PostgreSQL containers with no privileged mode, no host filesystem mounts beyond the init script, and no network exposure beyond mapped ports. The init script creates tables and inserts sample data; it does not execute shell commands, download payloads, or modify the host. No exploit code, backdoor, or destructive behavior is present in the supplied unit.

labs/postgres-multiversion/docker-compose.yml:1-80labs/postgres-multiversion/init.sql:1-161
Review boundaries

What the analysis did not establish

  • The unit does not include the Windmill or Nextcloud components described in the repository README; the relationship between this database environment and the Windfall exploits is not established.
  • The unit_cve_ids array is empty, so no CVE assessments are provided.
  • No exercise path is described within the unit; the README describes exploits that target a different environment.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

labs/nextcloud-flow/docker-compose.yml

Created
Vuln labNo linked CVECompose · images

1 Compose manifest · 2 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment for a Nextcloud AIO instance with an nginx reverse proxy, intended as a test lab for Windmill vulnerabilities via Nextcloud Flow.

labs/nextcloud-flow/README.md:1-3labs/nextcloud-flow/docker-compose.yml:1-44

Lab assessment

Vulnerability lab

The README explicitly states it is a 'Test environment for Windmill vulnerabilities via Nextcloud Flow' and provides exploit usage instructions for path traversal and SQLi.

labs/nextcloud-flow/README.md:1-3labs/nextcloud-flow/README.md:37-55
Lab shapeCompose · images
Services2
Compose manifests1
Dockerfiles0
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

nextcloud-aio-mastercontainer

Nextcloud AIO master containerorchestrates Nextcloud services

Runs the Nextcloud All-in-One master container, which manages the Nextcloud instance. It mounts the Docker socket (read-only) and a named volume for configuration, and exposes port 8180 for the AIO web interface.

labs/nextcloud-flow/docker-compose.yml:7-19

nginx-proxy

reverse proxySSL termination

An nginx container that terminates SSL on port 443 and proxies requests to the Nextcloud Apache service at nextcloud-aio-apache:11000. It uses bind-mounted configuration and SSL certificates.

labs/nextcloud-flow/docker-compose.yml:21-33labs/nextcloud-flow/nginx/nginx.conf:1-25

nextcloud-aio-apache

Nextcloud web server

The Nextcloud Apache service, referenced in the nginx configuration as the upstream proxy target. It is not explicitly declared in the Compose file but is expected to be started by the AIO master container.

labs/nextcloud-flow/nginx/nginx.conf:12

Windfall exploit scripts

exploit tools

Python scripts (windfall_afr.py and windfall_sqli.py) for path traversal and SQL injection exploits against Windmill/Flow. They are referenced in the README and defined as entry points in pyproject.toml.

labs/nextcloud-flow/README.md:37-55pyproject.toml:13-14
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Add '127.0.0.1 localhost.local' to /etc/hosts on the host.labs/nextcloud-flow/README.md:7-9
  • Run 'docker compose up -d' to start the environment.labs/nextcloud-flow/README.md:13-15
  • Configure Nextcloud AIO via the web interface, including enabling Docker Socket Proxy.labs/nextcloud-flow/README.md:19-26
  • Install the Flow app in Nextcloud.labs/nextcloud-flow/README.md:33-35

Evidence-described exercise path

  1. Start the Docker Compose environment.labs/nextcloud-flow/README.md:13-15
  2. Configure Nextcloud AIO and start all containers.labs/nextcloud-flow/README.md:19-26
  3. Install the Flow app in Nextcloud.labs/nextcloud-flow/README.md:33-35
  4. Obtain the Flow container IP address.labs/nextcloud-flow/README.md:39-40
  5. Run the path traversal exploit (windfall_afr.py) directly or via the Nextcloud proxy.labs/nextcloud-flow/README.md:43-46
  6. Run the SQL injection exploit (windfall_sqli.py) directly or via the Nextcloud proxy.labs/nextcloud-flow/README.md:48-55
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The environment is a self-contained vulnerability lab. The Docker socket mount is read-only and required for AIO to manage containers. The nginx proxy and SSL certificates are for local access. No hidden, destructive, or external behaviors are visible.

labs/nextcloud-flow/docker-compose.yml:1-44labs/nextcloud-flow/README.md:1-71
Review boundaries

What the analysis did not establish

  • The exploit scripts (windfall_afr.py, windfall_sqli.py) are not included in the evidence packet; their behavior is only described in the README.
  • The Nextcloud AIO master container image is 'latest', which may change over time.
  • The Docker socket mount, while read-only, could be a concern if the AIO container is compromised, but no evidence of such compromise is present.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

GitHub

labs/windmill-allinone/docker-compose.yml

Created
Vuln labNo linked CVECompose · builds

1 Compose manifest · 1 Dockerfile · 1 service

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A Docker Compose environment that builds a single container running Windmill 1.394.4 with an embedded PostgreSQL database, supervisor, and test data initialization scripts. The README describes it as a lab for testing path traversal vulnerabilities in Windmill.

labs/windmill-allinone/docker-compose.yml:1-21labs/windmill-allinone/Dockerfile:1-42README.md:1-490

Lab assessment

Vulnerability lab

The README explicitly states the environment is for testing path traversal and SQL injection vulnerabilities in Windmill, and the Dockerfile builds a specific vulnerable version (1.394.4) with test data containing fake credentials and secrets.

README.md:1-3labs/windmill-allinone/Dockerfile:5labs/windmill-allinone/init-testdata.sql:1-34
Lab shapeCompose · builds
Services1
Compose manifests1
Dockerfiles1
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

windmill

vulnerable target applicationweb serverAPI server

A single service built from the Dockerfile, running Windmill 1.394.4 with an embedded PostgreSQL database. It exposes port 8000 internally, mapped to host port 8100. The container runs supervisor to manage PostgreSQL, Windmill, and a test data initialization script.

labs/windmill-allinone/docker-compose.yml:6-15labs/windmill-allinone/Dockerfile:5-42labs/windmill-allinone/supervisord.conf:1-36

PostgreSQL

databasecredential store

PostgreSQL 15 installed and initialized inside the container, storing Windmill data and test credentials. It listens on localhost:5432 and is started by supervisor before Windmill.

labs/windmill-allinone/Dockerfile:9-24labs/windmill-allinone/supervisord.conf:7-14

init-testdata

test data seeder

A shell script that waits for PostgreSQL and Windmill migrations, then executes init-testdata.sql to insert fake users, secrets, tokens, and resources into the database.

labs/windmill-allinone/init-testdata.sh:1-17labs/windmill-allinone/init-testdata.sql:1-34

supervisor

process manager

Supervisor runs as PID 1, managing PostgreSQL, Windmill, and the init-testdata script. It ensures services start in the correct order and restarts them if they fail.

labs/windmill-allinone/supervisord.conf:1-36
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose must be installed to build and run the lab environment.labs/windmill-allinone/docker-compose.yml:1-21
  • The lab container must be built and started, which will automatically initialize the database and insert test data.labs/windmill-allinone/Dockerfile:1-42labs/windmill-allinone/supervisord.conf:1-36
  • The Windmill service must be accessible on the mapped host port (8100) to exercise the path traversal or SQL injection vulnerabilities.labs/windmill-allinone/docker-compose.yml:9-10

Evidence-described exercise path

  1. Build and start the lab environment using 'docker compose up' from the labs/windmill-allinone directory.labs/windmill-allinone/docker-compose.yml:1-21
  2. Wait for the container to become healthy (curl http://localhost:8000/api/version succeeds).labs/windmill-allinone/docker-compose.yml:12-15
  3. Exploit the unauthenticated path traversal vulnerability (CVE-2026-29059) by sending a crafted request to the /api/w/X/jobs_u/get_log_file/ endpoint to read arbitrary files, such as /etc/passwd or /proc/self/environ.README.md:155-160
  4. Leak credentials from the container (e.g., SUPERADMIN_SECRET from /proc/1/environ or PostgreSQL data files) to forge a JWT and achieve remote code execution as root inside the container.README.md:161-180
  5. Optionally, use the authenticated SQL injection vulnerability (CVE-2026-23696) by creating a folder and injecting SQL via the addowner endpoint to escalate privileges and achieve RCE.README.md:220-250
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

The lab is self-contained: it builds a vulnerable Windmill instance with fake test data, exposes only port 8100, and does not mount the Docker socket, run in privileged mode, or connect to external systems. All exploit behavior described in the README targets the lab's own container, and no hidden or unnecessary compromise is visible.

labs/windmill-allinone/docker-compose.yml:1-21labs/windmill-allinone/Dockerfile:1-42labs/windmill-allinone/init-testdata.sql:1-34
Review boundaries

What the analysis did not establish

  • The packet does not include the exploit scripts (windfall_afr.py, windfall_sqli.py, windfall_nc_pivot.py) referenced in the README, so their exact behavior cannot be assessed.
  • The Dockerfile uses a base image from ghcr.io/windmill-labs/windmill:1.394.4, which is not inspected; its contents are unknown.
  • The README describes host escape via Docker socket, but the lab's docker-compose.yml does not mount the Docker socket, so that attack path is not part of this lab unit.
Model interpretation

This review is limited to the supplied lab evidence packet. It does not assert that the environment runs, reproduces a vulnerability, or is safe to execute. Contract: eip-docker-lab-analysis-v1.

Linked vulnerabilities

1