Sto testando una particolare vulnerabilità da ieri e sono arrivato con uno strano problema che non mi aspettavo. Diciamo che una vulnerabile applicazione web offre il caricamento di file immagine.
L'immagine in realtà non deve essere un'immagine, il back-end accetta qualsiasi estensione di file. Il problema è che lo stesso back-end restituisce sempre *.jpg
così invece dello script evil.php
caricato, vieni con random_number.jpg
.
Naturalmente, la prima cosa che ho provato è ottenere la risposta servita, che in questo caso è costituita da dati immagine codificati in base64.
Guardando oltre, ho trovato che l'applicazione restituisce binary/octet-stream
come intestazione di risposta tipo di contenuto , il che significa che quando provo ad accedere all'URL http://localhost/vulnbox/uploaded/random_num.jpg
, il browser apre il messaggio di download del file . Il file attuale viene restituito come file binario, pronto per essere scaricato, ma guardando nel file, vedo che il codice rimane.
C'è un modo in cui posso forzare la risposta del tipo di contenuto a qualsiasi altro e ottenere lo script malvagio vero e proprio?