In questo post cercherò di illustrare come sfruttare una vulnerabilità specifica per compromettere remotamente un web server acquisendo una shell remota.

La vulnerabilità di cui parlo è relativa alla funzionalità di Local File Inclusion, che permette appunto di includere il contenuto di una pagina all’interno di un’altra, tipicamente all’interno di un iframe.

Accade fin troppo spesso che chi sviluppa la web application non si preoccupi di gestire le eccezioni e gli abusi, per questo motivo si creano le condizioni per cui un attacco volto all’abuso di queste funzionalità, possa portare a conseguenze serie.

In questo test useremo due macchine virtuali. La macchina attacker è una Kali linux, mentre la vittima è una macchina metasploitable, ovvero una VM pronta all’uso e intenzionalmente vulnerabile proprio per motivi di test.

Nel mio ambiente virtuale la macchina Kali linux ha come indirizzo IP 192.168.29.131, metre la metasploitable ha come IP 192.168.29.140. Sono quindi collocate all’interno della stessa subnet, questo ci evita eventuali problemi di routing e ci lascia liberi di testare la vulnerabilità.

La macchian metasploitable include al suo interno una piccola web application denominata DVWA (Damn Vulnerable Web Application), che ci consente di verificare in maniera abbastanza veloce il tutto.

Aprendo un browser dalla macchina Kali e puntando all’IP della vittima otterremo questa schermata

clicchiamo su DVWA e autentichiamoci con l’user “admin” e password “password”. Accederemo ad un’interfaccia con un menu che ci permette di selezionare la vulnerabilità che vogliamo testare. Prima di tutto dobbiamo preoccuparci di settare un livello di sicurezza basso, altrimenti la vulnerabilità non sarà sfruttabile. Dal browser che abbiamo aperto clicchiamo su “DVWA Security”, selezioniamo “Low” e clicchiamo su “Submit”.

a questo punto siamo pronti per iniziare. Dal menu a sinistra selezioniamo la voce “File Inclusion”, ci troveremo di fronte un’altra pagina con alcune informazioni. Analizziamo per un secondo l’URL che compare sul nostro browser. Nel mio caso è il seguente

http://192.168.29.140/dvwa/vulnerabilities/fi/?page=include.php

Come noterete alla fine dell’URL viene fornita la pagina include.php come parametro alla richiesta page, questo, fa in modo che il contenuto del file include.php venga visualizzato al centro della pagina web. Questo metodo si chiama appunto Local File Inclusion, ovvero l’inclusione di un file esterno all’interno della pagina visualizzata. Si fa sostanzialmente riferimento ad un file presente nel file system del web server. Partendo da questo presupposto potremmo ipotizzare che, in teoria, qualsiasi file all’interno del file system possa essere referenziato… vediamo se è vero. Proviamo a modificare maualmente l’URL che compare e scriviamo il seguente:

http://192.168.29.140/dvwa/vulnerabilities/fi/?page=../../../../../etc/passwd

L’output sarà il seguente:

come noterete, nella parte alta della pagina, viene visualizzato il contenuto del file /etc/passwd! Abbiamo quindi potuto invocare un file all’interno del file system del web server vittima in maniera molto semplice.

Ma ovviamente non ci accontentiamo, vogliamo di più. Vogliamo acquisire una shell remota e prendere possesso della macchina.

Per fare questo ci sono numerosi metodi, vi mostrerò il mio preferito, ovvero tramite l’uso di netcat. Cercheremo quindi di aprire una sessione semplicemente configurando un listener su una porta tcp, nel mio caso scelgo la tcp/3333

Ma per ora occupiamoci di capire come sfruttare la vulnerabilità a nostro favore.

Apriamo una shell su kali e iniziamo a familiarizzare con il tool “fimap”. Si tratta di un tool molto potente che ci permette di verificare la presenza della vulnerabilità LFI ed eventialmente sfruttarla. Digitiamo il seguente comando:

fimap -b -u http://192.168.29.140/dvwa/vulnerabilities/fi/?page=include.php

noteremo che la procedura fallisce ritornandoci il messaggio “Target URL isn’t affected by any file inclusion bug :(“… ehi, ma come… il server non era forse vulnerabile? Si, certo che lo è, ma abbiamo bisogno di un altro parametro per risultare vincenti.

Quando abbiamo aperto la pagina web è stato automaticamente creato un cookie di sessione, andiamo ad analizzarlo.

Sul browser iceweasel vi consiglio di installare il plugin “Cookie Manager+”, che vi permette molto velocemente di verificare quali cookie siano stati creati dal sito che state verificando. Nel mio caso vedo che è presente il cookie PHPSESSID e un secondo cookie che imposta il livello di sicurezza a “low”

ecco l’elemento che ci mancava. In mancanza del cookie la procedura fallisce. torniamo sul nostro fimap e modifichiamo il comando includendo il cookie che abbiamo appena trovato.

fimap -b --cookie="security=low;PHPSESSID=cca57bf8dc0663713a602c3466f3cd02" -u http://192.168.29.140/dvwa/vulnerabilities/fi/?page=include.php

ed ecco l’output

Abbiamo verificato che la vulnerabilità è sfruttabile anche da fimap, bene, attacchiamo!

Fimap è anche capace di iniettare del codice, è sufficiente inserire il flag -X, vediamo cosa succede:

fimap -b -X --cookie="security=low;PHPSESSID=cca57bf8dc0663713a602c3466f3cd02" -u http://192.168.29.140/dvwa/vulnerabilities/fi/?page=

Ci viene chiesto di selezionare la vittima. Scegliamo l’opzione 1 e successivamente l’opzione 1 per sfruttare lo script vulnerabile e successivamente l’opzione 2 per selezionare l’opzione “Spawn pentestmonkey’s reverse shell”. Immettiamo l’indirizzo della nostra macchina Kali, nel mio caso è 192.168.29.131 selezionando anche la porta tcp, nel mio caso scelgo la 3333.

Avremo quindi due shell aperte sulla nostra macchina kali, la prima con l’output di fimap, esattamente come mostra questo screenshot

e l’altra con il netcat pronto a ricevere la sessione

bene… siamo pronti… premiamo invio sulla shell fimap.. ed ecco cosa succede

Siamo dentro! Abbiamo una shell!

A questo punto se non siamo soddisfatti possiamo effettuare il download di una nostra backdoor, ad esempio una reverse_tcp creata con msfvenom in modo da poter usare meterpreter. Ma l’unica sfida che ci rimane ormai è il privilege escalation, siamo infatti entrati sfruttando un processo appartenente al web server e saremo identificati con l’utente che ha in carico quel processo, possiamo fare il defacement del sito web ad esempio, ma il nostro obiettivo è diventare superuser, ma questo argomento sarà oggetto di un altro post 🙂

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *