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.