Escenario de la vida real para la ejecución remota de archivos

1

Este es un ataque comúnmente demostrado porque es fácil de explicar y entender.

La premisa es que la víctima hace algo como (ejemplo de PHP simplificado):

include( $_GET['file']);

Y el atacante puede pasar una ruta a un script php en su servidor.

Mi pregunta es: ¿alguna vez has visto algo así o similar en el código de la vida real? No puedo imaginar qué tipo de requisito puede hacer que un programador incluya un archivo basado en la información del usuario.

    
pregunta Artium 16.10.2018 - 22:07
fuente

1 respuesta

1

Hace unos días escribí este código:

$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");
}

Aquí estoy tomando el nombre de la acción proporcionada en la url y cargo un módulo con ese nombre.

Podría tener la misma funcionalidad con esta condición ligeramente más simple:

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

que exhibiría la vulnerabilidad de ejecución remota mencionada (si se habilita allow_url_fopen), o incluso permitir la lectura de archivos inesperados (piense en $action = "/etc/mysecret/" escenarios).

(Al dividir en '/' encima de eso, es posible que no funcione, ya que necesitaría un protocolo que no usa %code% . La lectura del archivo aún sería claramente problemática en Windows, aunque .)

    
respondido por el Ángel 16.10.2018 - 22:31
fuente

Lea otras preguntas en las etiquetas