Scenario reale per l'esecuzione di file remoti

1

Questo è un attacco comunemente dimostrato perché è facile da spiegare e capire.

La premessa è che la vittima faccia qualcosa di simile (esempio PHP semplificato):

include( $_GET['file']);

E l'attaccante può passare un percorso a uno script php sul suo server.

La mia domanda è che hai mai visto qualcosa di simile o simile nel codice della vita reale? Non riesco a immaginare quale tipo di requisito possa far sì che un programmatore includa un file basato sull'input dell'utente.

    
posta Artium 16.10.2018 - 22:07
fonte

1 risposta

1

Solo pochi giorni fa ho scritto questo codice:

$pathinfo = explode('/', $_SERVER["PATH_INFO"]);
$action = $pathinfo[1];

if (ctype_lower($action) && file_exists(__DIR__ . "/$action.php")) {
    require_once __DIR__ . "/$action.php";
} else {
    header("HTTP/1.0 404 Not found");
    error_out("No such entrypoint");
}

Qui sto prendendo il nome dell'azione fornita nell'URL e carica un modulo con quel nome.

Potresti avere la stessa funzionalità con questa condizione leggermente più semplice:

if (file_exists("$action.php")) {
    require_once "$action.php";
}

che mostra la vulnerabilità di esecuzione in remoto citata (se allow_url_fopen è abilitato), o consente anche di leggere file inattesi (pensa su $action = "/etc/mysecret/" scenari).

(Suddividendo su "/" al di sopra di questo, è possibile che non funzioni, in quanto sarebbe necessario un protocollo che non usa un %code% . La lettura del file sarebbe comunque ancora problematica su Windows, sebbene .)

    
risposta data 16.10.2018 - 22:31
fonte

Leggi altre domande sui tag