Quale personaggio potrebbe causare la fuoriuscita dalla parte sinistra o destra di STRING?

-1

Domanda 1)

in PHP quando controlliamo:

  dir1/dir2/../file.txt  ====(this is same as)=====>   dir1/file.txt

è qualcosa di simile possibile:

  file_get_contents('/home/path/' . $_GET['evil']. '/file.txt');

se l'hacker ha impostato $evil su come: ../ o evil_character (Voglio sapere se ce ne sono di reali) che fa sì che PHP sfugga alla parte destra del PERCORSO (so come uscire dalla parte sinistra del percorso ), quindi, l'hacker ha effettuato l'accesso in questo modo:

 '/home/path/'. 'eviltfile.php?
$evil = '../red apple
  dir1/dir2/../file.txt  ====(this is same as)=====>   dir1/file.txt
'; $message = 'green ' . $evil. ' banana'; print($message ) ==============> red apple
'. '/file.txt'' //and thus file.txt was ignored

Domanda 2)

Ho un'altra domanda sulle stringhe generali (non sul percorso del file), quindi, se c'è un %code% che fa sì che PHP sfugga alla parte sinistra o alla destra STRING, in questo modo:

  file_get_contents('/home/path/' . $_GET['evil']. '/file.txt');

P.S. Non ho bisogno di risposte per le vecchie versioni di PHP.

    
posta T.Todua 09.04.2018 - 11:07
fonte

1 risposta

0

In primo luogo, dovresti canonicalizzare i dati di input prima di una convalida e un'elaborazione.

Domanda 1)

Dovresti usare le funzioni canoniche per gestire i file, PHP ha alcune funzioni per questo scopo, ad esempio: basename o realpath . Queste funzioni canonizzano i percorsi dei file per evitare comportamenti come quelli di cui hai parlato, ad esempio, se un utente malintenzionato scrive qualcosa come questo ..?param=../../path/file , quelle funzioni convertono la stringa in qualcosa di simile a /path/file .

Domanda 2)

Dovresti usare le funzioni canoniche per i dati di input, PHP non ha molte opzioni nella mia opinione, quindi penso che una buona opzione sia OWASP ESAPI per PHP . Le funzioni di questa API convertono ogni carattere in espressione mimica, in modo da poter validare o elaborare dati di input sterilizzati e minimizzare comportamenti strani sul tuo codice.

Spero che questa informazione ti aiuti.

    
risposta data 09.04.2018 - 20:35
fonte

Leggi altre domande sui tag