Penetrationstests für WordPress-Websites
Veröffentlicht: 2020-03-20WordPress treibt viele Websites im Internet an. Kein Wunder also, dass erfahrene Angreifer und „Script-Kiddies“ gerne WordPress-Websites ins Visier nehmen. Egal, ob Sie ein Webmaster oder ein Sicherheitsexperte sind, wenn Sie mit der Bewertung der Sicherheitslage einer WordPress-Website beauftragt sind, hilft es in der Regel, sich der üblichen Sicherheitsfallen bewusst zu sein, die Angreifer normalerweise ausnutzen. Es ist auch wichtig, die richtigen Tools für Penetrationstests zu verwenden.
In diesem Artikel werde ich eine Reihe häufiger Sicherheitslücken, Fehlverhalten und nützliche Informationen behandeln, die ein Angreifer in vielen WordPress-Installationen missbrauchen kann. Ich werde auch eine Reihe von Tools hervorheben, die Sie verwenden sollten, um den WordPress-Penetrationstest zu automatisieren.
Achtung – Führen Sie Sicherheitspenetrationstests nur auf Systemen durch, die Ihnen gehören oder für die Sie die Erlaubnis erhalten haben. Machen Sie sich mit den Grenzen des Zugriffs vertraut, der Ihnen gewährt wurde, und bleiben Sie innerhalb dieser Grenzen.
Häufige WordPress-Sicherheitsprobleme und Fehlverhalten
Veraltete Versionen des WordPress-Codes
Das Ausführen alter Versionen des WordPress-Kerns, die Sicherheitslücken enthalten, ist wohl eine der häufigsten Sicherheitslücken in Bezug auf WordPress. Während neuere Versionen von WordPress ein Upgrade auf die neueste Version erleichtern, ist es nicht ungewöhnlich, dass ältere WordPress-Sites hinterherhinken.
Eine alte Version von WordPress im Internet zu betreiben ist eine tickende Zeitbombe. Viele alte Versionen von WordPress enthalten Sicherheitslücken. Viele dieser Sicherheitsprobleme werden von Angreifern häufig massenhaft ausgenutzt.
Wenn Sie eine WordPress-Website auf Sicherheitslücken prüfen, ist dies normalerweise eines der allerersten Dinge, die Sie überprüfen möchten. Zum Glück für Angreifer fügt WordPress standardmäßig ein HTML-Meta-Tag hinzu, das die verwendete WordPress-Version enthält.
<meta name=”generator” content=”WordPress 4.8.11″ />
Zu wissen, dass eine WordPress-Installation eine alte Version ausführt, könnte einem Angreifer die Möglichkeit geben, eine bekannte Schwachstelle auszunutzen. Verwenden Sie die CVE-Sicherheitslückendatenbank, um nach bekannten Sicherheitsproblemen im WordPress-Kern zu suchen.
Veraltete Versionen von WordPress-Themes und Plugins
Der WordPress-Kern ist sehr sicher. Millionen von Benutzern und böswilligen Hackern testen und prüfen den Code gründlich. Dies bedeutet, dass Sicherheitsprobleme meistens erkannt und behoben werden, bevor sie von Angreifern missbraucht werden. Es ist jedoch nicht immun gegen Sicherheitslücken. Leider gilt dies nicht für die Tausenden von WordPress-Plugins und -Themes.
Jeder kann ein Design oder Plugin einreichen und es jedem WordPress-Administrator zum Herunterladen und Verwenden zur Verfügung stellen. Das bedeutet natürlich nicht, dass jedes WordPress-Plugin schlecht codiert und voller Schwachstellen ist – weit gefehlt. Bekannte Schwachstellen stellen jedoch eine massive Angriffsfläche für WordPress dar, der Sie sich bewusst sein sollten, wenn Sie einen WordPress-Penetrationstest durchführen.
Das schnellste und wohl umfassendste Tool zum Fingerabdruck von anfälligen WordPress-Plugins und -Designs ist die Verwendung von WPScan. WPScan ist ein Open-Source -Blackbox- WordPress-Sicherheitsscanner, der häufig verwendet wird, um WordPress-Websites auf bekannte Schwachstellen im Kern, in Plugins und Themes zu scannen.
Wenn Sie WPScan während eines Pentests verwenden, stellen Sie sicher, dass Sie sich für die Verwendung eines WPScan Vulnerability Database API-Schlüssels anmelden und konfigurieren. Die WPScan Vulnerability Database ist eine von den Autoren von WPScan gepflegte Datenbank mit den neuesten bekannten Schwachstellen und ihren jeweiligen Versionen.
Weitere Informationen zu WPScan und zum Ausführen verschiedener Arten von Scans finden Sie unter Erste Schritte mit WPScan.
Alte Versionen von PHP und Webservern
WordPress ist eine PHP-Webanwendung und daher gelten alle Best Practices für die PHP-Sicherheit auch für WordPress. Während eines WordPress-Penetrationstests ist dies eines der allerersten Dinge, auf die Sie achten müssen. WordPress-Installationen, auf denen alte Versionen von PHP oder Webserver-Software (z. B. Nginx, Apache HTTP Server, IIS…) ausgeführt werden, können die Website allen möglichen Angriffen aussetzen.
Es ist sehr einfach herauszufinden, welchen Webserver und welche PHP-Version eine WordPress-Website verwendet. In vielen Fällen muss ein Angreifer lediglich genau auf die HTTP-Antwort-Header achten, die von der Website zurückgegeben werden. Mit curl können Sie selbst eine Anfrage senden:
$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i „Server\|X-Powered-By“
Suchen Sie in der Antwort nach den Server- und X-Powered-By- HTTP-Headern:
Server: Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/5.5.9
Je nach Version und Konfiguration der Website kann ein Angreifer bekannte Sicherheitslücken (z. B. https://www.cvedetails.com/vendor/74/PHP.html) nutzen, um zusätzliche Informationen über ein Ziel zu erhalten. Solche Informationen können helfen, einen Angriff zu eskalieren oder sogar Befehle direkt auf dem Webserver auszuführen.
Aufzählung des WordPress-Benutzernamens
Sofern kein Systemadministrator Maßnahmen ergriffen hat, um dies zu verhindern, ist WordPress standardmäßig anfällig für Benutzeraufzählungsangriffe. WordPress-Benutzeraufzählungsangriffe, suchen Sie nach subtilen Unterschieden, wie WordPress auf bestimmte Anfragen reagiert. Abhängig von der Antwort kann der Angreifer feststellen, ob ein Benutzer existiert oder nicht, wodurch ein Angreifer diese Informationen möglicherweise als Teil eines größeren Angriffs verwenden kann.
Das Folgende ist ein Screenshot von WPScan, der einen WordPress-Benutzernamen-Aufzählungsangriff durchführt.
Fehlkonfigurationen des Webservers
Verzeichnisauflistung und andere Fehlkonfigurationen von Webservern
Abgesehen von veralteter Software muss man immer mögliche Fehlkonfigurationen des Webservers bewerten. Ein falsch konfigurierter Webserver kann die WordPress-Website anfällig für Ausbeutung machen. Dies kann auch dann passieren, wenn auf dem Webserver die neueste Software ausgeführt wird. Hier sind einige typische Fehlkonfigurationen von Webservern:
Aktivierte Verzeichnisliste
Die Verzeichnisauflistung ist eine sehr häufige Fehlkonfiguration. Apache-Webserver haben dies standardmäßig aktiviert, und das hilft nicht. Die Verzeichnisauflistung listet einfach Dateien und Verzeichnisse auf einem Webserver in einer grafischen Oberfläche auf, wenn keine Indexdatei vorhanden ist.
Obwohl dies an sich nicht besonders schädlich ist, bietet es einem Angreifer die Möglichkeit, den Inhalt Ihres Webserververzeichnisses zu durchsuchen. Dadurch kann er möglicherweise alle Dateien auf Ihrer Website sehen, von denen die meisten nicht öffentlich zugänglich sein sollten, wie Backups, Passwörter und Konfigurationsdateien.
Sicherungs-Dateien
Sicherungsdateien sind eine weitere allzu häufige Fehlkonfiguration von Webservern . Typischerweise treten diese auf, wenn Systemadministratoren Dateien auf Produktionssystemen manuell bearbeiten.
Ein gängiges Beispiel für Sicherungsdateien, die potenziell vertrauliche Informationen preisgeben, könnten Sicherungskopien von PHP-Dateien sein. Manchmal enthalten PHP-Dateien wichtige Konfigurationsdaten – wie die wp-config.php-Datei von WordPress.
Nehmen Sie das folgende Szenario – ein WordPress-Administrator muss Änderungen an der wp-config.php vornehmen. Anstatt den bewährten Verfahren zu folgen und eine Kopie der Datei an einem anderen Ort als dem Webserver aufzubewahren, erstellen sie eine Kopie der Live-Datei wp-config.php und nennen das Backup wp-config.php.bak. Nehmen wir nun an, der Systemadministrator hat vergessen, diese Datei zu entfernen, was häufiger vorkommt, als wir denken.
Ein Angreifer kann die Datei jetzt lesen, indem er einfach http://www.example.com/wp-config.php.bak anfordert. Der Angreifer kann die Datei lesen, da ihre Erweiterung nicht mehr .php ist. Die PHP-Engine ignoriert es also und der Webserver stellt es als Textdatei bereit. Jetzt kennt der Angreifer die WordPress-Datenbank-Anmeldeinformationen, die geheimen Token und alle anderen sensiblen Konfigurationsinformationen, die Sie in dieser Datei gespeichert haben.
Temporäre Dateien
Ähnlich wie Sicherungsdateien können temporäre Dateien am falschen Speicherort möglicherweise sensible Daten offenlegen. Nehmen wir noch einmal die wp-config.php als Beispiel. Wenn ein Systemadministrator diese Datei mit einem Texteditor bearbeiten musste und das Programm aus irgendeinem Grund nicht sauber beendet wurde, besteht eine gute Chance, dass der Editor temporäre Dateien hinterlässt. Beispielsweise speichert der beliebte Kommandozeilen-Editor Vim Backup-Dateien mit der Erweiterung *.ext~ file zusammen mit einer *.ext.swp-Datei. Die swp-Dateien werden als Sperrdatei verwendet. Sie enthalten auch den gesamten Undo/Redo-Verlauf und andere interne Informationen, die Vim benötigt.
Daher hinterlässt Vim im Falle eines Absturzes eine Datei wp-config.php.ext~, auf die im Klartext wie auf Sicherungsdateien zugegriffen werden kann, da sie nicht mit einer *.php-Dateierweiterung endet. Temporäre Dateien dieser Art sind nicht exklusiv für Vim – Emacs (ein weiterer beliebter Befehlszeilen-Texteditor) speichert auch ähnliche temporäre Dateien, und unzählige andere Tools tun dies auch.
Achtung – verwenden Sie ein Plugin zur Überwachung der Dateiintegrität für Ihre Website, um über alle Dateiänderungen benachrichtigt zu werden, einschließlich temporärer und Sicherungsdateien. Wenn Sie mit dieser Technologie nicht vertraut sind, lesen Sie unsere Einführung in die Dateiintegritätsüberwachung für WordPress.
Offengelegtes MySQL
Bei weitem eine der schwerwiegendsten Fehlkonfigurationen, die ein Systemadministrator vornehmen kann, besteht darin, seinen WordPress-MySQL-Datenbankserver für das Internet offen zu lassen. Warum das verrückt klingen mag, passiert wahrscheinlich öfter als Sie denken. Unten sehen Sie einen Screenshot von Shodan, einer Suchmaschine für mit dem Internet verbundene Geräte.
Nur weil MySQL über das Internet verfügbar gemacht wird, heißt das natürlich nicht, dass sich jemand damit verbinden und auf die WordPress-Datenbank zugreifen kann. Insbesondere in Kombination mit anderen Angriffen, wie z. B. einem geleakten Passwort über ein Backup von wp-config.php oder dem Erraten eines schwachen Passworts, könnte dies jedoch zu einem Katastrophenszenario führen.
Sobald Sie die Kontrolle über eine WordPress-Datenbank haben, ist das Spiel für eine WordPress-Installation vorbei. Ein Angreifer muss lediglich ein Administratorkennwort zurücksetzen. Dann übernehmen sie so ziemlich die volle Kontrolle über Ihre WordPress-Website und möglicherweise sogar über den Server, auf dem sie läuft, indem sie absichtlich schädliche Plugins installieren.
Unnötige Dienste ausführen
Ein weiteres häufiges Problem der Fehlkonfiguration von Webservern ist die Standardkonfiguration. Viele Administratoren führen die Standardkonfiguration aus und deaktivieren die Dienste, die sie nicht benötigen, nicht. In den meisten Fällen laufen bei Standardinstallationen viele unnötige Dienste, von denen die meisten, wenn sie nicht gesichert sind, den Webserver Angriffen aussetzen.
Pentesting-Tools für WordPress-Penetrationstester und Sicherheitsexperten
Penetrationstester verwenden eine Vielzahl von Tools, um ihre Arbeit und Techniken zu automatisieren. Die Automatisierung trägt dazu bei, die Zeit zu verkürzen, die für die Durchführung einer Sicherheitsbewertung / eines Penetrationstests benötigt wird.
Kali-Linux
Die Werkzeuge, die man verwendet, sind sehr unterschiedlich. Es hängt von der persönlichen Vorliebe und dem vorliegenden Problem ab. Ein guter Ausgangspunkt ist jedoch, eine Vielzahl von vorinstallierten Tools zur Verfügung zu haben.
Kali Linux, früher bekannt als BackTrack, ist die Linux-Distribution für Open-Source-Penetrationstests. Kali Linux wird mit einer ganzen Reihe vorinstallierter und vorkonfigurierter Tools geliefert. Es ist sowohl für Anfänger, die schnell loslegen möchten, als auch für erfahrene Penetrationstester nützlich. Kali Linux ist kostenlos erhältlich und kann auf einer virtuellen Maschine ausgeführt werden.
Nmap
Dieser kostenlose Scanner ist einer der grundlegendsten und vielseitigsten Scanner im Arsenal eines jeden Pentesters. Nmap ist in erster Linie ein Port-Scanner. Es kann jedoch über seine NSE-Skriptsprache erweitert werden, um alle möglichen Arten von Scans durchzuführen.
WPScan
WPScan (weiter oben in diesem Artikel behandelt) ist ein Open-Source-WordPress-Sicherheitsscanner. Es scannt nach bekannten WordPress-Schwachstellen – sowohl innerhalb des WordPress-Kerns als auch innerhalb von WordPress-Plugins und -Designs.
WPScan kann eine Reihe von Blackbox-Tests durchführen. Das heißt, ohne Zugriff auf den Quellcode. Daher eignet sich WPScan hervorragend, um niedrig hängende WordPress-Schwachstellen schnell und genau zu finden.
OWASP ZAP
OWASP Zed Attack Proxy (ZAP) ist ein kostenloses Open-Source-Tool für Penetrationstests von Webanwendungen. Das Open Web Application Security Project (OWASP) pflegt diese Tools. OWASP ZAP wurde speziell zum Testen von Webanwendungen auf eine Vielzahl von Schwachstellen wie Cross-Site Scripting (XSS) und SQL Injection (SQLi) entwickelt. ZAP ist im Kern ein Proxy. Es befindet sich zwischen dem Browser des Pentesters und der Website, um die zwischen den beiden gesendeten Anfragen abzufangen und zu untersuchen.
Neben der Funktion als Proxy kann ZAP auch automatisch auf eine Vielzahl von Schwachstellen testen und eine Vielzahl von Eingaben fuzzen . Fuzzing ist eine Sicherheitstesttechnik, bei der ungültige oder unerwartete Eingaben an eine Anwendung geliefert werden, um Sicherheitslücken aufzudecken.
Penetrationstests für WordPress – Bewertung der Sicherheitslage Ihrer Website
WordPress-Sicherheit ist keine einmalige Lösung. Es ist ein kontinuierlicher Prozess, der auf vier Prinzipien basiert: Härten > Überwachen > Testen > Verbessern. Mit Penetrationstests adressieren Sie das Testprinzip . Dh Sie überprüfen die Sicherheitslage Ihrer Website. Anschließend können Sie anhand Ihrer Erkenntnisse die notwendigen Maßnahmen ergreifen, um das Setup zu verbessern.
Daher sollten häufige Penetrationstests für WordPress-Websites Teil Ihres Sicherheitsprogramms sein. Sie beurteilen, wie oft Sie Penetrationstests durchführen sollten. Wenn Sie häufig Änderungen an Ihrer Website vornehmen, sollten Sie häufige Tests durchführen. Ein vierteljährlicher Penetrationstest reicht jedoch aus, wenn Ihre Website selten aktualisiert wird.