
Proof-of-concept exploit for UniFi OS CVE-2026-34910 auth bypass enabling command injection/RCE, and CVE-2026-34909 path traversal for arbitrary file reads.
Proof of concept for authorized testing of two vectors identified as:
CVE-2026-34910: auth bypass that can lead to command injection and remote code execution via the package update handler.CVE-2026-34909: path traversal that can lead to arbitrary file read via the app-assets alias.This script is intended for security validation on devices and networks that you own or are explicitly authorized to test. Do not use it against third-party systems.
1.0.0CVSS scores and vulnerability status must be verified against vendor advisories and relevant firmware versions before being used in reports.
This script can send commands to the target and read file contents from the target. The impact may include system changes, disclosure of sensitive information, service disruption, or data corruption.
Before conducting testing:
The script only uses the Python standard library, so there are no additional package installation steps.
Clone the repository or copy the script to the test machine, then enter the project directory:
git clone <URL-REPOSITORI>
cd CVE-2026-34910
No pip install is required. Ensure the interpreter you are using is suitable:
python3 --version
General format:
python3 CVE-2026-34910.py <target> [command] [options]
target must be a URL with an http:// or https:// scheme, for example https://192.0.2.10:11443.
Runs the probe without sending any additional commands:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check
The second positional argument is treated as a command sent to the target. Use only approved, non-destructive commands:
python3 CVE-2026-34910.py https://192.0.2.10:11443 "id"
The --proof option asks the target to create a proof file at /tmp/PWNED_34910:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --proof
Verify and remove the proof file through approved access procedures. Do not treat an HTTP 200 response as the sole evidence that the command succeeded.
python3 CVE-2026-34910.py https://192.0.2.10:11443 --read /etc/hostname
The script prints at most 800 characters from the file response.
Add --verbose or -v to view request and response details:
python3 CVE-2026-34910.py https://192.0.2.10:11443 --check --verbose
Note that verbose output may contain sensitive URLs, parameters, or response data.
| Option | Description |
|---|---|
target | Target URL with an HTTP or HTTPS scheme |
command | Command to be tested through the CVE-2026-34910 vector |
--check | Runs the auth bypass probe only |
--proof | Requests creation of a proof file on the target |
--read PATH | Tests file read via path traversal |
-v, --verbose | Displays additional debug information |
-h, --help | Displays usage help |
Use only one operation mode per execution. The program returns exit code 0 if the operation is considered successful, 1 if the target is not indicated as vulnerable or arguments are incomplete, and 2 if an unexpected error occurs. User interruption returns 130.
--check mode inspects the response for a marker indicating the handler was reached.pkg_name value and sends it to the package update endpoint.--read mode constructs a path traversal to the app-assets alias and displays the response in a limited manner.The implementation is entirely in CVE-2026-34910.py.
200 in RCE mode indicates the request was accepted by the handler, not a guarantee that the command completed as expected.For devices within the testing scope:
Test reports should record:
For responsible vulnerability reporting, use the vendor's official security channels and coordinate disclosure according to applicable policies.
No license has been specified for this project. Add a license file before distributing or using this code in other projects.
Gagaltotal666 - GhostGTR666
Related repository: github.com/gagaltotal