LFI di PHP risolti con le giuste autorizzazioni di file

0

Sto cercando di capire come eseguire un LFI (in particolare PHP LFI), e c'è un aspetto di questo attacco che sembra non essere mai discusso negli articoli online che ho letto: Il file iniettato permessi .

In effetti, supponiamo di poter iniettare un file nel sistema. Il più delle volte, non sarà leggibile o eseguibile (anche la directory potrebbe non essere attraversabile). Pertanto, anche se posso attraversare un percorso con un ?file=../../../../../shell.php , non verrà eseguito.

Quello che sto cercando di dire è che, secondo me, se un sistema che esegue PHP è ben configurato e assegna i permessi giusti ai file, non c'è motivo di preoccuparsi molto delle estensioni dei file, del contenuto dei file ... Quindi, invece di aggiungere più controlli sul file iniettato come suggerito su più risorse online, non dovrebbe concentrarsi sulla configurazione del sistema (allow_url_include = 0, permessi sui file, ...)? Per me, è paragonabile alle iniezioni SQL. Preferisci utilizzare le istruzioni di preparazione e il controllo semplice dell'input dell'utente rispetto alle query vulnerabili e il controllo di input utente complesso con whitelist / blacklist enormi.

Mi manca qualcosa?

    
posta KJ202 28.11.2018 - 04:08
fonte

1 risposta

0

Prenderemo in considerazione queste due diverse vulnerabilità: archiviazione di un file nel server remoto e inclusione del file locale , che leggerà / eseguirà. Ognuno di loro può essere sufficientemente cattivo da solo.

Una vulnerabilità LFI in genere consente di leggere i file a cui non si dovrebbe avere accesso. Ad esempio, una vulnerabilità del percorso trasversale in un sistema di commenti potrebbe consentire di leggere invece la configurazione dell'applicazione Web e consentire l'accesso alle chiavi utilizzate dall'applicazione (come le credenziali del database). Non è possibile modificare le autorizzazioni del file in modo che l'applicazione Web non possa leggerlo, poiché l'applicazione deve leggerlo. Semplicemente non dovrebbe mostrare il contenuto all'utente.

Un altro caso tipico potrebbe essere che l'applicazione consente di caricare immagini e quindi è possibile includere l'immagine caricata come file php. Il file è stato creato dall'applicazione web, quindi sarà il proprietario del file e avrà accesso al file ( se l'app web viene eseguita con un uid diverso da quello del server web , è possibile rimuovere il permesso di lettura dal proprietario e lasciarlo per gli altri in modo che possa essere mostrato all'utente. Tuttavia, l'applicazione potrebbe tuttavia aver bisogno di leggere l'immagine caricata in seguito, ad esempio per generare una miniatura).

Per quanto riguarda la memorizzazione dei file, dovrebbe essere chiaro che se si è in grado di caricare un file nel posto giusto (ad esempio un file con un'estensione di script in un server di cartelle dal server Web), potrebbe essere eseguito senza Vulnerabilità LFI.

    
risposta data 03.12.2018 - 00:40
fonte

Leggi altre domande sui tag