Verschiedene Angriffszensarien
Neben bekanntem XSS (Cross-site Scripting) und Mysql Injection, XSPA, SSRF und DDoS Attacken werden diverse Tricks ausprobiert um Lücken auf Webservern auszunutzen. Vor allem haben es Individuen auf Fertigsysteme wie Wordpress abgesehen und klopfen eine Seite mehrmals täglich ab. Der Nachteil an diesen Fertigsystemen ist, das bei Sicherheitslücken oftmals gleich Hunderttausende Seiten betroffen sind und Parasiten so leichtes Handwerk haben um an Daten zu kommen.
Im schlimmsten Fall verliert der Admin den Zugang zum eigenen System, Datenbanken wurden gelöscht oder manipuliert, Nutzerdaten werden geklaut oder Schadsoftware verteilt. Szenarien gibt es leider wie Sand am Meer.
Weitere Bestandteile wären das permanente Abklopfen von Verzeichnisnamen, installieren von Backdoors, Bruteforceattacken auf Backends, User Enumeration - Auflistung der Nutzer (z.b. Adminaccounts), Ausspähen von Zugangspasswörtern, SQL Injections durch Core-Elemente, sowie aktives Ausnutzen von Sicherheitslücken für den FCKeditor uvm.
Ich kenne mich nicht mit Wordpress aus, aber einige Angriffsvektoren existieren wohl schon seit über 4 Jahren und länger. Dass diese immer noch ausgeführt werden, spricht nicht gerade für den Einsatz eines solchen Systems. Vor allem wenn Freund/in oder Kumpel fix 'ne Seite eingerichtet hat und selbst keine Ahnung von der Materie hat.
Wordpress in Zahlen
Ein kleiner Auszug aus dem Jahr 2021
- 10.12.2021 - Attacke gegen 1,6 Millionen Wordpresseiten dank unsicheren Plugins und Themes
- 08.12.2021 - Infizierte Wordpress Plugins werden genutzt um Kreditkarteninformationen zu stehlen
- 24.11.2021 - 1,2 Millionen Wordpress Seiten durch Datenpanne bei GoDaddy gefährdet
- 11.11.2021 - 1 Millionen Wordpress Seiten durch veraltete Starter Plubins gefärdet
- 02.11.2021 - DSGVO Plugin erlaubt unauthorisierten Löschvorgang von Webseiten
- 28.10.2021 - 1 Million Wordpress Systeme durch unauthorisierten API Zugang gefährdet
Quellen: Sucuri, Wordfence
Wordpress Attacken
Wenn es also Webseiten mit Sicherheitslücken erwischt, dann sofort auf einen Schlag im fünf bis siebenstelligen Bereichen. Daher scheint es auch kein Wunder zu sein, dass sich Angriffe primär auf Wordpress eingeschossen haben und Systeme (mehrmals am Tag) nach Schwachstellen nach Schema F abklopfen. Auch Webseiten die nicht auf Wordpress basieren.
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET //2018/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //2019/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //blog/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //cms/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //media/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //news/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //shop/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //site/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //sito/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //test/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //web/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //website/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //wordpress/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //wp/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //wp1/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //wp2/wp-includes/wlwmanifest.xml HTTP/1.1"
"GET //xmlrpc.php?rsd HTTP/1.1"
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET / HTTP/1.1"
"GET /.env HTTP/1.1"
"GET /.env HTTP/1.1"
"GET /admin/includes/general.js HTTP/1.1"
"GET /admin/includes/general.js HTTP/1.1"
"GET /admin/view/javascript/common.js HTTP/1.1"
"GET /admin/view/javascript/common.js HTTP/1.1"
"GET /administrator/ HTTP/1.1"
"GET /administrator/ HTTP/1.1"
"GET /administrator/help/en-GB/toc.json HTTP/1.1"
"GET /administrator/help/en-GB/toc.json HTTP/1.1"
"GET /administrator/language/en-GB/install.xml HTTP/1.1"
"GET /administrator/language/en-GB/install.xml HTTP/1.1"
"GET /fckeditor/editor/filemanager/connectors/php/upload.php?Type=Media HTTP/1.1"
"GET /fckeditor/editor/filemanager/connectors/php/upload.php?Type=Media HTTP/1.1"
"GET /images/editor/separator.gif HTTP/1.1"
"GET /images/editor/separator.gif HTTP/1.1"
"GET /js/header-rollup-554.js HTTP/1.1"
"GET /js/header-rollup-554.js HTTP/1.1"
"GET /misc/ajax.js HTTP/1.1"
"GET /misc/ajax.js HTTP/1.1"
"GET /plugins/system/debug/debug.xml HTTP/1.1"
"GET /plugins/system/debug/debug.xml HTTP/1.1"
"GET /vendor/phpunit/phpunit/build.xml HTTP/1.1"
"GET /vendor/phpunit/phpunit/build.xml HTTP/1.1"
"GET /wp-includes/js/jquery/jquery.js HTTP/1.1"
"GET /wp-includes/js/jquery/jquery.js HTTP/1.1"
User Enumeration
Hier wird geprüft ob und welche Nutzer existieren. Existiert z.b. ein Adminaccount kann versucht werden sich über diesen einzuloggen.
"GET /?author=1 HTTP/1.1"
"GET /?author=2 HTTP/1.1"
"GET /?author=3 HTTP/1.1"
XSS Attacken
Einschleusen von Fremdcode mit Hilfe von URL-Manipulation
"GET /search/index.php?suchbegriff=/etc/passwd& HTTP/1.1"
"GET /search/index.php?suchbegriff=Extinction'[0]& HTTP/1.1"
"GET /search/index.php?suchbegriff=\">& HTTP/1.1"
Weitere Angriffsvektoren
Noch mehr Mist... Muss toll sein, anderen Menschen schaden zu wollen.
"GET /.well-known/autoconfig/mail/config-v1.1.xml?emailaddress=admin%40xxxxxx.de HTTP/1.1"
"GET /admin/assets/global/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /admin/assets/global/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /admin/assets/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /admin/assets/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /autodiscover/autodiscover.xml HTTP/1.1"
"GET /public/assets/global/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /public/assets/global/plugins/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /public/assets/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /public/assets/jquery-file-upload/server/php/index.php HTTP/1.1"
"GET /python-admin/dashboard.php HTTP/1.1" 301 258 "-" "Python-urllib/3.7"
"GET /python-admin/dashboard.php HTTP/1.1" 404 2357 "-" "Python-urllib/3.7"
Gezieltes Abfischen von bestimmten Dateien
Gezieltes Aufrufen von bestimmten Dateinamen, die Logindaten enthalten können, Githublogs, Sicherungen der eigenen Datenbanken, Dumpdateien oder Walletdaten
"GET /back/backup.sql.tar HTTP/1.1" 301 251 "-" "-"
"GET /back/sftp-config.json HTTP/1.1" 301 253 "-" "-"
"GET /back/website.tar HTTP/1.1" 301 248 "-" "-"
"GET /backup/backup.sql.gz HTTP/1.1" 301 252 "-" "-"
"GET /backups/www.rar HTTP/1.1" 301 247 "-" "-"
"GET /bak/.bash_history HTTP/1.1" 301 249 "-" "-"
"GET /credentials.txt HTTP/1.1" 404 2192 "-" "-"
"GET /dump.sql HTTP/1.1" 403 2185 "-" "-"
"GET /old/wallet.zip HTTP/1.1" 404 2191 "-" "-"
"GET /old/website.gz HTTP/1.1" 301 246 "-" "-"
"GET /public_html.zip HTTP/1.1" 301 247 "-" "-"
"GET /restore/dump.sql HTTP/1.1" 301 248 "-" "-"
Schutz mit Hilfe der Htaccess
Die Htaccess (Hypertext-Zugriff) Datei dient als Konfigurationsdatei auf Webservern und kann mit nutzerdefinierten Regeln gefüllt werden, die dabei helfen können Verzeichnisse umzuleiten, Fehlerseiten auszugeben, Zugriffsschutz zu verankern oder auch um Abfragen im Vorraus abzublocken. Letzerer Punkt ist interessant, da es somit relativ einfach möglich ist, genannten Angriffsvektoren den Gar aus zu machen.
# Block über User-Agents
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (Crawler|Bot|Apache) [NC]
RewriteRule (.*) - [F,L]
</IfModule>
# Block über URL-Abfragen
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} (wlwmanifest|adminstrator) [NC]
RewriteRule (.*) - [F,L]
</IfModule>
Ip-Adressen mit der htaccess gezielt blockieren
Die Methode wird allerdings auf Dauer sehr langsam. Hier bietet es sich je nach Seitensprache an mit Arrays zu arbeiten, unliebsame Zugriffe zu blockieren. Oder nutzt entsprechende Wordpress Funktionen.
<Limit GET POST PUT>
Order allow,deny
Allow from all
deny from 1.2.3.4
deny from 5.6.7.8
</Limit>
Die Webseite von PerishablePress bietet zum Umgang mit der htacces detaillierte Informationen und Vorgehensweisen.
User-Agents von Crawlern & Bots
Crawler & Bots sind Scripte (oder Programme), die Webseiten nach Inhalten und Informationen durchforsten und ggf. speichern.
Nicht nur, dass sie eine Menge Traffic verursachen und damit Ressourcen verbrauchen, die Firmen und Personen hinter den Bots & Crawlern verdienen sich daran doof und dämlich an Daten die Ihnen noch nicht einmal selbst gehören. Wie im Fall des Diffbots, der monatlich bis zu 800€ kostet. Webseitenbetreiber sehen von diesem Reichtum natürlich nichts. Im Gegenteil, sie müssen wenn sie Pech haben sogar noch draufzahlen.
Auch hier lohnt es sich darauf zu achten, wer die eigenen Seiten besucht, um dem notfalls einen Riegel vorzuschieben, denn auch Anwender (mit bösartigen Absichten) können ihren User-Agent als Bot "tarnen". Hier hilt nur eine kontinuierliche Auswertung der eigenen Serverlogs und eine Bot & Crawlerliste wurde bereitgestellt, die dabei helfen kann den eigenen Webserver abzusichern.