WPScan est un scanner de vulnérabilité WordPress qui peut être utilisé pour analyser les installations WordPress à distance afin de détecter les problèmes de sécurité.

  • La version de WordPress installée et les éventuelles vulnérabilités associées
  • Quels plugins sont installés et toutes les vulnérabilités associées
  • Quels thèmes sont installés et toutes les vulnérabilités associées
  • Énumération du nom d’utilisateur
  • Utilisateurs avec des mots de passe faibles via force brute de mot de passe
    Fichiers wp-config.php sauvegardés et accessibles au public
  • Dumps de base de données pouvant être accessibles au public
    Si les journaux d’erreurs sont exposés par les plugins
  • Énumération des fichiers multimédias
  • Fichiers Timthumb vulnérables
  • Si le fichier readme WordPress est présent
  • Si WP-Cron est activé
  • Si l’enregistrement de l’utilisateur est activé
  • Divulgation du chemin complet
  • Télécharger la liste du répertoire
  • Et beaucoup plus…

Lors de l’énumération de la version WordPress, des plugins installés ou des thèmes installés, vous pouvez utiliser trois « modes » différents, qui sont :

  • passif
  • agressif
  • mixte

Si vous voulez le plus de résultats, utilisez le mode « mixte« . Cependant, si vous craignez que le serveur ne puisse pas gérer un grand nombre de requêtes, utilisez le mode « passif« . Le mode par défaut est « mixte« , à l’exception de l’énumération des plugins, qui est « passive« . Vous devrez remplacer manuellement le mode de détection du plugin, si vous souhaitez utiliser autre chose que le mode par défaut, avec  –plugins-detectionoption.

WPScan peut énumérer diverses choses à partir d’une application WordPress distante, telles que des plugins, des thèmes, des noms d’utilisateur, des fichiers sauvegardés, des fichiers wp-config.php, des fichiers Timthumb, des exportations de bases de données, etc. Pour utiliser les capacités d’énumération de WPScan, fournissez l’ -eoption.

Les options d’énumération suivantes existent :

  • vp (Plugins vulnérables)
  • ap (Tous les plugins)
  • p (Plugins populaires)
  • vt (Thèmes vulnérables)
  • at (Tous les thèmes)
  • t (Thèmes populaires)
  • tt (Petits pouces)
  • cb (Sauvegardes de configuration)
  • dbe (Exportations DB)
  • u (Plage d’ID utilisateur. Par exemple : u1-5)
  • m (Plage d’ID de média. Par exemple, m1-15)

Si aucune option n’est fournie à l’ -eindicateur, la valeur par défaut sera :vp,vt,tt,cb,dbe,u,m

root@kali:~# wpscan  –help
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | ‘_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

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

Help :

Some values are settable in a config file, see the example.conf.json

–update                            Update to the database to the latest version.
–url       | -u <target url>       The WordPress URL/domain to scan.
–force     | -f                    Forces WPScan to not check if the remote site is running WordPress.
–enumerate | -e [option(s)]        Enumeration.
  option :
    u        usernames from id 1 to 10
    u[10-20] usernames from id 10 to 20 (you must write [] chars)
    p        plugins
    vp       only vulnerable plugins
    ap       all plugins (can take a long time)
    tt       timthumbs
    t        themes
    vt       only vulnerable themes
    at       all themes (can take a long time)
  Multiple values are allowed : « -e tt,p » will enumerate timthumbs and plugins
  If no option is supplied, the default is « vt,tt,u,vp »

–exclude-content-based « <regexp or string> »
                                    Used with the enumeration option, will exclude all occurrences based on the regexp or string supplied.
                                    You do not need to provide the regexp delimiters, but you must write the quotes (simple or double).
–config-file  | -c <config file>   Use the specified config file, see the example.conf.json.
–user-agent   | -a <User-Agent>    Use the specified User-Agent.
–cookie <String>                   String to read cookies from.
–random-agent | -r                 Use a random User-Agent.
–follow-redirection                If the target url has a redirection, it will be followed without asking if you wanted to do so or not
–batch                             Never ask for user input, use the default behaviour.
–no-color                          Do not use colors in the output.
–wp-content-dir <wp content dir>   WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it.
                                    Subdirectories are allowed.
–wp-plugins-dir <wp plugins dir>   Same thing than –wp-content-dir but for the plugins directory.
                                    If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed
–proxy <[protocol://]host:port>    Supply a proxy. HTTP, SOCKS4 SOCKS4A and SOCKS5 are supported.
                                    If no protocol is given (format host:port), HTTP will be used.
–proxy-auth <username:password>    Supply the proxy login credentials.
–basic-auth <username:password>    Set the HTTP Basic authentication.
–wordlist | -w <wordlist>          Supply a wordlist for the password brute forcer.
–username | -U <username>          Only brute force the supplied username.
–usernames     <path-to-file>      Only brute force the usernames from the file.
–threads  | -t <number of threads> The number of threads to use when multi-threading requests.
–cache-ttl       <cache-ttl>       Typhoeus cache TTL.
–request-timeout <request-timeout> Request Timeout.
–connect-timeout <connect-timeout> Connect Timeout.
–max-threads     <max-threads>     Maximum Threads.
–help     | -h                     This help screen.
–verbose  | -v                     Verbose output.
–version                           Output the current version and exit.


Examples :

-Further help …
ruby ./wpscan.rb –help

-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

-Update the DB …
ruby ./wpscan.rb –update

-Debug output …
ruby ./wpscan.rb –url www.example.com –debug-output 2>debug.log

See README for further information.

root@kali:~# wpscan –url http://wordpress.local –enumerate p
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | ‘_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

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

[+] URL: http://wordpress.local/
[+] Started: Mon Jan 12 14:07:40 2015

[+] robots.txt available under: ‘http://wordpress.local/robots.txt’
[+] Interesting entry from robots.txt: http://wordpress.local/search
[+] Interesting entry from robots.txt: http://wordpress.local/support/search.php
[+] Interesting entry from robots.txt: http://wordpress.local/extend/plugins/search.php
[+] Interesting entry from robots.txt: http://wordpress.local/plugins/search.php
[+] Interesting entry from robots.txt: http://wordpress.local/extend/themes/search.php
[+] Interesting entry from robots.txt: http://wordpress.local/themes/search.php
[+] Interesting entry from robots.txt: http://wordpress.local/support/rss
[+] Interesting entry from robots.txt: http://wordpress.local/archive/
[+] Interesting header: SERVER: nginx
[+] Interesting header: X-FRAME-OPTIONS: SAMEORIGIN
[+] Interesting header: X-NC: HIT lax 249
[+] XML-RPC Interface available under: http://wordpress.local/xmlrpc.php

[+] WordPress version 4.2-alpha-31168 identified from rss generator

[+] Enumerating installed plugins  …

   Time: 00:00:35 <======================================================> (2166 / 2166) 100.00% Time: 00:00:35

[+] We found 2166 plugins:

Pour contourner certains WAF simples (Web Application Firewall), vous pouvez essayer :

--random-user-agent option.

Si WPScan ne fonctionne pas comme prévu, vous pouvez utiliser  --proxy option et utiliser un proxy Web pour inspecter les requêtes HTTP de WPScan et les réponses HTTP du serveur distant. Ceci est utile lorsque vous ne savez pas pourquoi vous obtenez des faux positifs ou des faux négatifs.

Voici un ensemble de commandes courantes qui vous aideront à démarrer rapidement.

REMARQUE : obtenez votre jeton d’API sur wpscan.com si vous souhaitez également que les vulnérabilités associées au plug-in détecté s’affichent.

Énumérer tous les plugins avec des vulnérabilités connues

wpscan --url example.com -e vp --plugins-detection mixed --api-token YOUR_TOKEN

Énumérer tous les plugins de notre base de données (cela peut prendre beaucoup de temps)

wpscan --url example.com -e ap --plugins-detection mixed --api-token YOUR_TOKEN

Attaque par force brute par mot de passe

wpscan --url example.com -e u --passwords /path/to/password_file.txt

Le site Web distant est opérationnel, mais ne semble pas exécuter WordPress

Si vous obtenez l’ Scan Aborted: The remote website is up, but does not seem to be running WordPress.erreur, cela signifie que pour une raison quelconque, WPScan n’a pas pensé que le site que vous essayez de numériser est en fait WordPress. Si vous pensez que WPScan est erroné, vous pouvez fournir l’ --forceoption pour forcer WPScan à analyser le site malgré tout. Vous devrez peut-être également définir d’autres options dans ce cas, telles que --wp-content-diret --wp-plugins-dir.

Redirections

Par défaut, WPScan suivra dans les redirections de portée, sauf si l’ --ignore-main-redirectoption est donnée.

  • https://blog.wpscan.com/
  •  https://twitter.com/_wpscan_