CVE-2025-13943
Zyxel EX3301-T0 Firmware Post-Authentication Command Injection
Record summary
CVE-2025-13943 has a selected CVSS score of 8.8 (high); EIP currently links 1 curated repository PoC.
Description
A post-authentication command injection vulnerability in the log file download function of the Zyxel EX3301-T0 firmware versions through 5.50(ABVY.7)C0 could allow an authenticated attacker to execute operating system (OS) commands on an affected device.
Exploitation context
Available material
- Curated repository PoCs
- 1
CISA SSVC decision
CISA Coordinator · SSVC 2.0.3 · Evaluated Feb 25, 2026 · Source: CVE List
Affected products and versions
1| Product | Source | Version range | Status |
|---|---|---|---|
EX3301-T0 firmwareBrowse Zyxel / EX3301-T0 firmwareDefault status: unaffected | CVE List | <= 5.50(ABVY.7)C0 | affected |
Proofs of concept
1Curated repository PoCs
GitHubCVE-2025-13943Curated repository PoCby hacefreskoStars: 11Exploit4 files
Analysis
Technical assessment
Python script (rce.py) that authenticates to a Zyxel router, starts a packet capture, injects a reverse shell command via an HTTP header, stops the capture, and triggers the vulnerable log export function to execute the injected command.
Backdoor review
No backdoor observed in reviewed code
The PoC consists of a README describing CVE-2025-13943 and a Python script (rce.py) that automates exploitation. The script performs authenticated command injection against a Zyxel router to establish a reverse shell. All actions are consistent with demonstrating the described vulnerability; no concealed, deceptive, or unrelated harmful behavior was observed.
Classification basis and observed behavior
Classification basis
The rce.py script performs all steps required to exploit the vulnerability: it authenticates, injects a malicious command into a packet capture, and triggers the vulnerable log export function to execute the command, resulting in a reverse shell. This is active exploitation, not just detection.
rce.py:1-126Requirements
- Valid credentials for the target device's web interface.
rce.py:7-8 - Target device must be running a vulnerable Zyxel firmware version with the zhttpd binary.
README.md:3 - Attacker must provide target IP/hostname and attacker IP as command-line arguments.
rce.py:10-12
Observed behavior
- Starts a netcat listener on the attacker machine to receive the reverse shell.
rce.py:72-74 - Authenticates to the target device using the provided credentials and obtains a session key.
rce.py:86-102 - Sends authenticated requests to start a packet capture on the target device.
rce.py:108-110 - Sends an HTTP request with a malicious header containing a reverse shell command to be captured by tcpdump.
rce.py:112-113 - Stops the packet capture and triggers the log export function, which causes the injected command to be executed via a system() call.
rce.py:115-120
Behaviors behind the backdoor verdict
Observables
- Reverse Shell
- Payload withheldThe script constructs a reverse shell command using the attacker-supplied IP and port, which is injected into the vulnerable endpoint to gain remote access. This is the intended exploit payload.
rce.py:15 - Command Injection
- Payload withheldThe script injects the reverse shell command into an HTTP header, which is later executed by the vulnerable system() call in the target firmware. This matches the described vulnerability.
rce.py:113 - Listener
- Payload withheldThe script starts a netcat listener on the attacker machine to receive the reverse shell connection. This is standard exploit behavior.
rce.py:16rce.py:73-74
What the analysis did not establish
- Evidence includes two non-text media files (images) that were not analyzed; their content is described in the README but not directly inspected.
- The analysis is based solely on the provided source code and documentation; the code was not executed, and its effectiveness is not verified.
- Two non-text media files (images) totaling 176703 bytes were flagged as binary and not analyzed; they are referenced in the README as screenshots of the disassembly and PoC output.
- The review is limited to the supplied text files; no dynamic analysis or execution was performed.
This review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.