Pentest che attaccano e difendono le applicazioni Web con bWAPP

bWAPP è un sito Web che è stato sviluppato con vulnerabilità in modo che sia i principianti che gli esperti possano eseguire pratiche di pentesting e di hacking etico. Può essere ospitato su Linux o Windows su Apache o IIS e MySQL. È supportato in WAMP o XAMPP. Un'altra possibilità è quella di utilizzare una macchina virtuale che funzioni per VMware o per VirtualBox.

bWAPP è gratuito e aperto, può essere scaricato in due versioni, una da utilizzare in locale e l'altra da installare in una macchina virtuale. Il sito è sviluppato in PHP e MySQL quindi è multipiattaforma. Scarichiamo install bWAPP in locale, se vogliamo installare in una macchina virtuale il progetto è Bee-Box.

Bee-box è una macchina virtuale Linux con tutto preinstallato. In questo modo non ci resta che esplorare tutte le vulnerabilità bWAPP senza correre il rischio di deturpare il sito bWAPP. Anche con la macchina virtuale possiamo provare ad ottenere l'accesso root.

bWAPP ha più di 100 bug Al fine di indagare e scoprire, copre tutte le principali vulnerabilità Web note, inclusi tutti i rischi per la sicurezza. Il progetto non solo permette di scoprire le vulnerabilità, ma permette anche di trovare la soluzione.

In questo tutorial installeremo la versione Bee-Box di bWAPPPer fare ciò decomprimiamo il file che abbiamo scaricato e creiamo una cartella con molti file vmdk sul nostro server locale. Successivamente creeremo la macchina virtuale assegnando una versione Linux Ubuntu a 32 bit.

Quindi dobbiamo selezionare il file scaricato chiamato bee-box.vdmk

Prima di avviare la macchina virtuale, ricorda che dovremo configurare la rete, lo facciamo da Ambientazione per avere un indirizzo IP e poter accedere alla macchina virtuale da un altro computer.

Facciamo clic su crea e poi su Start, in modo che la macchina virtuale inizi a funzionare, una volta caricata vedremo il desktop.

Successivamente apriremo il terminale per vedere quale IP sta usando il comando ifconfig.

Possiamo vedere che l'IP in questo caso è 192.168.0.14, se testiamo quell'IP sul computer esterno alla macchina virtuale dovremmo essere in grado di accedere al web:

 http://192.168.0.14/bWAPP
E il risultato sarà il seguente:

Quindi possiamo iniziare con la pagina di accesso, per impostazione predefinita l'utente è ape e la password è bug per accedere al pannello di controllo. All'interno del menu Bugs avremo diversi esempi per utilizzare e testare alcune vulnerabilità dalle più semplici alle più complesse. Vediamone un po' vulnerabilità in base al tipo di attacco.

Il le vulnerabilità sono suddivise in categorie o capitoli quali sono le seguenti:

Iniezioni A1Qui sono raggruppate le vulnerabilità di Iniezione HTML, SQL, XSS, XPATH e tutti quelli che hanno a che fare con l'invio di parametri tramite browser.

A2 Interrompi l'autenticazione e le sessioniQui sembra violare captcha e moduli di accesso utilizzando tecniche di sostituzione dell'URL, acquisizione di parametri e utilizzo dell'ID di sessione.

A3 Cross Site Scripting (XSS)Ecco qui le Vulnerabilità relative a XSS che non sono molto pericolosi ma piuttosto fastidiosi.

A4 Oggetti e directory non sicuriQui si tratta modificare i parametri nei collegamenti dal codice prima di inviare il modulo.

A5 Sicurezza e configurazioneQui vedremo alcuni attacchi come DDOS e middle attack, che cercherà di influenzare servizi come la posta e i servizi funzionanti.

A6 Esposizione di dati sensibiliQui vedremo una serie di vulnerabilità che permette i dati del server sono esposti nel browser.

Queste sono alcune delle vulnerabilità, in questo tutorial ci concentreremo sugli attacchi più conosciuti e sulla possibilità di prendere il controllo del server.

1. Iniezione HTML


HTML Reflected Injection è ciò che ti consente di inserire codice HTML in un campo di testo e quindi di visualizzarlo sul web. Selezioniamo il primo metodo Injection by GET, abbiamo due caselle di testo, se inseriamo, ad esempio, un link in ognuna:
 Messaggio urgente | Le tue vendite
Quando invieremo il modulo vedremo di seguito che vengono mostrati entrambi i collegamenti e lo lasceremo in attesa che qualcuno clicchi. Possiamo anche provare il metodo POST.

INGRANDIRE

Un altro problema di non controllare l'input dei dati HTML è che potremmo inviare un modulo facendo credere all'utente che deve accedere o inserire alcuni dati e inviare quei dati a un'altra pagina.

 Sei stato disconnesso. 
Inserisci il tuo nome utente e password per continuare a essere utente:
chiave:

INGRANDIRE

2. SQL Injection


Vediamo un altro attacco come SQL Injection, se cerchiamo BUG per l'opzione SQL Injection (GET/Search), in questa sezione possiamo cercare film, ad esempio Iron Man, risultando nei dati del film.

INGRANDIRE

Quindi possiamo provare a iniettare il codice SQL per verificare se il database è vulnerabile, per questo utilizziamo il seguente codice che restituirà l'elenco dei database se:

 iron man 'union select 1, table_name, 3,4,5,6,7 from INFORMATION_SCHEMA.TABLES dove table_schema = database () -'
Il risultato è l'elenco delle tabelle, quindi il database è vulnerabile:

INGRANDIRE

Sapendo che il database è vulnerabile, possiamo utilizzare alcune tecniche che abbiamo visto nel tutorial SQLMAP, SQL Injection tool e Ethical database hacking, dove raggiungiamo il livello root cercando le chiavi dell'amministratore.

Dalla finestra del terminale scriviamo il seguente comando, utilizziamo la pagina che stiamo cercando per il film poiché ha un parametro che può essere vulnerabile.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --dbs

Ci mostra i database, uno di questi è bWAPP, quindi cercheremo di ottenere l'elenco delle tabelle sapendo che il motore del database è MySQL 5. Per ottenere l'elenco delle tabelle utilizzeremo il seguente comando.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -tables

Possiamo vedere che elenca tutte le tabelle, non solo dal web, ma anche dal sistema, quindi possiamo ottenere i dati dall'amministratore di Linux. Possiamo anche sfruttare la sessione PHP utilizzando Firebug possiamo vedere il numero di sessione, poiché quando si crea un utente o si accede o si genera un contenuto dinamico come una ricerca, la risposta del server creerà una PHPSession.

INGRANDIRE

Usando il comando --utenti e la sessione o con il comando senza sessione potremo vedere gli utenti del sistema.

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --users
Un altro comando di opzione con ID di sessione:
 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" --cookie = "PHPSESSID = e6f734f935bca3bf86013add7ea2e3f9; security_level = 0" --users

Successivamente cercheremo gli utenti del sistema utilizzando il seguente comando:

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" dba --is-dba --privileges --dbs -dump 
Di conseguenza otterremo tabelle in cui è presente una password, una di queste sono gli utenti che hanno i dati dell'amministratore e un'altra sono gli eroi e gli utenti della tabella (utenti) che utilizzeremo per accedere come utenti.

La tabella utenti contiene i dati dell'amministratore del sito web:

Successivamente otterremo la password di root degli utenti che troviamo sopra, per questo usiamo il seguente comando:

 sqlmap -u "http://192.168.0.14/bWAPP/sqli_1.php?title=iron&action=search" -f -b --current-user --is-dba --is-dba --privileges --dbs - scarico
Alla fine dei comandi tramite un attacco di forza bruta, troviamo che la password dell'amministratore di sistema è bug e l'utente è root.

Proveremo da terminale a connetterci tramite ssh alla macchina virtuale per prendere il controllo remoto del computer utilizzando il seguente comando:

 ssh [email protected]
Il risultato utilizzando l'utente root e la password del bug è la connessione con i permessi di amministratore alla macchina virtuale.

Successivamente testiamo se possiamo accedere alla sezione eroi e utenti con i dati ottenuti in precedenza, ad esempio l'utente neo e la password trinity.

Siamo riusciti ad accedere con questi dati utente senza problemi. Se usiamo la tabella utenti possiamo anche accedere.

3. Iniezione HTML / XPATH


Uno degli attacchi meno pensati è attraverso quei browser che consentono la modifica del codice, se cambiamo un collegamento a un sito dannoso, l'utente non se ne accorgerà e la modifica andrà persa quando il web viene aggiornato.

Ad esempio, cambieremo la password e faremo clic con il pulsante destro del mouse per aprire un Inspector o un editor di codice e modificare l'URL change_password.php in http://google.com e chiudere l'editor

INGRANDIRE

Pertanto, quando l'utente fa clic su quel collegamento, verrà reindirizzato a un'altra pagina, è molto inefficace poiché durante l'aggiornamento o la modifica della pagina, il collegamento torna all'originale. Questo è per noi da guardare prima di fare clic su un collegamento che ci porta a un sito Web sicuro o all'interno dello stesso dominio.

4. Iniezione lato server


L'iniezione lato server si verifica quando un sito Web è vulnerabile e consente di immettere comandi da una lingua o dal sistema operativo per eseguire azioni sul server.

Un utente malintenzionato invia un codice dannoso o un comando tramite un campo di testo di un'applicazione Web eseguita dal server Web. Vediamo un esempio che ti permetterà di elencare le directory usando il comando Linux ls, che scriveremo come segue:

 

INGRANDIRE

Il risultato sarà l'elenco di tutte le directory sul server, quindi dobbiamo controllare che non si possano inserire comandi.

INGRANDIRE

Uno degli strumenti che il progetto bWAPP ci propone è ZAP (Zed Attack Proxy), abbiamo visto questo strumento nel tutorial Scansiona una vulnerabilità di un sito web con ZAP, è molto utilizzato per scansionare vulnerabilità ed eseguire test di penetrazione sui siti web. Possiamo scaricare la versione più aggiornata dal seguente link:

SCARICA ZAP

Scegli la versione in base al sistema operativo che abbiamo o una versione multipiattaforma sviluppata in Java. Una volta installato proveremo a scansionare il web bWAPP con ZAP e cercare alcune vulnerabilità.

INGRANDIRE

Quando avviamo ZAP ed eseguiamo una scansione, vedremo che rileva la maggior parte delle vulnerabilità, per definire le regole di scansione possiamo andare al menu Analizza> Regole di scansione e poi facciamo doppio clic su Politica predefinita.

Vediamo in una delle pagine di login ha trovato che il livello utente viene inviato come parametro, in questo caso l'amministratore.

INGRANDIRE

Possiamo anche usare i filtri come abbiamo visto nel tutorial ZAP per fare SQL injection e altri attacchi.

La sicurezza delle applicazioni Web è un aspetto molto importante oltre al buon design e ai contenuti. bWAPP è una piattaforma che ci consentirà di conoscere e testare molte vulnerabilità, quindi applicare tale conoscenza sul nostro sito Web e serve anche affinché specialisti, sviluppatori e studenti possano scoprire e prevenire le vulnerabilità del Web.

bWAPP è ampiamente utilizzato per test di penetrazione di applicazioni Web e progetti di hacking etico. bWAPP copre tutte le principali vulnerabilità web note, compresi tutti i rischi del progetto OWASP Top 10, che raccoglie le vulnerabilità di anno in anno in 10 categorie.

Infine, consigliamo questo articolo con una spiegazione del tipi di attacchi informatici.

wave wave wave wave wave