PoC files

19 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 artifact contains a Python script (poc/poc.py) that sends an HTTP GET request to a vulnerable nginx server's injected /pwned endpoint to trigger remote code execution via a Lua code block, executing OS commands like 'id' and 'hostname' and reading files.

Backdoor review

No backdoor observed in reviewed code

The supplied evidence consists of documentation, a lab setup guide, and two Python PoC scripts for CVE-2025-15566. The scripts demonstrate a legitimate nginx configuration injection vulnerability by sending HTTP requests to a locally running lab container and by simulating the vulnerable Go template function. No concealed executable behavior, operator-directed harm, persistence, credential theft, or unrelated payloads were observed. The scripts' actions are fully explained by the documented exploit chain and are consistent with normal PoC behavior for the stated CVE.

ClassificationExploit
Model confidence100%
AuthenticationNot required
LanguagesPython
Target softwareingress-nginx
Attack typesCode InjectionRemote Code Execution
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidence

Classification basis and observed behavior

Classification basis

The primary artifact, poc/poc.py, is designed to send a malicious HTTP request to trigger and verify the execution of injected Lua code on a remote server, which constitutes an exploit. The script's main purpose is to exercise the vulnerability, not just detect it.

poc/poc.py:2-6poc/poc.py:127-135CVE-LAB.md:9

Requirements

  • A vulnerable nginx instance with a pre-rendered configuration containing an injected /pwned Lua endpoint must be running and network-accessible.poc/poc.py:15-24CVE-LAB.md:14-17

Observed behavior

  • Sends an HTTP GET request to the /pwned endpoint on the target server.poc/poc.py:136-141
  • Parses the HTTP response body for evidence of command execution, such as the output of the 'id' command (e.g., 'uid=101(www-data)').poc/poc.py:152-166
  • Reports success if evidence of remote code execution is found in the response.poc/poc.py:230-231
Safety-review evidence

Behaviors behind the backdoor verdict

Observables

Network Connection
http://localhost:8080/The PoC script poc.py connects to a locally running lab container to verify the target is alive and to trigger the documented RCE endpoint.poc/poc.py:80
Network Connection
http://localhost:8080/absorbThe PoC script poc.py checks for the existence of an injected nginx location as evidence of the configuration injection vulnerability.poc/poc.py:104
Network Connection
http://localhost:8080/pwnedThe PoC script poc.py triggers the injected Lua RCE payload to demonstrate arbitrary command execution, which is the core of the CVE-2025-15566 exploit.poc/poc.py:136
Process Execution
docker inspectThe PoC script poc.py uses docker inspect to dynamically resolve the IP address of the vulnerable lab container on the worker network.poc/poc.py:49-50
Process Execution
docker compose logs go-testThe PoC script poc_vector2_template_injection.py retrieves Go unit test output from the lab container to provide evidence of the vulnerable function.poc/poc_vector2_template_injection.py:178-180
Review boundaries

What the analysis did not establish

  • The evidence packet reports complete_artifact_coverage as false, indicating that not all files from the repository unit were included in the analysis. The analysis is based on the 5 selected text files provided.
  • The exploit targets a lab environment with a pre-rendered vulnerable configuration, not a live, unmodified ingress-nginx controller.
  • The review is limited to the 5 text files provided in the evidence packet. 14 unclassified files totaling 72,353 bytes were present in the artifact but were not analyzed as they were flagged as binary or non-text media. The analysis scope confirms complete coverage for the selected readable text, but the artifact coverage is incomplete overall.
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

1
GitHub

CVE-2025-15566/docker-compose.yml

Created
Vuln labCVE-2025-15566Compose · builds

1 Compose manifest · 2 Dockerfiles · 2 services

Analysisdeepseek-v4-pro:cloud ·

Environment assessment

A two-tier Docker Compose lab for CVE-2025-15566, demonstrating an nginx configuration injection vulnerability in ingress-nginx's auth-proxy-set-headers annotation. One service runs a vulnerable nginx instance with a pre-rendered injected config, and the other runs a Go test against the actual vulnerable source code.

CVE-2025-15566/docker-compose.yml:1-51

Lab assessment

Vulnerability lab

The Compose file, Dockerfiles, README, and PoC scripts explicitly describe a lab environment for reproducing and verifying CVE-2025-15566, a vulnerability in ingress-nginx. The services are designed to demonstrate the root cause (template injection) and impact (RCE).

CVE-2025-15566/docker-compose.yml:1-5CVE-2025-15566/README.md:1-10
Lab shapeCompose · builds
Services2
Compose manifests1
Dockerfiles2
Evidence & reasoningComponents · CVE assessment · exercise context · review boundaries
Components

Services and files described by the evidence

vulnerable

vulnerable nginx targetRCE demonstration endpoint

Runs the actual ingress-nginx nginx binary with a pre-rendered configuration that simulates the output of the vulnerable buildAuthProxySetHeaders() function after processing a malicious ConfigMap. Serves a /pwned endpoint that executes Lua code to run OS commands, proving RCE impact. Exposes port 80 mapped to host port 8080.

CVE-2025-15566/docker-compose.yml:24-39CVE-2025-15566/Dockerfile.vulnerable:1-34CVE-2025-15566/nginx-vulnerable.conf:1-139

go-test

root cause verificationunit test runner

Clones the ingress-nginx source at the vulnerable tag controller-v1.12.4, copies an injection test file into the template package, and runs a Go test that calls the actual buildAuthProxySetHeaders() function with malicious input to prove the template injection vulnerability. Exits after test completion.

CVE-2025-15566/docker-compose.yml:41-47CVE-2025-15566/Dockerfile.go-test:1-32CVE-2025-15566/injection_test.go:1-134
CVE assessment

How the supplied evidence relates each vulnerability

CVE-2025-15566

Supported by supplied evidence

The entire lab is dedicated to demonstrating CVE-2025-15566. The README, PoC scripts, Dockerfiles, and test code all reference this CVE and describe the vulnerability (nginx config injection via auth-proxy-set-headers). The Go test and nginx config show the specific vulnerable code pattern and its exploitation.

CVE-2025-15566/README.md:1-10CVE-2025-15566/injection_test.go:1-10CVE-2025-15566/nginx-vulnerable.conf:1-10
Exercise context

Requirements and sequence described by the evidence

Prerequisites

  • Docker and Docker Compose installed on the host.CVE-2025-15566/README.md:80-82
  • Network access to the Docker host on port 8080 for the PoC scripts.CVE-2025-15566/README.md:100-102
  • Python 3 (stdlib only) to run the PoC scripts.CVE-2025-15566/README.md:130-131

Evidence-described exercise path

  1. Build and start the lab containers with 'docker compose -p CVE-2025-15566 up -d'.CVE-2025-15566/README.md:80-82
  2. Verify the vulnerable nginx container is running and healthy.CVE-2025-15566/README.md:84-86
  3. Run the primary PoC script to trigger RCE via HTTP: 'python3 poc/poc.py localhost 8080'.CVE-2025-15566/README.md:100-102
  4. Run the secondary PoC script to demonstrate template injection: 'python3 poc/poc_vector2_template_injection.py'.CVE-2025-15566/README.md:150-152
  5. Check the go-test container logs to see the unit test output proving the root cause.CVE-2025-15566/README.md:88-90
Safety-review evidence

Behaviors behind the stored safety assessment

No harmful behavior observed

All visible behavior is directed at the lab's own target containers. The vulnerable service runs a pre-rendered nginx config that executes OS commands only within its own container to demonstrate RCE. The go-test service runs a unit test and exits. No evidence of host escape, external connections, persistence, credential theft, or destructive behavior beyond the intended lab demonstration.

CVE-2025-15566/docker-compose.yml:1-51CVE-2025-15566/Dockerfile.vulnerable:1-34CVE-2025-15566/Dockerfile.go-test:1-32
Review boundaries

What the analysis did not establish

  • The lab uses a pre-rendered nginx config rather than a live ingress-nginx controller, so the full Kubernetes attack chain is not demonstrated.
  • The go-test container clones source from GitHub at build time, which requires network access and could pull different code if the tag is moved, though the Dockerfile pins a specific tag.
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

10