it-swarm-eu.dev

Sfruttare un PHP con un caricamento di file .jpg

Vorrei porre una domanda riguardo al classico caricamento di un'immagine ed esecuzione dell'exploit di codice php su un sito Web.

Quindi ho provato questo exploit in un sito Web che dovrei hackerare (È impostato per noi per provare a hackerarlo)

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

Indipendentemente dal posizionamento del PHP (ho provato solo il codice php, il codice php incollato alla fine del file immagine, il codice php nelle intestazioni EXIF ​​ecc.), Il sito web mostra solo il file immagine quando lo apro dopo il caricamento (o un errore nel caso di un semplice codice php 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 nullo non funziona, né il caricamento del codice come vuln.php.jpg o vuln.php; .jpg. Entrambi mostrano solo l'immagine)

15
bruce kent

Indipendentemente dal posizionamento del PHP [...], il sito Web mostra solo il file immagine quando lo apro dopo il caricamento

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.

Quindi, in tal caso, cosa si dovrebbe fare per eseguire il file come .php?

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

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

Potresti provare:

  • .htaccess: il controllo dell'estensione può interpretare questo come nessuna estensione, e potrebbe andare bene così. Se il server analizza il file .htaccess, è quindi possibile ottenere l'esecuzione del codice con i file di 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 potrebbe essere un controllo della lista nera, non un controllo della whitelist, che potrebbe perdere alcune estensioni che possono essere interpretate dal server come PHP. Puoi facilmente testarlo con un estensione creata come foobar, se passa, è un filtro blacklist.
  • LFI: potresti avere una directory come misc con le sottodirectory uploads e configs, dove configs contiene PHP e i caricamenti contengono il caricamenti di immagini. Quindi potresti avere un codice come include "misc/" . $filename. Diciamo che esiste un controllo per l'attraversamento delle directory, quindi questo dovrebbe essere un codice errato, ma in genere è ancora un po 'sicuro, giusto? Bene, i file .jpg inclusi vengono analizzati ed eseguiti come qualsiasi altro file, e quindi PHP al suo interno. Questo esempio è un po 'inverosimile, ma non è del tutto inconcepibile che qualcosa del genere potrebbe esistere.

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

14
tim

Quando si utilizza TamperData alcuni server non funzionano. Ma usando l'editor exif funzionerà bene.

.jpg verrà sostituito da .php nelle intestazioni http o nella suite burp

1
Trojan Boy

Solo un pensiero: pur non hackerando davvero il server, essere in grado di caricare un file jpg con js autoeseguenti dall'exif, che può quindi causare caos sul computer client, sarebbe certamente un problema di sicurezza dal punto di vista dell'utente. vedi: http://blog.trendmicro.com/trendlabs-security-intelligence/jpeg-files-used-for-targeted-attack-malware/

1
Jenn