Wordpress
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Hochgeladene Dateien gehen zu: http://10.10.10.10/wp-content/uploads/2018/08/a.txt
Theme-Dateien finden Sie in /wp-content/themes/, also wenn Sie einige PHP-Dateien des Themes ändern, um RCE zu erhalten, werden Sie wahrscheinlich diesen Pfad verwenden. Zum Beispiel: Mit Theme Twenty Twelve können Sie die 404.php-Datei unter: /wp-content/themes/twentytwelve/404.php zugreifen.
Eine weitere nützliche URL könnte sein: /wp-content/themes/default/404.php
In wp-config.php finden Sie das Root-Passwort der Datenbank.
Standard-Login-Pfade zum Überprüfen: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/
index.php
license.txt
enthält nützliche Informationen wie die installierte WordPress-Version.
wp-activate.php
wird für den E-Mail-Aktivierungsprozess beim Einrichten einer neuen WordPress-Website verwendet.
Login-Ordner (könnten umbenannt werden, um sie zu verbergen):
/wp-admin/login.php
/wp-admin/wp-login.php
/login.php
/wp-login.php
xmlrpc.php
ist eine Datei, die eine Funktion von WordPress darstellt, die es ermöglicht, Daten über HTTP zu übertragen, wobei HTTP als Transportmechanismus und XML als Kodierungsmechanismus fungiert. Diese Art der Kommunikation wurde durch die WordPress REST API ersetzt.
Der wp-content
-Ordner ist das Hauptverzeichnis, in dem Plugins und Themes gespeichert sind.
wp-content/uploads/
ist das Verzeichnis, in dem alle auf die Plattform hochgeladenen Dateien gespeichert werden.
wp-includes/
Dies ist das Verzeichnis, in dem Kern-Dateien gespeichert sind, wie Zertifikate, Schriftarten, JavaScript-Dateien und Widgets.
wp-sitemap.xml
In WordPress-Versionen 5.5 und höher generiert WordPress eine Sitemap-XML-Datei mit allen öffentlichen Beiträgen und öffentlich abfragbaren Beitragstypen und Taxonomien.
Post-Exploitation
Die Datei wp-config.php
enthält Informationen, die WordPress benötigt, um eine Verbindung zur Datenbank herzustellen, wie den Datenbanknamen, den Datenbank-Host, den Benutzernamen und das Passwort, Authentifizierungsschlüssel und Salze sowie das Datenbanktabellen-Präfix. Diese Konfigurationsdatei kann auch verwendet werden, um den DEBUG-Modus zu aktivieren, was bei der Fehlersuche nützlich sein kann.
Administrator
Redakteur: Veröffentlicht und verwaltet seine und andere Beiträge
Autor: Veröffentlicht und verwaltet seine eigenen Beiträge
Mitwirkender: Schreibt und verwaltet seine Beiträge, kann sie jedoch nicht veröffentlichen
Abonnent: Durchsucht Beiträge und bearbeitet sein Profil
Überprüfen Sie, ob Sie die Dateien /license.txt
oder /readme.html
finden können.
Im Quellcode der Seite (Beispiel von https://wordpress.org/support/article/pages/):
grep
meta name
CSS-Link-Dateien
JavaScript-Dateien
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Sie werden wahrscheinlich nicht in der Lage sein, alle möglichen Plugins und Themes zu finden. Um alle zu entdecken, müssen Sie eine aktive Brute-Force-Liste von Plugins und Themes durchführen (hoffentlich gibt es automatisierte Tools, die diese Listen enthalten).
ID Brute
Sie erhalten gültige Benutzer von einer WordPress-Seite, indem Sie die Benutzer-IDs brute-forcen:
Wenn die Antworten 200 oder 30X sind, bedeutet das, dass die ID gültig ist. Wenn die Antwort 400 ist, dann ist die ID ungültig.
wp-json
Sie können auch versuchen, Informationen über die Benutzer abzurufen, indem Sie abfragen:
Ein weiterer /wp-json/
Endpunkt, der einige Informationen über Benutzer offenbaren kann, ist:
Beachten Sie, dass dieser Endpunkt nur Benutzer anzeigt, die einen Beitrag erstellt haben. Es werden nur Informationen über die Benutzer bereitgestellt, die diese Funktion aktiviert haben.
Beachten Sie auch, dass /wp-json/wp/v2/pages IP-Adressen leaken könnte.
Beim Login in /wp-login.php
ist die Nachricht anders, je nachdem, ob der angegebene Benutzername existiert oder nicht.
Wenn xml-rpc.php
aktiv ist, können Sie einen Brute-Force-Angriff auf Anmeldeinformationen durchführen oder es verwenden, um DoS-Angriffe auf andere Ressourcen zu starten. (Sie können diesen Prozess automatisieren, indem Sie dieses Beispiel verwenden).
Um zu sehen, ob es aktiv ist, versuchen Sie, auf /xmlrpc.php zuzugreifen und senden Sie diese Anfrage:
Überprüfen
Anmeldeinformationen Bruteforce
wp.getUserBlogs
, wp.getCategories
oder metaWeblog.getUsersBlogs
sind einige der Methoden, die verwendet werden können, um Anmeldeinformationen zu bruteforcen. Wenn Sie eine davon finden können, können Sie etwas senden wie:
Die Nachricht "Ungültiger Benutzername oder Passwort" innerhalb einer 200-Code-Antwort sollte erscheinen, wenn die Anmeldeinformationen nicht gültig sind.
Mit den richtigen Anmeldeinformationen können Sie eine Datei hochladen. In der Antwort wird der Pfad angezeigt (https://gist.github.com/georgestephanis/5681982)
Auch gibt es einen schnelleren Weg, um Anmeldeinformationen mit system.multicall
zu brute-forcen, da Sie mehrere Anmeldeinformationen in derselben Anfrage ausprobieren können:
Umgehung von 2FA
Diese Methode ist für Programme und nicht für Menschen gedacht und ist alt, daher unterstützt sie kein 2FA. Wenn Sie also gültige Anmeldeinformationen haben, aber der Haupteingang durch 2FA geschützt ist, könnten Sie in der Lage sein, xmlrpc.php auszunutzen, um sich mit diesen Anmeldeinformationen anzumelden und 2FA zu umgehen. Beachten Sie, dass Sie nicht alle Aktionen ausführen können, die Sie über die Konsole durchführen können, aber Sie könnten dennoch in der Lage sein, zu RCE zu gelangen, wie Ippsec es in https://www.youtube.com/watch?v=p8mIdm93mfw&t=1130s erklärt.
DDoS oder Port-Scanning
Wenn Sie die Methode pingback.ping in der Liste finden, können Sie Wordpress anweisen, eine beliebige Anfrage an einen beliebigen Host/Port zu senden. Dies kann verwendet werden, um tausende von Wordpress Seiten zu bitten, einen Standort zu zugreifen (so wird ein DDoS an diesem Standort verursacht) oder Sie können es verwenden, um Wordpress dazu zu bringen, ein internes Netzwerk zu scannen (Sie können jeden Port angeben).
Wenn Sie faultCode mit einem Wert größer als 0 (17) erhalten, bedeutet das, dass der Port offen ist.
Schauen Sie sich die Verwendung von system.multicall
im vorherigen Abschnitt an, um zu lernen, wie man diese Methode missbraucht, um DDoS zu verursachen.
DDoS
Diese Datei existiert normalerweise im Stammverzeichnis der Wordpress-Seite: /wp-cron.php
Wenn diese Datei aufgerufen wird, wird eine "schwere" MySQL Abfrage ausgeführt, sodass sie von Angreifern verwendet werden könnte, um eine DoS zu verursachen.
Außerdem wird standardmäßig die wp-cron.php
bei jedem Seitenaufruf (jedes Mal, wenn ein Client eine Wordpress-Seite anfordert) aufgerufen, was auf stark frequentierten Seiten Probleme verursachen kann (DoS).
Es wird empfohlen, Wp-Cron zu deaktivieren und einen echten Cronjob im Host zu erstellen, der die erforderlichen Aktionen in regelmäßigen Abständen ausführt (ohne Probleme zu verursachen).
Versuchen Sie, https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net aufzurufen, und die Wordpress-Seite könnte eine Anfrage an Sie senden.
Dies ist die Antwort, wenn es nicht funktioniert:
Dieses Tool überprüft, ob der methodName: pingback.ping und der Pfad /wp-json/oembed/1.0/proxy existieren, und wenn ja, versucht es, diese auszunutzen.
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Zugang heute erhalten:
Mehr als ein echter Angriff ist dies eine Neugier. Im CTF https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man konnten Sie 1 Bit aus einer beliebigen WordPress-Datei umschalten. Sie konnten also die Position 5389
der Datei /var/www/html/wp-includes/user.php
umschalten, um die NOT (!
) Operation zu NOPen.
Ändern einer php aus dem verwendeten Theme (Admin-Anmeldeinformationen erforderlich)
Aussehen → Theme-Editor → 404-Vorlage (rechts)
Ändern Sie den Inhalt für eine php-Shell:
Suchen Sie im Internet, wie Sie auf diese aktualisierte Seite zugreifen können. In diesem Fall müssen Sie hier zugreifen: http://10.11.1.234/wp-content/themes/twentytwelve/404.php
Sie können verwenden:
to get a session.
Es kann möglich sein, .php-Dateien als Plugin hochzuladen. Erstellen Sie Ihre PHP-Hintertür beispielsweise mit:
Fügen Sie dann ein neues Plugin hinzu:
Laden Sie das Plugin hoch und drücken Sie auf Jetzt installieren:
Klicken Sie auf Fortfahren:
Wahrscheinlich wird dies anscheinend nichts bewirken, aber wenn Sie zu Medien gehen, werden Sie Ihre Shell hochgeladen sehen:
Greifen Sie darauf zu und Sie werden die URL sehen, um die Reverse-Shell auszuführen:
Diese Methode beinhaltet die Installation eines bösartigen Plugins, das als anfällig bekannt ist und ausgenutzt werden kann, um eine Web-Shell zu erhalten. Dieser Prozess wird über das WordPress-Dashboard wie folgt durchgeführt:
Plugin-Akquisition: Das Plugin wird aus einer Quelle wie Exploit DB wie hier bezogen.
Plugin-Installation:
Navigieren Sie zum WordPress-Dashboard, dann zu Dashboard > Plugins > Plugin hochladen
.
Laden Sie die Zip-Datei des heruntergeladenen Plugins hoch.
Plugin-Aktivierung: Sobald das Plugin erfolgreich installiert ist, muss es über das Dashboard aktiviert werden.
Ausnutzung:
Mit dem installierten und aktivierten Plugin "reflex-gallery" kann es ausgenutzt werden, da es als anfällig bekannt ist.
Das Metasploit-Framework bietet einen Exploit für diese Schwachstelle. Durch das Laden des entsprechenden Moduls und das Ausführen spezifischer Befehle kann eine Meterpreter-Sitzung eingerichtet werden, die unbefugten Zugriff auf die Site gewährt.
Es wird angemerkt, dass dies nur eine der vielen Methoden ist, um eine WordPress-Website auszunutzen.
Der Inhalt enthält visuelle Hilfsmittel, die die Schritte im WordPress-Dashboard zur Installation und Aktivierung des Plugins darstellen. Es ist jedoch wichtig zu beachten, dass das Ausnutzen von Schwachstellen auf diese Weise illegal und unethisch ist, ohne die entsprechende Genehmigung. Diese Informationen sollten verantwortungsbewusst und nur in einem rechtlichen Kontext verwendet werden, wie z.B. bei Penetrationstests mit ausdrücklicher Genehmigung.
Für detailliertere Schritte siehe: https://www.hackingarticles.in/wordpress-reverse-shell/
WPXStrike: WPXStrike ist ein Skript, das entwickelt wurde, um eine Cross-Site Scripting (XSS)-Schwachstelle in Remote Code Execution (RCE) oder andere kritische Schwachstellen in WordPress zu eskalieren. Für weitere Informationen siehe diesen Beitrag. Es bietet Unterstützung für WordPress-Versionen 6.X.X, 5.X.X und 4.X.X und ermöglicht:
Privilegieneskalation: Erstellt einen Benutzer in WordPress.
(RCE) Benutzerdefiniertes Plugin (Hintertür) Hochladen: Laden Sie Ihr benutzerdefiniertes Plugin (Hintertür) in WordPress hoch.
(RCE) Eingebautes Plugin bearbeiten: Bearbeiten Sie ein eingebautes Plugin in WordPress.
(RCE) Eingebautes Theme bearbeiten: Bearbeiten Sie ein eingebautes Theme in WordPress.
(Benutzerdefiniert) Benutzerdefinierte Exploits: Benutzerdefinierte Exploits für Drittanbieter-WordPress-Plugins/Themes.
Benutzernamen und Passwörter extrahieren:
Ändern Sie das Admin-Passwort:
Zu wissen, wie ein Wordpress-Plugin Funktionen offenlegen kann, ist entscheidend, um Schwachstellen in seiner Funktionalität zu finden. Sie können herausfinden, wie ein Plugin Funktionen offenlegen könnte, in den folgenden Aufzählungspunkten und einigen Beispielen für anfällige Plugins in diesem Blogbeitrag.
wp_ajax
Eine der Möglichkeiten, wie ein Plugin Funktionen für Benutzer offenlegen kann, ist über AJAX-Handler. Diese könnten Logik-, Autorisierungs- oder Authentifizierungsfehler enthalten. Darüber hinaus ist es häufig der Fall, dass diese Funktionen sowohl die Authentifizierung als auch die Autorisierung auf das Vorhandensein eines Wordpress-Nonce stützen, den jeder Benutzer, der in der Wordpress-Instanz authentifiziert ist, haben könnte (unabhängig von seiner Rolle).
Dies sind die Funktionen, die verwendet werden können, um eine Funktion in einem Plugin offenzulegen:
Die Verwendung von nopriv
macht den Endpunkt für alle Benutzer zugänglich (auch für nicht authentifizierte).
Darüber hinaus, wenn die Funktion nur die Autorisierung des Benutzers mit der Funktion wp_verify_nonce
überprüft, überprüft diese Funktion nur, ob der Benutzer angemeldet ist, normalerweise wird die Rolle des Benutzers nicht überprüft. Daher könnten niedrig privilegierte Benutzer Zugriff auf hoch privilegierte Aktionen haben.
REST API
Es ist auch möglich, Funktionen von WordPress zu exponieren, indem man eine REST-API mit der Funktion register_rest_route
registriert:
Der permission_callback
ist eine Rückruffunktion, die überprüft, ob ein gegebener Benutzer berechtigt ist, die API-Methode aufzurufen.
Wenn die eingebaute __return_true
-Funktion verwendet wird, wird die Überprüfung der Benutzerberechtigungen einfach übersprungen.
Direkter Zugriff auf die PHP-Datei
Natürlich verwendet WordPress PHP, und Dateien innerhalb von Plugins sind direkt über das Web zugänglich. Wenn ein Plugin also eine verwundbare Funktionalität bereitstellt, die durch den Zugriff auf die Datei ausgelöst wird, kann es von jedem Benutzer ausgenutzt werden.
Stellen Sie sicher, dass WordPress, Plugins und Themes auf dem neuesten Stand sind. Bestätigen Sie auch, dass die automatische Aktualisierung in wp-config.php aktiviert ist:
Auch, installieren Sie nur vertrauenswürdige WordPress-Plugins und -Themes.
Entfernen Sie den standardmäßigen Admin-Benutzer
Verwenden Sie starke Passwörter und 2FA
Überprüfen Sie regelmäßig die Berechtigungen der Benutzer
Begrenzen Sie die Anmeldeversuche, um Brute-Force-Angriffe zu verhindern
Benennen Sie die wp-admin.php
-Datei um und erlauben Sie den Zugriff nur intern oder von bestimmten IP-Adressen.
Verwenden Sie Trickest, um einfach Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden. Erhalten Sie heute Zugang:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)