WPScan – Sicherheitsscanner für WordPress

Gestern Abend bin ich auf das Tool WPScan gestoßen. Das möchte ich euch natürlich nicht vorenthalten und ein wenig vorstellen.

Was kann das Tool?

Mit diesem Tool kann man einige Informationen über eine WordPress Installation herausfinden. Dazu gehören:

  • Benutzernamen
  • Plugins
  • Themes
  • WordPressversion

Es ermöglicht ebenfalls das Durchführen von Brute Force Attacken mit Hilfe einer Wörterliste und einem angegebenen Benutzernamen. 

WPScan installieren

Man benötigt für das Tool eine Version von ruby (am Besten 2.0.0). Wie man ruby installiert, möchte ich an dieser Stelle nicht erklären.  Die entsprechenden Abhängigkeiten lassen sich einfach per apt installieren:

sudo apt-get install libcurl4-gnutls-dev libopenssl-ruby libxml2 libxml2-dev libxslt1-dev ruby-dev git

Danach clonen wir das git-Repository und wechseln in das neue Verzeichnis:

git clone https://github.com/wpscanteam/wpscan.git
cd wpscan

Zuletzt müssen wir nur noch die entsprechende Umgebung erstellen:

sudo gem install bundler && bundle install --without test development

Es bietet sich nach der Installation an, ein Update der Plugin/Theme-Dateien durchzuführen. Dies können wir mit Hilfe des wpstools.rb machen:

ruby wpstools.rb --generate-all

Dies kann einige Minuten dauern.

WPScan nutzen

Die Hilfe sagt eigentlich schon alles zur Nutzung:

-Do 'non-intrusive' checks ...
ruby wpscan.rb --url www.example.com

-Do wordlist password brute force on enumerated users using 50 threads ...
ruby wpscan.rb --url www.example.com --wordlist darkc0de.lst --threads 50

-Do wordlist password brute force on the 'admin' username only ...
ruby wpscan.rb --url www.example.com --wordlist darkc0de.lst --username admin

-Enumerate installed plugins ...
ruby wpscan.rb --url www.example.com --enumerate p

-Enumerate installed themes ...
ruby wpscan.rb --url www.example.com --enumerate t

-Enumerate users ...
ruby wpscan.rb --url www.example.com --enumerate u

-Enumerate installed timthumbs ...
ruby wpscan.rb --url www.example.com --enumerate tt

-Use a HTTP proxy ...
ruby wpscan.rb --url www.example.com --proxy 127.0.0.1:8118

-Use a SOCKS5 proxy ... (cURL >= v7.21.7 needed)
ruby wpscan.rb --url www.example.com --proxy socks5://127.0.0.1:9000

-Use custom content directory ...
ruby wpscan.rb -u www.example.com --wp-content-dir custom-content

-Use custom plugins directory ...
ruby wpscan.rb -u www.example.com --wp-plugins-dir wp-content/custom-plugins

Je nach gewünschter Aktion muss man die entsprechenden Optionen nutzen. Ruft man WPScan nur mit der URL auf, dann bekommt man beispielsweise folgende Ausgabe:

| URL: http://blogbasis.net/
| Started on Tue Mar 26 13:36:05 2013

[+] robots.txt available under 'http://blogbasis.net/robots.txt'
[+] This site seems to be a multisite (http://codex.wordpress.org/Glossary#Multisite)
[+] XML-RPC Interface available under http://blogbasis.net/xmlrpc.php
[+] WordPress version 3.5.1 identified from advanced fingerprinting

[+] The WordPress theme in use is whitelake v1.0

 | Name: whitelake v1.0
 | Location: http://blogbasis.net/wp-content/themes/whitelake/
 | WordPress: http://wordpress.org/extend/themes/whitelake/

[+] Enumerating plugins from passive detection ... 
2 plugins found :

 | Name: social-counter-widget v0.8.1
 | Location: http://blogbasis.net/wp-content/plugins/social-counter-widget/
 | WordPress: http://wordpress.org/extend/plugins/social-counter-widget/
 | Readme: http://blogbasis.net/wp-content/plugins/social-counter-widget/readme.txt

 | Name: wp-highlightjs v0.2.2
 | Location: http://blogbasis.net/wp-content/plugins/wp-highlightjs/
 | WordPress: http://wordpress.org/extend/plugins/wp-highlightjs/
 | Readme: http://blogbasis.net/wp-content/plugins/wp-highlightjs/readme.txt

[+] Finished at Tue Mar 26 13:36:11 2013
[+] Elapsed time: 00:00:05

WPScan führt eine Liste mit bekannten Sicherheitslücken in (veralteten) Plugins. Wird ein Plugin oder Theme entdeckt, welches Sicherheitslücken aufweist, so zeigt dies WPScan an. Es wird in einem solchen Fall eine URL zum Advisory ausgegeben.

Ich werde hier die weiteren Nutzungsmöglichkeiten nicht aufführen, da diese immer nach dem gleichen Schema ablaufen: Man startet wpscan.rb mit den gewünschten Parametern und es liefert den entsprechenden Output.

Fazit

WPScan ist ein nützliches Tool, wenn man Informationen über eine WordPress-Installation herausfinden möchte. Dadurch, dass es zuverlässig die Informationen liefert, welche man haben möchte, seien es Plugins, Benutzernamen oder die WordPressversion, kann man es zur Absicherung der eigenen WordPressinstallation nutzen.