Millionen von Websites werden von WordPress betrieben und sind mit 62% Marktanteil die Nummer Eins in der CMS-Welt
Ein kürzlich von Acunetix veröffentlichter Bericht über die Anfälligkeit von Webanwendungen zeigt, dass etwa 30% der WordPress-Websites anfällig sind
Es gibt eine Vielzahl von Online-Sicherheitsscannern, die Ihre Website scannen können. Wenn Sie jedoch eine Software suchen, die Sie von Ihrem Server aus installieren und scannen können, dann ist WPScan Ihr Freund. Es ist nützlich, wenn sich Ihre Website in einem privaten Netzwerk oder Intranet befindet, wo das Internet nicht verfügbar ist. Oder wenn Sie mehrere Websites zu verschiedenen Zeiten testen möchten
WPScan ist eine kostenlose Software, die Ihnen hilft, sicherheitsrelevante Probleme auf Ihrer WordPress-Website zu erkennen. Es erledigt mehrere Dinge wie:
- Prüfen, ob die Website eine anfällige WP-Version verwendet
- Prüfen Sie, ob ein Theme und ein Plugin auf dem neuesten Stand sind oder als angreifbar bekannt sind
- Timthumbs prüfen
- Prüfen, ob die Konfiguration gesichert ist, DB-Exporte
- Brute-Force-Angriff
und vieles mehr..
Es gibt mehrere Möglichkeiten, WPScan zu verwenden
- Durch die Installation auf Linux-Servern
- Verwendung von Docker
- Mit einer vorinstallierten Linux-Distribution wie Kali Linux, BackBox, Pentoo, BlackArch, etc.
- Online-Version
Verwendung auf CentOS
Die folgenden Schritte wurden unter CentOS 7.x getestet
- Melden Sie sich bei CentOS mit root an
- Aktualisieren Sie das Repository
yum update -y
- Installieren Sie das neueste Ruby und seine Abhängigkeiten
yum -y install curl gpg gcc gcc-c make patch autoconf automake bison libffi-devel libtool patch readline-devel sqlite-devel zlib-devel openssl-devel && gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB && curl -sSL https://get.rvm.io | bash -s stable --ruby
- Installieren Sie Ruby Nokogiri
yum -y install rubygem-nokogiri
- Starten Sie den Server neu und installieren Sie dann WPScan mit dem Befehl
gem
gem install wpscan
Die Installation dauert ein paar Sekunden, und wenn sie abgeschlossen ist, sollten Sie etwas wie das hier sehen
Die
Installation der Dokumentation für ffi, get_process_mem, mini_portile2, nokogiri, concurrent-ruby, i18n, thread_safe, tzinfo, zeitwerk, activesupport, public_suffix, addressable, opt_parse_validator, ruby-progressbar, ethon, typhoeus, yajl-ruby, sys-proctable, cms_scanner, wpscan ist nach 32 Sekunden abgeschlossen
20 gems installiert
WPScan ist nun installiert und einsatzbereit. Führen Sie wpscan
aus und Sie sollten sehen, dass das Ergebnis wie folgt aussieht
[root@lab ~]# wpscan
Eine der folgenden Optionen ist erforderlich: url, update, help, hh, version
Bitte verwenden Sie --help/-h für die Liste der verfügbaren Optionen.
[root@lab ~]#
Hier ist die Ausgabe eines Tests der Website
[root@lab ~]# wpscan --url https://geekflaresg.com
_______________________________________________________________
__ _______ _____
/ / __ / ____|
/ / /| |__) | (___ ___ __ _ __ ®
/ / / | ___/ ___ / __|/ _` | '_
/ / | | ____) | (__| (_| | | | |
/ / |_| |_____/ ___|__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.7.6
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
[ ] URL: https://geekflaresg.com/
[ ] Gestartet: Wed Jan 8 21:14:16 2020
Interessante(r) Befund(e):
[ ] https://geekflaresg.com/
| Interessante Einträge:
| - Server: nginx
| - X-Cache-Enabled: True
| - Host-Header: 5d77dd967d63c3104bced1db0cace49c
| - X-Proxy-Cache: MISS
| Gefunden von: Headers (Passive Detection)
| Confidence: 100%
[ ] https://geekflaresg.com/robots.txt
| Interessante Einträge:
| - /wp-admin/
| - /wp-admin/admin-ajax.php
| Gefunden von: Robots Txt (Aggressive Detection)
| Confidence: 100%
[ ] https://geekflaresg.com/xmlrpc.php
| Gefunden von: Direct Access (Aggressive Erkennung)
| Konfidenz: 100%
| Referenzen:
| - http://codex.wordpress.org/XML-RPC_Pingback_API
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner
| - https://www.rapid7.com/db/modules/auxiliary/dos/http/wordpress_xmlrpc_dos
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_xmlrpc_login
| - https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_pingback_access
[ ] https://geekflaresg.com/readme.html
| Gefunden von: Direct Access (Aggressive Detection)
| Konfidenz: 100%
[ ] https://geekflaresg.com/wp-cron.php
| Gefunden von: Direct Access (Aggressive Detection)
| Konfidenz: 60%
| Referenzen:
| - https://www.iplocation.net/defend-wordpress-from-ddos
| - https://github.com/wpscanteam/wpscan/issues/1299
[ ] WordPress Version 5.3.2 identifiziert (Neueste, veröffentlicht am 2019-12-18).
| Gefunden von: Rss Generator (Passive Detection)
| - https://geekflaresg.com/feed/, https://wordpress.org/?v=5.3.2
| - https://geekflaresg.com/comments/feed/, https://wordpress.org/?v=5.3.2
[ ] WordPress theme in use: twentyseventeen
| Location: https://geekflaresg.com/wp-content/themes/twentyseventeen/
| Last Updated: 2019-05-07T00:00:00.000Z
| Readme: https://geekflaresg.com/wp-content/themes/twentyseventeen/README.txt
| [!] Die Version ist veraltet, die neueste Version ist 2.2
| Style URL: https://geekflaresg.com/wp-content/themes/twentyseventeen/style.css
| Style Name: Twenty Seventeen
| Style URI: https://wordpress.org/themes/twentyseventeen/
| Beschreibung: Twenty Seventeen erweckt Ihre Website mit Header-Videos und eindrucksvollen Featured Images zum Leben. Mit einem Fo...
| Author: the WordPress team
| Author URI: https://wordpress.org/
|
| Found By: Urls In Homepage (Passive Detection)
| Bestätigt durch: Urls In 404 Page (Passive Detection)
|
| Version: 2.1 (80% Vertrauen)
| Gefunden von: Style (Passive Erkennung)
| - https://geekflaresg.com/wp-content/themes/twentyseventeen/style.css, Match: 'Version: 2.1'
[ ] Enumerating All Plugins (via Passive Methoden)
<x>[i]</x> No plugins Found.
[ ] Enumerating Config Backups (via Passive und Aggressive Methoden)
Checking Config Backups - Time: 00:00:01 <===================================================================================================> (21 / 21) 100.00% Zeit: 00:00:01
<x>[i]</x> Keine Config Backups gefunden.
[!] Kein WPVulnDB API Token angegeben, daher wurden keine Schwachstellendaten ausgegeben.
[!] Sie können ein kostenloses API Token mit 50 täglichen Anfragen erhalten, indem Sie sich unter https://wpvulndb.com/users/sign_up registrieren.
[ ] Beendet: Wed Jan 8 21:14:28 2020
[ ] Erledigte Anfragen: 51
[ ] Zwischengespeicherte Anfragen: 7
[ ] Gesendete Daten: 9.52 KB
[ ] Empfangene Daten: 369.97 KB
[ ] Verwendeter Speicher:
202.
898 MB
[ ] Verstrichene Zeit: 00:00:12
[root@lab ~]#
Hinweis: Wenn Sie Daten über Sicherheitslücken in der Ausgabe benötigen, müssen Sie deren API verwenden
Wenn Sie daran interessiert sind, bestimmte Metriken zu testen, sehen Sie in der Hilfe nach, indem Sie wpscan mit der Syntax --help
ausführen
[root@lab ~]# wpscan --hh
_______________________________________________________________
__ _______ _____
/ / __ / ____|
/ / /| |__) | (___ ___ __ _ __ ®
/ / / | ___/ ___ / __|/ _` | '_
/ / | | ____) | (__| (_| | | | |
/ / |_| |_____/ ___|__,_|_| |_|
WordPress Security Scanner by the WPScan Team
Version 3.7.6
Sponsored by Automattic - https://automattic.com/
@_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________
Verwendung: wpscan [options]
--url URL Die URL des zu überprüfenden Blogs
Erlaubte Protokolle: http, https
Standardprotokoll, wenn keines angegeben wird: http
Diese Option ist obligatorisch, es sei denn, update oder help oder hh oder version wird/werden angegeben
-h, --help Zeigt die einfache Hilfe an und beendet
--hh Zeigt die vollständige Hilfe an und beendet
--version Zeigt die Version an und beendet
--ignore-main-redirect Ignoriert die Hauptumleitung (falls vorhanden) und scannt die Ziel-URL
-v, --verbose Ausführlicher Modus
--[no-]banner Ob das Banner angezeigt werden soll oder nicht
Standard: true
--max-scan-duration SECONDS Abbruch des Scans, wenn er die angegebene Zeit in Sekunden überschreitet
-o, --output FILE Ausgabe in DATEI
-f, --format FORMAT Ausgabe der Ergebnisse im angegebenen Format
Verfügbare Optionen: cli-no-colour, cli-no-color, cli, json
--detection-mode MODE Standardwert: mixed
Verfügbare Optionen: mixed, passive, aggressive
--scope DOMAINS Durch Kommata getrennte (Unter-)Domänen, die in scope berücksichtigt werden.
Platzhalter sind in der Liste der gültigen Domains erlaubt, z.B: *.target.tld
Trennzeichen, das zwischen den Werten zu verwenden ist: ','
--user-agent, --ua VALUE
--headers HEADERS Zusätzliche Header, die in Anfragen angehängt werden
Trennzeichen zwischen den Headern: '; '
Beispiele: 'X-Forwarded-For: 127.0.0.1', 'X-Forwarded-For: 127.0.0.1; Another: aaa'
--vhost VALUE Der virtuelle Host (Host-Header), der in Anfragen verwendet werden soll
--random-user-agent, --rua Verwenden Sie für jeden Scan einen zufälligen Benutzer-Agenten
--user-agents-list FILE-PATH Liste der Agenten, die mit --random-user-agent verwendet werden sollen
Standard: /usr/local/rvm/gems/ruby-2.6.3/gems/cms_scanner-0.8.1/app/user_agents.txt
--http-auth login:password
-t, --max-threads VALUE Die maximal zu verwendenden Threads
Standardwert: 5
--throttle MilliSeconds Millisekunden Wartezeit vor einer weiteren Webanfrage. Falls verwendet, wird die maximale Anzahl der Threads auf 1 gesetzt.
--request-timeout SECONDS Der Anfrage-Timeout in Sekunden
Standard: 60
--connect-timeout SECONDS Der Verbindungs-Timeout in Sekunden
Standard: 30
--disable-tls-checks Deaktiviert die SSL/TLS-Zertifikatsüberprüfung und das Downgrade auf TLS1.0 (erfordert cURL 7.66 für letzteres)
--proxy protocol://IP:port Unterstützte Protokolle hängen vom installierten <a href="https://geekflare.com/proxy-with-curl-and-wget/">cURL</a> ab
--proxy-auth login:password
--cookie-string COOKIE Cookie-String zur Verwendung in Anfragen, Format: cookie1=value1[; cookie2=value2]
--cookie-jar FILE-PATH Datei zum Lesen und Schreiben von Cookies
Voreinstellung: /tmp/wpscan/cookie_jar.txt
--cache-ttl TIME_TO_LIVE Die Lebenszeit des Caches in Sekunden
Standard: 600
--clear-cache Löscht den Cache vor dem Scan
--cache-dir PATH Standard: /tmp/wpscan/cache
--server SERVER Erzwingt das Laden des mitgelieferten Servermoduls
Verfügbare Auswahlmöglichkeiten: apache, iis, nginx
--force Nicht prüfen, ob auf dem Ziel WordPress läuft
--[no-]update Ob die Datenbank aktualisiert werden soll oder nicht
--api-token TOKEN Das WPVulnDB API Token zur Anzeige von Schwachstellendaten
--wp-content-dir DIR Das wp-content Verzeichnis, wenn benutzerdefiniert oder nicht erkannt, z.B. "wp-content"
--wp-plugins-dir DIR Das Plugins-Verzeichnis, wenn benutzerdefiniert oder nicht erkannt, z.B. "wp-content/plugins"
--interesting-findings-detection MODE Verwenden Sie den mitgelieferten Modus für die Erkennung interessanter Ergebnisse.
Verfügbare Optionen: gemischt, passiv, aggressiv
--wp-version-all Überprüfen Sie alle Versionsstandorte
--wp-version-detection MODE Verwenden Sie den mitgelieferten Modus für die Erkennung der WordPress-Version anstelle des globalen (--detection-mode) Modus.
Verfügbare Optionen: gemischt, passiv, aggressiv
--main-theme-detection MODE Verwenden Sie den mitgelieferten Modus für die Erkennung des Hauptthemas anstelle des globalen (--detection-mode) Modus.
Verfügbare Auswahlmöglichkeiten: gemischt, passiv, aggressiv
-e, --enumerate [OPTS] Aufzählungsprozess
Verfügbare Auswahlmöglichkeiten:
vp Anfällige Plugins
ap Alle Plugins
p Beliebte Plugins
vt Anfällige Themes
at Alle Themes
t Beliebte Themes
tt Timthumbs
cb Backups der Konfiguration xml- '-'
Wert, wenn kein Argument angegeben wird: 1-10
m Bereich der Medien-IDs. z.B. m1-15
Hinweis: Die Permalink-Einstellung muss auf "Plain" gesetzt sein, damit diese erkannt werden
Zu verwendendes Bereichstrennzeichen: '-'
Wert, wenn kein Argument angegeben wird: 1-100
Zwischen den Werten zu verwendendes Trennzeichen: ','
Standard: All Plugins, Config Backups
Wert, wenn kein Argument angegeben wird: vp,vt,tt,cb,dbe,u,m
Inkompatible Auswahlmöglichkeiten (nur eine von jeder Gruppe/jeden Gruppen kann verwendet werden):
- vp, ap, p
- vt, at, t
--exclude-content-based REGEXP_OR_STRING Schließt alle Antworten aus, die mit dem Regexp übereinstimmen (Groß-/Kleinschreibung wird nicht berücksichtigt), während Teilen der Aufzählung.
Sowohl der Header als auch der Body werden überprüft. Regexp-Begrenzer sind nicht erforderlich.
--plugins-list LIST Liste der aufzuzählenden Plugins
Beispiele: 'a1', 'a1,a2,a3', '/tmp/a.txt'
--plugins-detection MODE Verwenden Sie den angegebenen Modus zur Aufzählung der Plugins anstelle des globalen (--detection-mode) Modus.
Voreinstellung: passiv
Verfügbare Optionen: gemischt, passiv, aggressiv
--plugins-version-all Überprüfen Sie alle Plugin-Versionen entsprechend dem gewählten Modus (--detection-mode, --plugins-detection und --plugins-version-detection)
--plugins-version-detection MODE Verwenden Sie den angegebenen Modus, um die Plugin-Versionen anstelle der Modi --detection-mode oder --plugins-detection zu überprüfen.
Standardwert: mixed
Verfügbare Optionen: mixed, passive, aggressive
--plugins-threshold THRESHOLD Erzeugt einen Fehler, wenn die Anzahl der erkannten Plugins über bekannte Orte den Schwellenwert erreicht. Setzen Sie den Wert auf 0, um den Schwellenwert zu ignorieren.
Standardwert: 100
--themes-list LIST Liste der Themen, die aufgezählt werden sollen
Beispiele: 'a1', 'a1,a2,a3', '/tmp/a.txt'
--themes-detection MODE Verwenden Sie den angegebenen Modus für die Aufzählung der Themes anstelle des globalen Modus (--detection-mode).
Verfügbare Optionen: gemischt, passiv, aggressiv
--themes-version-all Überprüfen Sie alle Themes-Versionen entsprechend dem gewählten Modus (--detection-mode, --themes-detection und --themes-version-detection)
--themes-version-detection MODE Verwenden Sie den angegebenen Modus, um Themes-Versionen anstelle der Modi --detection-mode oder --themes-detection zu überprüfen.
Verfügbare Optionen: gemischt, passiv, aggressiv
--themes-threshold THRESHOLD Erzeugt einen Fehler, wenn die Anzahl der erkannten Themes über bekannte Orte den Schwellenwert erreicht. Setzen Sie den Wert auf 0, um den Schwellenwert zu ignorieren.
Voreinstellung: 20
--timthumbs-list FILE-PATH Liste der zu verwendenden timthumbs-Speicherorte
Voreinstellung: /root/.wpscan/db/timthumbs-v3.txt
--timthumbs-detection MODE Verwenden Sie den angegebenen Modus zum Aufzählen von Timthumbs anstelle des globalen Modus (--detection-mode).
Verfügbare Optionen: gemischt, passiv, aggressiv
--config-backups-list FILE-PATH Liste der zu verwendenden Dateinamen der Konfigurations-Backups
Standard: /root/.wpscan/db/config_backups.txt
--config-backups-detection MODE Verwenden Sie den mitgelieferten Modus zum Aufzählen von Konfigurations-Backups anstelle des globalen (--detection-mode) Modus.
Verfügbare Optionen: gemischt, passiv, aggressiv
--db-exports-list FILE-PATH Liste der zu verwendenden Pfade für DB-Exporte
Standard: /root/.wpscan/db/db_exports.txt
--db-exports-detection MODE Verwenden Sie den angegebenen Modus, um DB-Exporte aufzuzählen, anstelle des globalen (--detection-mode) Modus.
Verfügbare Optionen: gemischt, passiv, aggressiv
--medias-detection MODE Verwenden Sie den angegebenen Modus, um Medias aufzuzählen, anstelle des globalen (--detection-mode) Modus.
Verfügbare Optionen: gemischt, passiv, aggressiv
--users-list LIST Liste der Benutzer, die während der Benutzeraufzählung anhand der Login-Fehlermeldungen überprüft werden sollen
Beispiele: 'a1', 'a1,a2,a3', '/tmp/a.txt'
--users-detection MODE Verwenden Sie den angegebenen Modus für die Aufzählung der Benutzer anstelle des globalen Modus (--detection-mode).
Verfügbare Optionen: gemischt, passiv, aggressiv
-P, --passwords FILE-PATH Liste der Passwörter, die während des Passwortangriffs verwendet werden sollen.
Wenn die Option --username/s nicht angegeben wird, wird eine Benutzeraufzählung durchgeführt.
-U, --usernames LIST Liste der Benutzernamen, die während des Passwortangriffs verwendet werden sollen.
Beispiele: 'a1', 'a1,a2,a3', '/tmp/a.txt'
--multicall-max-passwords MAX_PWD Maximale Anzahl von Passwörtern, die per Anfrage mit XMLRPC-Multicall gesendet werden
Voreinstellung: 500
--password-attack ATTACK Erzwingt die Verwendung des übergebenen Angriffs, anstatt automatisch einen zu bestimmen.
Verfügbare Auswahlmöglichkeiten: wp-login, xmlrpc, xmlrpc-multicall
--stealthy Alias für --random-user-agent --detection-mode passive --plugins-version-detection passive
[root@lab ~]#
Verwendung von WPScan unter Kali Linux
Das Schöne an der Verwendung von Kali Linux ist, dass Sie nichts installieren müssen. WPScan ist bereits vorinstalliert
Lassen Sie uns herausfinden, wie Sie den Scanner ausführen
- Melden Sie sich bei Kali Linux mit root an und öffnen Sie das Terminal
- Starten Sie den Scan mit dem Befehl
wpscan
wpscan --url https://mysite.com
Docker verwenden
Sind Sie ein Docker-Fan?
Warum nicht, es ist ganz einfach, damit anzufangen. Stellen Sie sicher, dass Sie Docker installiert haben
- WPScan Docker-Image ziehen
docker pull wpscanteam/wpscan
- Sobald Sie das Image gezogen haben, führen Sie es wie unten beschrieben aus.
docker run -it --rm wpscanteam/wpscan --url https://example.com
Einfach?
WPScan betriebener Online-Scanner
Sie können die folgenden von WPScan unterstützten Tools nutzen
Geekflare
Mit dem Geekflare WordPress Security Scanner können Sie schnell herausfinden, ob eine bestimmte WordPress-Website eine anfällige Core-Version, ein Theme, ein Plugin usw. hat
Zusätzlich zu den WPScan-Metriken prüft er auch Folgendes
- Ist die Verwaltungskonsole offengelegt?
- Wird sie von Google als sicher eingestuft
- Erreichbar über HTTPS
- Sind die Front-End-JavaScript-Bibliotheken verwundbar?
Sie brauchen sich nicht zu registrieren; Sie können den Test bei Bedarf KOSTENLOS durchführen
Pentest-Tools
Mit einem Tool von Pentest-Tools können Sie Ihre WP-Website auf Abruf testen und einen Bericht erstellen
Wie geht’s weiter?
Gut gemacht! Wenn Ihre Website nicht anfällig ist. Wenn doch, dann arbeiten Sie an diesen Risikopunkten. Wenn Sie sich nicht sicher sind, wie Sie diese abschwächen können, sollten Sie professionelle Hilfe in Anspruch nehmen.