Vulnerabilità legata al caricamento di file PHP

2

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.

    
posta GMX Rider 15.01.2018 - 22:05
fonte

1 risposta

1

Non sono sicuro di quale sia il valore nella loro ricerca di %00 . (Voglio dire, immagino di troncare i nomi di file su versioni veramente vecchie su PHP?)

Se il webserver è configurato per inviare tutte le richieste a PHP, puoi usare estensioni alternative ( .html ) e provare a ottenere l'esecuzione del codice in questo modo. Se sono stati accuratamente configurati per consentire solo l'esecuzione di PHP per le estensioni di file che stanno filtrando, considererei se sono installati altri linguaggi di scripting. (ad es. mod_python)

Indipendentemente dal server RCE sul server, se stanno permettendo il caricamento di contenuti HTML sulla stessa origine in cui ospitano il sito, quasi certamente hai un vettore XSS ...

    
risposta data 15.01.2018 - 22:20
fonte

Leggi altre domande sui tag