Leggendo la tua domanda, penso che tu stia parlando di attacchi da avvelenamento da tronchi.
Ad esempio, se hai scoperto una vulnerabilità chiamata LFI (local file inclusion), potrebbe essere possibile avvelenare i log che potrebbero causare l'esecuzione di codice attraverso l'avvelenamento del log.
Lascia che ti dia qualche dettaglio in più mostrando un codice (molto sbagliato):
<?php
if (isset($_GET['file'])) {
include($_GET['file']);
}
?>
Questo file di codice include qualsiasi file, lo esegue e lo visualizza nel browser dell'utente. Ora supponiamo per un momento che PHP open_basedir * non sia configurato.
https://www.somedomain.tld/index.php?file=contact.php
Ora questo caricherà il file contact.php che si trova nella stessa directory di dove sono servite le pagine web.
Ora cambiando il nome del file in qualcosa di simile:
https://www.somedomain.tld/index.php?file=../../../../../var/log/nginx/access_log
In questo scenario, supponiamo che il file di registro sia caricato e visualizzato nel browser dell'utente. In questo caso è già abbastanza brutto perché in pratica puoi caricare qualsiasi file a cui l'utente www ha accesso in lettura.
Avvelenamento del registro
Ora inseriamo del codice PHP nel file di log. Questo può essere ottenuto facendo qualcosa di simile a questo:
https://www.somedomain.tld/index.php?file=<?php echo phpinfo(); ?>
Poiché si tratta di una richiesta HTTP GET, questa verrà archiviata nel file di registro. Questo stadio è chiamato avvelenamento dei file di registro. Sebbene la richiesta sopra riportata mostri probabilmente un errore, rileggendo il file di log del server web, il codice verrà eseguito.
Esecuzione codice
Poiché il file di log del server web è avvelenato con il codice PHP precedentemente inserito, ma il file di log del server Web viene caricato, si verificherà quanto segue:
- PHP legge il file di registro.
- PHP rileva il codice PHP nel file di registro.
- PHP analizzerà il codice PHP e analizzerà il suo output sul browser dell'utente, visualizzando le informazioni PHP.
Dove andare da qui
Usa la tua immaginazione per andare da qui. Ecco alcune cose che ti vengono in mente però:
- Prova exec , passthru per vedere se è possibile eseguire comandi (c'è una differenza tra codice beteen e esecuzione di comandi)
- Utilizza il comando wget per scaricare una shell Web o una shell inversa.
Per riassumere le cose:
- I file di registro non hanno (non dovrebbero) il bit eseguibile impostato.
- L'accesso in lettura ai file di registro è sufficiente per eseguire il codice dopo che sono stati avvelenati (questo richiede LFI)
-
I registri del server Web non sono gli unici file di registro che possono essere avvelenati e anche l'e-mail potrebbe fare il trucco.
- = open_basedir è una restrizione di directory in PHP. Quando è impostato, solo i file all'interno del percorso di open_basedir possono essere letti.