Sto valutando la sicurezza di un portale web per un cliente e ho trovato una vulnerabilità.
Ho trovato una funzione in cui gestisce gli upload di file. Dovrebbe essere usato solo dagli amministratori, ma la funzione effettiva è direttamente richiamabile e non controlla l'autenticazione. Ad ogni modo, ecco le condizioni:
Il caricamento richiede 2 argomenti (diciamo), ID (dovrebbe essere int, se non è int, interrompe il codice e nessun caricamento), oggetto file.
Quando il file viene caricato, controlla l'estensione del file utilizzando:
%codice%. Se l'estensione è una delle seguenti:
pathinfo['extension']
interrompe il caricamento.
Altrimenti, significa che tutti i controlli vengono passati e inserisce il file in:
"php, php3, php4, phps, php5, php6, phtml, html, htm, py, pl, sh"
P.S. Legge interi dati POST / GET (usando php: // input) se trova "% 00" (usa regex) nel POST / GET / COOKIE / ... nulla, interrompe l'intera connessione.
Quindi, per riassumere, effettua 3 controlli:
- % 00 in POST / GET leggendo php: // input e cercando% 00
- $ ID per essere int
- Estensione del file, non dovrebbe essere uguale a
/uploads/$ID.$EXT
È una vulnerabilità? Possiamo bypassare i test e causare danni? RCE?
P.S. È un server Linux.