Compilare WPScan 2.9.4-dev su Debian Jessie

Per chi come me si ritrova WPScan alla versione 2.9.2 e vuole aggiornarla all’ultima versione attuale, quindi alla 2.9.4-dev (anche se l’ultima versione stabile è la 2.9.3), e quindi con nuove funzionalità, lo può fare con meno sbattimenti rispetto a prima per quanto riguarda la versione di Ruby, la versione consigliata dal team di WPScan è l’ultima stabile, cioè la 2.4.2.

Mi riferisco a questo articolo, che oramai è da considerare obsoleto: https://www.freenixsecurity.net/it/2017/04/14/wpscan-come-trovare-vulnerabilita-in-wordpress/

La guida in questione è ancora su Debian Jessie, perchè su Stretch sto ancora risolvendo dei piccoli grandi problemi in modo da poter sfornare le distro. L’unica distro derivata da Debian Stretch attualmente è SparkyLinux.

Il mio obiettivo su Stretch è quello di riportare i nomi dei device di rete com’erano una volta e gestirli esattamente come prima, con il famoso file /etc/udev/rules.d/70-persistent-net.rules che eliminandolo resettava i nomi dei device di rete, e ci permetteva di passare la nostra distro customizzata da un PC (o un Raspberry Pi) ad un altro rigenerando e riattivando le unità di rete come se niente fosse. Ma in questo parleremo in un altro articolo, anche perchè ci sto ancora lavorando.

Prima aggiorniamo il sistema, non fa mai male. Ho un amico che dice sempre che non gli funziona niente, viene a casa mia e scopro che ha oltre 250 aggiornamenti da fare, aggiorniamo il sistema e quasi sempre tutti i problemi svaniscono, vabbè, lasciamo stare, digitiamo quindi:

# apt-get update && apt-get dist-upgrade

Per chi ha effettuato l’installazione citata nell’articolo precedente deve prima seguire questi passaggi, liberandosi dei pacchetti ruby2.3, ruby2.3-dev, e dei repository di Ruby provenienti da Ubuntu Trusty, chiavi GPG comprese. (è inutile avere chiavi GPG di Repository inutilizzati)

Iniziamo eliminando i pacchett ruby2.3, ruby2.3-dev e libruby2.3 digitando:

# apt-get remove --purge ruby2.3 ruby2.3-dev libruby2.3

Adesso possiamo eliminare il Repository di Ubuntu Trusty, che, se avete seguito la scritta precedentemente scritta da me, è in /etc/apt/sources.list.d/ruby.list , digitiamo quindi:

# rm /etc/apt/sources.list.d/ruby.list

Finalmente possiamo eliminare la chiave del repository di Ubuntu Trusty digitando:

# apt-key del C3173AA6

Adesso aggiorniamo l’elenco delle chiavi GPG eliminando automaticamente quelle scadute o non valide:

# apt-key update

Adesso aggiorniamo gli indici dei Repository dato che abbiamo eliminato quelli di Ubuntu Trusty:

# apt-get update

Adesso eliminiamo la cartella del vecchio WPScan, nel mio caso è in /home/davenull/ , quindi digitiamo:

# rm -rf /home/davenull/wpscan

Da adesso in poi, per chi sta effettuando una Fresh Install, e quindi non ha mai installato WPScan, può seguire il tutorial.

I requisiti di WPScan 2.9.3 sono questi, ma son gli stessi anche per la 2.9.4-dev:
Ruby >= 2.1.9 – Recommended: 2.4.2
Curl >= 7.21 – Recommended: latest – FYI the 7.29 has a segfault
RubyGems – Recommended: latest
Git

Per quanto riguarda “curl” non preoccupatevi perchè Debian usa sempre versioni stabili dei propri programmi (o quasi, poi vi spiegherò in un altro tutorial.

Per vedere la versione di un programma installato è semplicissimo, ad esempio per “curl” basta digitare:

$ curl --version

e l’output su Debian Jessie sarà:
curl 7.38.0 (x86_64-pc-linux-gnu) libcurl/7.38.0 OpenSSL/1.0.1t zlib/1.2.8 libidn/1.29 libssh2/1.4.3 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API SPNEGO NTLM NTLM_WB SSL libz TLS-SRP

Quindi basta installare il curl dei Repository.

Rubygems (noto anche col nome di gems) è il package manager di Ruby, un pò come “pip” per Python, ma a differenza di pip non vi fa buttare il sangue con le dipendenze, scusate l’espressione ma “pip” mi ha fatto perdere nottate intere per cose assurde.

Rubygems risolve le dipendenze e può aggiornarsi all’ultima versione senza scaricare ne compilare nulla a mano, ed è quello che faremo successivamente con un semplicissimo comando.

Installiamo quindi dai Repository di Debian Jessie le dipendenze di WPScan che è possibile installare, alcune vanno compilate, ma non spaventatevi. Digitiamo quindi:

# apt-get install curl git libcurl4-openssl-dev make zlib1g-dev gawk g++ gcc libreadline6-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config apt-transport-https ruby ruby-dev gpgv2

Adesso avendo installato i pacchetti ruby e ruby-dev, abbiamo a disposizione il suo package manager, RubyGems, detto anche “gems”, ma non è all’ultima versione. Non dobbiamo compilarlo tranquilli, c’è un comando dentro gems che ci permette di portarlo all’ultima versione, digitiamo quindi:

# gem update --system

Ed il gioco è fatto, abbiamo RubyGems alla versione 2.6.13.

Adesso passiamo all’ultima versione di Ruby, e lo installiamo grazie ad un utilissimo strumento da poco inventato chiamato RVM, che sta appunto per Ruby enVironment Manager che serve proprio a questo, ha al suo interno svariate versioni di Ruby. Quindi addio Repository esterni o assurdità del genere.

Installiamo quindi nella home scarichiamo l’installer, la chiave di cifratura di RVM, ed installiamolo:

$ cd
$ mkdir RVM
$ cd RVM
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
$ curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer
$ curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer.asc
$ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
$ gpg2 --verify rvm-installer.asc

La verifica del certificato “asc” potrebbe dare problemi, ma non proccupatevi, il file è attendibile.

Questo è il sito ufficiale di RVM: http://rvm.io/

E qui potete chattare in maniera criptata direttamente con il creatore del programma: https://keybase.io/mpapis

Torniamo a noi, installiamo RVM con l’installer scaricato precedentemente:

$ bash rvm-installer stable
$ source /home/davenull/.rvm/scripts/rvm

In pratica viene installato lato utente, ed è sconsigliata la multiutenza. E’ ancora un programma nuovo e sperimentale, ma molto, molto utile, perchè ci permette di installare qualsiasi versione di Ruby.

Per non avviare l’ultimo comando digitato ogni volta che dobbiamo usare RVM ci conviene aggiungerlo al file bashrc dell’utente digitanto:

$ echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc

Adesso installiamo Ruby 2.4.2 da utente, e digitiamo la password di sudo quando ce la chiede, proprio come fa Rubygems:

$ rvm install 2.4.2

Se volete anche la documentazione di ruby installatela digitando:

$ rvm docs generate-ri

Per impostare Ruby 2.4.2 di default digitiamo:

$ rvm use 2.4.2 --default

Adesso torniamo nella home dell’utente (nel mio caso davenull) e finalmente scarichiamo il Repository di WPScan 2.9.4-dev da git:

$ git clone https://github.com/wpscanteam/wpscan.git
$ cd wpscan
$ gem install bundler

Per chi non lo sapesse bundler è paragonabile a make, da le istruzioni per la compilazione e l’installazione di un programma, in questo caso in Ruby.

E l’ultimo passo lo conosciamo, finalmente installiamo wpscan digitando:

$ bundle install --without test

Per avviare wpscan il comando è sempre il solito. Posizionatevi all’interno della cartella di wpscan e digitate:

$ ruby wpscan.rb

Ed ecco il famoso output:

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

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


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.


[!] No argument supplied

Noterete un pò di opzioni in più rispetto alla versione precedente.

Ah non dimenticatevi di effettuare periodicamente l’update delle vulnerabilità con il comando:

$ ruby wpscan.rb --update

Buon Penetration Testing, e non fate danni!!!

Author: davenull

Ho 28 anni (ad aprile 29) e vengo da Taranto (Puglia, Italia) e sono:

Sistemista/Programmatore Unix (Debian, OpenMediaVault, OpenWrt, FreeBSD, NetBSD, Lineage OS);

Prototipatore con Raspberry Pi.

Esperto di Sicurezza Informatica, scrivo exploit da poco piì di dieci anni, circa quindici;

Esperto di microarchitetture embedded, specialmente bcm63, ar7 ed armhf (6 e 7);

Fondamentalista del Free Software (Free as in Freedom)

Relatore ed organizzatore di svariati Linux Day a Taranto e a Francavilla Fontana (Brindisi);

Sistemista di svariate sale server che ora non vi sto ad elencare;

Co-Founder di JonixLUG: https://www.jonixlug.altervista.org

Founder di FreeNIX Security Labs: https://www.freenixsecurity.net

Collaboratore esterno dell’Associazione Fare Zero Makers: http://www.farezero.org