Prevenire le migliori pratiche di attraversamento del percorso?

0

Script:

header("Content-type: text/css; charset: UTF-8");

$var = $_GET['var'];
$var = str_replace(array('/', '../'), array('', ''), $var);

echo file_get_contents($var);

È possibile sfruttare Path Traversal senza usare la barra in avanti?

In altre parole, questo codice sarebbe sufficiente per impedire il Path Traversal?

$var = str_replace(array('/', '../'), array('', ''), $var);
  • Se Sì:

    1. Che mi dici di un backward slash? è sicuro?
    2. La doppia codifica e la codifica esadecimale avranno alcun effetto su questo?
  • Se No:

    1. Come valuteresti l'impatto?
    2. Qual è il tuo suggerimento per una soluzione migliore?

PS: Operation System: Linux

    
posta Abdelhafidh Belalia 29.06.2017 - 00:05
fonte

1 risposta

-1

Modificato: Sì , Mi è sfuggito il punto della domanda scusate per questo. Il filtraggio delle barre in avanti impedirà LFI in Linux ma non nei server basati su Windows. E LFI può portare a RCE. L'ho fatto molte volte ma è un altro argomento.

Quindi sei sicuro se stai usando Linux come hai detto, ma se qualcuno ha usato il tuo script in Windows è facilmente aggirato dalla (..) barra rovesciata.

Il doppio trucco e l'esadecimale di codifica non funzioneranno in questa situazione poiché mostri il file dopo averlo filtrato.

Questo è tutto ciò che so.

    
risposta data 29.06.2017 - 17:10
fonte

Leggi altre domande sui tag