Bypass del filtro SSRF

May 07 2023
Ciao, mi chiamo W1C3 e oggi spiegherò come ottenere l'accesso in lettura ai file arbitrari tramite SSRF (Server-Side Request Forgery) aggirando il filtro. Questa sfida è stata sviluppata per WaniCTF.

Ciao, mi chiamo W1C3 e oggi spiegherò come ottenere l'accesso in lettura ai file arbitrari tramite SSRF (Server-Side Request Forgery) aggirando il filtro. Questa sfida è stata sviluppata per WaniCTF .

Nome

Immagine dello schermo

Descrizione

Un'applicazione che acquisisce schermate dei tuoi siti Web preferiti.

Procedura dettagliata

Accedendo al sito web, si può osservare che si tratta di una pagina molto semplice. La sua unica funzionalità è ricevere un URL, accedere all'URL utilizzando un browser Web e acquisire uno screenshot.

Semplice applicazione screenshot

In questa sfida, poiché viene fornito il codice sorgente, possiamo vedere che esegue un controllo che dobbiamo aggirare, poiché " HTTP " deve essere incluso nella nostra richiesta e " FILE " non può essere incluso.

Revisione del codice del server

Per verificarlo, tenteremo di leggere il file /etc/passwd , ma senza successo.

Cercando di identificare l'SSRF

Come accennato in precedenza, il filtro che dobbiamo bypassare deve contenere la stringa " http " o non includere la stringa " file ".

Identificare l'SSRF

Ora che siamo al passaggio precedente, sapendo che SSRF esiste e comprendendo il filtro che dobbiamo bypassare, aggiungeremo " File:// " all'inizio e " ../../../../flag. txt ” o “ ../../../../etc/passwd ” fino alla fine. Con questo potremo leggere il file “flag.txt” per completare la nostra sfida.

NOTA : il file deve contenere almeno una lettera maiuscola per ignorare il filtro

File arbitrario letto

Per semplificare, rimuoveremo alcuni dati dalla richiesta. In questo caso, il nostro payload sarebbe simile a questo:

File:///http/../../flag.txt

Conclusione

In questa sfida, abbiamo dimostrato come aggirare un semplice filtro che tentava di impedire l'SSRF disabilitando il protocollo " file " e richiedendo il protocollo " http ". Costruendo attentamente la nostra richiesta con una lettera maiuscola nel parametro " file " e utilizzando il protocollo " File:// ", siamo stati in grado di leggere file arbitrari sul server.

Grazie per aver letto questo post. Resta sintonizzato per altri prossimi post sul blog e sentiti libero di seguirmi sui social media per gli aggiornamenti. Inoltre, tieni presente che il mio GitHub personale avrà post pubblicati in spagnolo. Arrivederci!

Github: J-W1C3

Twitter: Josewice7

Telegramma: W1C3Posts

Unisciti al mio canale Telegram per rimanere aggiornato su quando vengono pubblicati nuovi post.