In questa procedura dettagliata video, abbiamo trattato la stanza delle vulnerabilità di caricamento di TryHackMe in cui abbiamo dimostrato metodi e tecniche per sfruttare le vulnerabilità di caricamento dei file oltre a bypassare i filtri di caricamento come l'utilizzo di numeri magici, la modifica dell'estensione dei file e altro ancora.

Ottieni note OSCP

Il corso pratico completo sul Penetration Testing delle applicazioni Web

La possibilità di caricare file su un server è diventata parte integrante del modo in cui interagiamo con le applicazioni web. Che si tratti di un'immagine del profilo per un sito Web di social media, di un report caricato nell'archivio cloud o del salvataggio di un progetto su Github; le applicazioni per le funzionalità di caricamento dei file sono illimitate.

Sfortunatamente, se gestiti male, i caricamenti di file possono anche aprire gravi vulnerabilità nel server. Ciò può portare a qualsiasi cosa, da problemi relativamente minori e fastidiosi; fino all'esecuzione completa del codice remoto (RCE) se un utente malintenzionato riesce a caricare ed eseguire una shell. Con l’accesso illimitato al caricamento su un server (e la possibilità di recuperare dati a piacimento), un utente malintenzionato potrebbe deturpare o alterare in altro modo il contenuto esistente, fino a inserire pagine Web dannose, che portano a ulteriori vulnerabilità come XSS o CSRF. Caricando file arbitrari, un utente malintenzionato potrebbe potenzialmente utilizzare il server anche per ospitare e/o fornire contenuti illegali o per divulgare informazioni sensibili. Realisticamente parlando, un utente malintenzionato con la possibilità di caricare un file di sua scelta sul tuo server, senza restrizioni, è davvero molto pericoloso.

Lo scopo di questa stanza è esplorare alcune delle vulnerabilità derivanti da una gestione impropria (o inadeguata) dei caricamenti di file. Nello specifico esamineremo:

  • Sovrascrivere file esistenti su un server
  • Caricamento ed esecuzione di shell su un server
  • Bypassare il filtraggio lato client
  • Bypassare vari tipi di filtraggio lato server
  • Ingannare i controlli di convalida del tipo di contenuto

Quindi, abbiamo un punto di caricamento file su un sito. Come potremmo sfruttarlo?

Come per ogni tipo di hacking, l’enumerazione è fondamentale. Più comprendiamo il nostro ambiente, più siamo in grado di farlo Fare con esso. Guardare il codice sorgente della pagina è utile per vedere se viene applicato qualche tipo di filtro lato client. Scansione con un bruteforcer di directory come Gobuster di solito è utile negli attacchi web e può rivelare dove vengono caricati i file; Gobuster non è più installato di default su Kali, ma può essere installato con sudo apt installa gobuster. Intercettare le richieste di caricamento con Burpsuite tornerà utile anche. Estensioni del browser come Wappalyser può fornire informazioni preziose a colpo d'occhio sul sito scelto come target.

Con una conoscenza di base di come il sito web potrebbe gestire il nostro input, possiamo quindi provare a curiosare e vedere cosa possiamo e non possiamo caricare. Se il sito Web utilizza il filtraggio lato client, possiamo facilmente esaminare il codice del filtro e cercare di aggirarlo (ne parleremo più avanti!). Se il sito Web dispone di un filtro lato server, potrebbe essere necessario indovinare cosa sta cercando il filtro, caricare un file, quindi provare qualcosa di leggermente diverso in base al messaggio di errore se il caricamento non riesce. Il caricamento di file progettati per provocare errori può aiutare in questo. Strumenti come Burpsuite o OWASP Zap può essere molto utile in questa fase.

Risposte in camera

Qual è il nome del file immagine che può essere sovrascritto?

Sovrascrivi l'immagine. Qual è la bandiera che ricevi?

Esegui un Gobuster scansiona sul sito Web utilizzando la sintassi dello screenshot sopra. Quale directory potrebbe essere utilizzata per i caricamenti?

(NB Questa è una buona abitudine da acquisire e ti sarà utile nei prossimi compiti...)

Ottieni una web shell o una reverse shell sulla macchina.
Qual è il flag nella directory /var/www/ del server?

Qual è il linguaggio di scripting lato server tradizionalmente predominante?

Durante la convalida in base all'estensione del file, come chiameresti un elenco di estensioni accettate (per cui il server rifiuta qualsiasi estensione non presente nell'elenco)?

[Ricerca] Che cosa MIMO tipo che ti aspetteresti di vedere quando carichi un file CSV?

Qual è il flag in /var/www/?

Qual è il flag in /var/www/?

Prendi la bandiera da /var/www/

Hackera la macchina e prendi la bandiera da /var/www/

Videoprocedura dettagliata

Circa l'autore

Creo note sulla sicurezza informatica, note di marketing digitale e corsi online. Fornisco anche consulenza di marketing digitale, inclusi ma non limitati a SEO, annunci Google e Meta e amministrazione CRM.

Visualizza articoli