Sfruttare un server PHP con un caricamento di file .jpg

12

Vorrei porre una domanda riguardante il classico caricamento di un'immagine e l'esecuzione di exploit di codice php su un sito Web.

Quindi ho provato questo exploit su un sito Web che dovrei hackerare (è stato creato per noi per tentare di hackerarlo)

La pagina web ci permette di caricare un'immagine, e mentre si modifica il tipo mime usando TamperData è facile, la pagina web apparentemente controlla se gli ultimi caratteri del file sono '.jpg' o '.jpeg' prima di consentire l'immagine.

Indipendentemente dal posizionamento del codice PHP (ho provato solo il codice php, il codice php incollato alla fine del file immagine, il codice php negli header EXIF ecc.), il sito web mostra solo il file immagine quando lo apro dopo il caricamento (o un errore nel caso di codice php semplice salvato come .jpg), poiché l'estensione è sempre jpg.

Quindi, in tal caso, cosa si dovrebbe fare per eseguire il file come .php? (l'avvelenamento da morso non funziona, nemmeno caricare il codice come vuln.php.jpg o vuln.php; .jpg. Entrambi mostrano solo l'immagine)

    
posta bruce kent 27.01.2016 - 19:50
fonte

3 risposte

11

Regardless of the placement of the PHP code [...], the website just shows the image file when I open it after uploading

Sì, è così che dovrebbe essere. Il server sarebbe seriamente vulnerabile se interpretasse i file .jpg come file .php a seconda del contenuto anziché dell'estensione.

So in such a case, what should be done to execute the file as .php?

Senza un qualche tipo di vulnerabilità nel codice stesso, non è possibile eseguire i file immagine come file PHP, come qualsiasi server decente non consentirebbe questo.

Senza saperne di più sul codice, non possiamo fare altro che indovinare. Se si suppone che sia vulnerabile di proposito, suppongo che il controllo dell'estensione sia probabilmente rotto.

Potresti provare:

  • .htaccess : il controllo dell'estensione potrebbe interpretare questo come nessuna estensione, e potrebbe andare bene con quello. Se il server analizza il file .htaccess, puoi ottenere l'esecuzione del codice con i file immagine tramite AddType application/x-httpd-php .jpg .
  • vuln.jpg.php : il controllo può controllare il primo, non l'ultimo interno.
  • vuln.php5 , vuln.php4 , vuln.phtml , ecc .: il controllo può essere un controllo di lista nera, non un controllo di lista bianca, che può perdere alcune estensioni che possono essere interpretate dal server come file PHP. Puoi facilmente testarlo con un'estensione creata come foobar , se passa, è un filtro della lista nera.
  • LFI: potresti avere una directory come misc con le sottodirectory uploads e configs , dove configs contiene file PHP e i caricamenti contengono i caricamenti di immagini. Quindi potresti avere un codice come include "misc/" . $filename . Diciamo che c'è un controllo per l'attraversamento della directory, quindi questo dovrebbe essere un codice cattivo, ma in generale ancora un po 'sicuro, giusto? Bene, i file .jpg inclusi vengono analizzati ed eseguiti come qualsiasi altro file, e quindi il codice PHP al suo interno verrà eseguito. Questo esempio è un po 'esagerato, ma non è del tutto inconcepibile che qualcosa del genere possa esistere.

tl; dr : puoi eseguire i file jpg come file PHP tramite .htaccess o tramite include . Inoltre, potresti essere in grado di ignorare il controllo dell'estensione del file se non è sicuro.

    
risposta data 27.01.2016 - 20:13
fonte
0

Solo un pensiero - anche se non è proprio hackerare il server, essere in grado di caricare un file jpg con js autoeseguiti dall'exif, che può causare caos sul computer client, sarebbe sicuramente un problema di sicurezza dal punto di vista dell'utente . vedere: link

    
risposta data 03.02.2016 - 07:20
fonte
0

Quando usi TamperData alcuni server non funzioneranno. Ma usare l'editor exif funzionerà correttamente.

.jpg sarà sostituito in .php nelle intestazioni http o nella suite di burp

    
risposta data 12.11.2017 - 21:37
fonte

Leggi altre domande sui tag