Esegui uno script php caricato su un server vulnerabile se so che è la posizione? [chiuso]

1

Ho bisogno di testare un sito Web e ho trovato un caricamento di file vulnerabile. Viene controllato solo se l'estensione del file è .jpg, .png o .pdf. Posso bypassare questo caricando un file chiamato script.php.jpg . So che i file caricati sono memorizzati in /uploads .

Come posso eseguire quello script? Quando digiti http://example.com/uploads/script.php.jpg nel mio browser, lo script non viene eseguito. So che il server può eseguire il codice php e che il server ha detto vulnerabilità del file.

    
posta manuel-hoelzl 24.06.2018 - 16:43
fonte

2 risposte

4

A meno che il server non sia configurato correttamente, non eseguirà mai file .jpg come file .php. Il segmento ultimo dopo un . è quello pertinente nel determinare le estensioni di file, il che significa che stai caricando file che il server considererà correttamente come file jpg.

Quindi essere in grado di caricare script.php.jpg di per sé non è una vulnerabilità.

Se, ad esempio, avevi una vulnerabilità LFI da qualche parte, potresti includere il file caricato e poi eseguirlo (indipendentemente dall'estensione del file). Oppure, se è possibile caricare i file di configurazione del server (ad esempio .htaccess in apache), è possibile riconfigurare il server per eseguire i file .jpg come file .php.

Ma quelle sarebbero le vulnerabilità, non la possibilità di caricare il file .php.jpg. Sarebbe possibile controllare il mimetype sul caricamento come difesa in profondità. Ma questo può essere aggirato , quindi non considererei la mancanza di tale controllo una vulnerabilità (anche se il controllo è raccomandato) .

    
risposta data 24.06.2018 - 16:53
fonte
0

Il server sta leggendo l'estensione jpg , quindi lo invia al tuo browser come se fosse un'immagine e non lo interpretasse come un file php .

Per utilizzare il file caricato dovresti sfruttare un'altra vulnerabilità come LFI come @tim ha detto

Un'altra cosa che potresti provare è fare un pasticcio con i filtri dei nomi dei file in modo che .jpg non sia aggiunto. Ad esempio, puoi impostare il nome del file su qualcosa come script.php.jpg.jpg , se il filtro non è implementato correttamente può leggere il script.php alla fine - interpretandolo come un file valido -, ma quando viene salvato può essere salvato come .php perché shebang non è un carattere valido per un nome file

Inoltre, tieni presente che il controllo dei tipi di file per estensione è una cosa di Windows. I tipi di file in sistemi unix sono controllati dai numeri magici e dagli script eseguibili - come %code% file - può indicare come essere interpretato tramite %code% s. Se il sistema sottostante è unix-like, potrebbe valere la pena provare ad aggiungere uno shebang allo script caricato, se non è già lì

    
risposta data 24.06.2018 - 17:37
fonte

Leggi altre domande sui tag