Devi conoscere il nome del file per condurre un attraversamento di directory

0

Se i miei siti web hanno una vulnerabilità directory traversal (linux) e le mie altre pagine php hanno nomi di file complicati (ad esempio efj93ehdsijgdij3g.php), un utente malintenzionato potrebbe comunque accedere ad altri file? Oppure un utente malintenzionato ha strettamente bisogno del nome file giusto per condurre con successo un attraversamento di directory?

    
posta worldends 28.02.2016 - 20:11
fonte

2 risposte

2

L'attraversamento di directory è una vulnerabilità piuttosto ampia che può portare a una serie di attacchi, a seconda del contesto.

Di per sé, significa solo che un attaccante fornisce un nome di file o di directory e può attraversare file o directory al di fuori della directory prevista. Questo può facilitare attacchi come:

  • LFI
  • Lettura di file al di fuori della directory desiderata
  • Caricamento di file al di fuori della directory desiderata, che potrebbe condurre all'esecuzione del codice (ad esempio se l'unica cosa che impedisce l'esecuzione del codice è proteggere la directory desiderata)
  • spostare i file al di fuori della directory desiderata
  • Visualizzazione delle directory al di fuori della directory desiderata, che può aiutare un utente malintenzionato a raccogliere informazioni sul sistema di destinazione
  • etc

Fornire ai file nomi di file complicati può essere di aiuto solo nel caso di lettura di file al di fuori della directory e solo se non si fornisce la possibilità di elencare i file.

Rinominare i file può sembrare una buona idea come difesa in profondità - la sicurezza per oscurità non dovrebbe mai essere l'unica linea di difesa -, ma non ne vale la pena, poiché ci sono superfici di attacco più grandi della lettura dei file PHP.

Nel caso di LFI, un utente malintenzionato può ancora leggere file di sistema che possono avere gravi conseguenze. A seconda della configurazione, potrebbero essere in grado di:

  • leggi / etc / shadow, crack le password e accedi al sistema
  • inserisce il codice in vari file di registro e li include, portando all'esecuzione del codice
  • inserire il codice in proc / self / environ e includerlo, portando all'esecuzione del codice
  • etc

Quindi rinominare i file può impedire a un utente malintenzionato di leggere quei file specifici, ma in realtà non limita il danno di LFI. Porta anche a una ridotta manutenibilità, il che non ne vale la pena.

    
risposta data 28.02.2016 - 22:37
fonte
1

Dovendo conoscere il nome del file dipende dal codice vulnerabile, a volte è possibile ottenere elenchi di directory. Tuttavia ci sono molti altri file che un utente malintenzionato dovrebbe guardare piuttosto che i tuoi file php, come /etc/shadow .

Se l'attraversamento della directory è utilizzato in un'istruzione include() hai una vulnerabilità rfi o lfi e di nuovo ci sono obiettivi più semplici come l'impostazione dello user-agent su <?php passthru($_GET['c]); ?> e il passaggio a /proc/self/environ o i log del tuo server web. O qualsiasi altra posizione in cui l'aggressore può controllare il contenuto scritto sul disco rigido (file caricati, file temporanei, file di sessione, file di database, log smtpd / sshd, ecc. Ecc.). Se un utente malintenzionato riesce con lo sfruttamento di lfi, la complessità del nome del file non conta più come un utente malintenzionato potrebbe semplicemente eseguire comandi come ls per elencare i file.

Un buon modo per prevenire gli attacchi trasversali consiste nel confrontare i dati forniti dall'utente con una serie di valori accettabili, o semplicemente chiamare basename() sui dati forniti dall'utente prima del include() finché non ci sono utenti (attaccante ) file controllati nella stessa directory.

    
risposta data 28.02.2016 - 22:37
fonte

Leggi altre domande sui tag