
Einführung – Das Unbekannte erkunden: Unter der Oberfläche des ungepatchten WordPress SSRF
In der sich ständig weiterentwickelnden Cybersicherheitslandschaft bleibt WordPress aufgrund seiner weiten Verbreitung und seines umfangreichen Plugin-Ökosystems ein beliebtes Angriffsziel. Obwohl der WordPress-Kern grundsätzlich sicher ist, entstehen Schwachstellen häufig durch Plugins und Themes von Drittanbietern. Eine solche Schwachstelle, die viel Aufmerksamkeit erregt hat, ist die Server-Side Request Forgery (SSRF). In diesem Blogbeitrag gehen wir auf die Feinheiten der ungepatchten WordPress-SSRF-Schwachstelle, ihre Auswirkungen und den Schutz Ihrer WordPress-Site durch WP-Firewall vor solchen Bedrohungen ein.
## Die Grundursache: wp_http_validate_url()
Im September 2022 veröffentlichte SonarSource eine Warnung zu einem ungepatchten, nicht authentifizierten Blind-SSRF im WordPress-Core. Die Ursache dieser Sicherheitslücke liegt in der Funktion „wp_http_validate_url()“, die anfällig für DNS-Rebinding-Angriffe ist. Obwohl der WordPress-Core selbst nicht direkt betroffen ist, sind Plugins, die diese anfällige Funktion nutzen, gefährdet.
wp_http_validate_url() verstehen
Die Funktion `wp_http_validate_url()` dient der Validierung von URLs, um Umleitungs- und Request-Forgery-Angriffe zu verhindern. Sie bietet jedoch keinen ausreichenden Schutz vor DNS-Rebinding-Angriffen und ist daher ein potenzieller Angriffspunkt für SSRF-Schwachstellen. Diese Funktion wird häufig in Verbindung mit `wp_remote_get()` und der sichereren Alternative `wp_safe_remote_get()` verwendet.
Der offensichtliche Teil: wp_remote_get() und wp_safe_remote_get()
Die Funktion `wp_remote_get()` wird häufig verwendet, um Remote-Hosts über den Server anzufordern. Es ist jedoch bekannt, dass die Übergabe von Benutzereingabe-URLs an diese Funktion zu SSRF-Schwachstellen führen kann. Um dieses Risiko zu mindern, hat WordPress `wp_safe_remote_get()` eingeführt, das zusätzliche Validierungen zur Verhinderung von SSRF-Angriffen enthält.
Wie sicher ist wp_safe_remote_get()?
Die Funktion `wp_safe_remote_get()` ist als sicherere Alternative zu `wp_remote_get()` konzipiert. Laut der offiziellen WordPress-Dokumentation:
„Diese Funktion ist ideal, wenn die HTTP-Anfrage an eine beliebige URL gestellt wird. Die URL wird validiert, um Umleitungs- und Anfragefälschungsangriffe zu vermeiden.“
Die Sicherheit der Funktion wird jedoch durch die zugrunde liegende Funktion „wp_http_validate_url()“ eingeschränkt, die, wie bereits erwähnt, anfällig für DNS-Rebinding-Angriffe ist.
Eintauchen in die Funktion
Der Quellcode für `wp_safe_remote_get()` lautet wie folgt:
php
Funktion wp_safe_remote_get( $url, $args = Array() ) {
$args['reject_unsafe_urls'] = wahr;
$http = _wp_http_get_object();
returniere $http->get( $url, $args );
}
In Zeile 2 wird der Parameter `$args['reject_unsafe_urls']` auf `true` gesetzt, wodurch die Benutzereingabe schließlich an die Funktion `wp_http_validate_url()` weitergeleitet wird, bevor die URL angefordert wird. Da `wp_http_validate_url()` anfällig für DNS-Rebinding-Angriffe ist, ist auch jede Funktion, die ausschließlich auf diese Funktion zur Validierung angewiesen ist, anfällig.
Einschränkungen der Sicherheitsanfälligkeit
Obwohl dies kein vollwertiges SSRF ist, gibt es Einschränkungen, die durch die Funktion „wp_http_validate_url()“ festgelegt werden:
– Das Protokoll muss entweder „http://“ oder „https://“ sein.
– Der Port kann nur 80, 443 oder 8080 sein
Trotz dieser Einschränkungen ist das Anfordern interner Hosts innerhalb dieser Grenzen über dieses SSRF möglich.
Anfälliger Plugin-Code
Hier sind einige Beispiele für anfälligen Plugin-Code:
Nicht-blinde SSRF
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
echo $response;
?>
Wenn das Plugin Benutzereingaben entgegennimmt, diese an die Funktion „wp_safe_remote_get()“ übergibt und dann die Antwort anzeigt, ist es anfällig für nicht blindes, begrenztes SSRF.
Blinde SSRF
php
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
if ($response_code == 200) {
echo "In Betrieb";
} anders {
echo "Ausgefallen oder nicht gefunden!";
}
?>
Wenn das Plugin Benutzereingaben an „wp_safe_remote_get()“ weiterleitet, aber nur den Antwortcode/Status zurückgibt, ist es anfällig für blindes SSRF, wodurch die Auswirkungen auf das Port-Scanning der Ports 80, 443 oder 8080 eines beliebigen internen Hosts beschränkt werden.
Angriffsdemonstration
Um diese Schwachstelle zu demonstrieren, haben wir einen Angriff auf einen Apache-Server mit WordPress auf Port 80 und einen PHP-Server auf localhost:8080 mit geheimen Informationen durchgeführt. Der anfällige Code wurde in das Plugin-Verzeichnis `/wp-content/plugins/vulnerable-plugin/index.php` eingefügt.
GitHub-Repository
Eine anfällige Docker-Instanz und das Exploit-Skript, mit dem Sie diese Sicherheitslücke ausnutzen können, finden Sie hier GitHub-RepositoryBildnachweis: Ananda Dhakal
## Weitere anfällige Funktionen
Dieselbe Sicherheitslücke besteht auch bei anderen Funktionen, die zur Validierung auf `wp_http_validate_url()` angewiesen sind:
– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`
Darüber hinaus fungieren einige Funktionen als Wrapper für „wp_safe_remote_get()“ und sind ebenfalls in gewissem Maße anfällig:
– `WP_REST_URL_Details_Controller::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`
Abschluss
Es ist offensichtlich, dass Funktionen, die als sicher gelten und zum Schutz vor SSRF-Schwachstellen entwickelt wurden, nicht absolut sicher sind. Die Abhängigkeit von `wp_http_validate_url()`, das anfällig für DNS-Rebinding-Angriffe ist, setzt WordPress-Websites potenziellen SSRF-Angriffen aus. Wir fordern das WordPress-Core-Team dringend auf, dieses Problem zu beheben und einen Patch zur Verbesserung der Plattformsicherheit zu veröffentlichen.
Wie WP-Firewall helfen kann
Wir bei WP-Firewall wissen, wie wichtig es ist, Ihre WordPress-Site vor neuen Bedrohungen zu schützen. Unsere umfassenden Sicherheitslösungen bieten zuverlässigen Schutz vor einer Vielzahl von Schwachstellen, einschließlich SSRF-Angriffen. So kann WP-Firewall Ihre WordPress-Site schützen:
Bedrohungserkennung in Echtzeit
WP-Firewall bietet Echtzeit-Bedrohungserkennungsfunktionen, die Ihre Website auf verdächtige Aktivitäten und potenzielle Schwachstellen überwachen. Unsere fortschrittlichen Algorithmen können SSRF-Versuche erkennen und blockieren und so die Sicherheit Ihrer Website gewährleisten.
Regelmäßige Sicherheitsüberprüfungen
Unser Team aus Sicherheitsexperten führt regelmäßig Audits Ihrer WordPress-Site und der zugehörigen Plugins durch, um Schwachstellen zu identifizieren und zu beheben. Indem wir potenziellen Bedrohungen immer einen Schritt voraus sind, unterstützen wir Sie dabei, eine sichere Umgebung für Ihre Benutzer zu gewährleisten.
Automatisiertes Patch-Management
Die Aktualisierung Ihres WordPress-Kerns, Ihrer Themes und Plugins ist für die Sicherheit entscheidend. WP-Firewall bietet automatisiertes Patch-Management und stellt sicher, dass alle Komponenten Ihrer Website mit den neuesten Sicherheitspatches aktualisiert werden.
Benutzerdefinierte Firewall-Regeln
Mit WP-Firewall können Sie benutzerdefinierte Firewall-Regeln erstellen, die auf Ihre spezifischen Bedürfnisse zugeschnitten sind. Durch die Implementierung von Regeln, die böswillige Anfragen und unbefugte Zugriffsversuche blockieren, erhöhen Sie die Sicherheit Ihrer Website.
Umfassende Berichterstattung
Unsere detaillierten Sicherheitsberichte geben Einblick in die erkannten Bedrohungen und die ergriffenen Maßnahmen zum Schutz Ihrer Website. Mit WP-Firewall bleiben Sie jederzeit über den Sicherheitsstatus Ihrer WordPress-Site informiert.
Schutz vor SSRF mit WP-Firewall
Um SSRF-Schwachstellen gezielt zu beheben, bietet WP-Firewall die folgenden Funktionen:
Eingabevalidierung
WP-Firewall führt eine strenge Eingabevalidierung durch, um sicherzustellen, dass die vom Benutzer eingegebenen URLs sicher und frei von böswilligen Absichten sind. Durch die Validierung der Eingaben auf mehreren Ebenen verhindern wir, dass SSRF-Angriffe anfällige Funktionen ausnutzen.
DNS-Rebinding-Schutz
Unsere Firewall verfügt über DNS-Rebinding-Schutzmechanismen, die Versuche, DNS-Rebinding-Schwachstellen auszunutzen, erkennen und blockieren. Dadurch bleibt Ihre Website auch dann sicher, wenn zugrunde liegende Funktionen wie `wp_http_validate_url()` anfällig sind.
Sichere API-Anfragen
WP-Firewall sichert API-Anfragen durch strenge Validierungs- und Authentifizierungsmaßnahmen. Dies verhindert unbefugten Zugriff und verringert das Risiko von SSRF-Angriffen auf API-Endpunkte.
Kontinuierliche Überwachung
Unsere kontinuierlichen Überwachungsfunktionen überwachen den Datenverkehr und die Aktivitäten Ihrer Website. Verdächtiges Verhalten wird umgehend gemeldet und behoben, wodurch das Risiko erfolgreicher SSRF-Angriffe minimiert wird.
Aufruf zum Handeln
Obwohl die ungepatchte WordPress-SSRF-Sicherheitslücke ein erhebliches Risiko darstellt, können proaktive Maßnahmen ihre Auswirkungen abmildern. Mit den umfassenden Sicherheitslösungen von WP-Firewall schützen Sie Ihre WordPress-Site vor SSRF-Angriffen und anderen neuen Bedrohungen. Bleiben Sie potenziellen Schwachstellen immer einen Schritt voraus und sorgen Sie mit WP-Firewall für eine sichere Umgebung für Ihre Nutzer.
Warten Sie nicht, bis eine Sicherheitsverletzung auftritt. Schützen Sie Ihre WordPress-Site noch heute mit WP-Firewall. Starten Sie Ihre kostenlose Testversion und erleben Sie die Sicherheit, die ein robuster Echtzeitschutz mit sich bringt.
Weitere Informationen dazu, wie WP-Firewall Ihnen beim Schutz Ihrer WordPress-Site helfen kann, finden Sie in unserer Webseite oder kontaktieren Sie unser Support-Team.
Bleiben Sie sicher und geschützt und schützen Sie Ihre WordPress-Site mit WP-Firewall.
—
Wöchentlicher Sicherheitsrat
Erhalten Sie die neuesten Informationen zur WordPress-Sicherheit in Ihren Posteingang. Abonnieren Sie unseren Newsletter und bleiben Sie über die neuesten Bedrohungen und Best Practices zur Sicherung Ihrer WordPress-Site auf dem Laufenden.
Die neuesten Sicherheitshinweise
Sehen Sie sich die neuesten Sicherheitshinweise an und bleiben Sie über kritische Sicherheitslücken bei WordPress-Plugins und -Themes auf dem Laufenden.
– 19. Mai 2024: WordPress-Sicherheitslückenbericht (6. Mai 2024 bis 12. Mai 2024)
– 15. Mai 2024: Wichtige Sicherheitslücken im Uncode Core Plugin gepatcht