I file eseguibili dei file di registro sono?

1

Come un principiante nel progetto di ricerca sulla sicurezza, mi sono imbattuto in log injection e la mia domanda riguarda i file di iniezione di log. I file di iniezione dei log sono eseguibili, in caso negativo, come eseguono / eseguono codice / file dannosi caricati su di essi, se esiste la vulnerabilità di log-injection?

    
posta Hrishikesh D Kakkad 17.11.2018 - 08:39
fonte

2 risposte

2

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:

  1. PHP legge il file di registro.
  2. PHP rileva il codice PHP nel file di registro.
  3. 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ò:

  1. Prova exec , passthru per vedere se è possibile eseguire comandi (c'è una differenza tra codice beteen e esecuzione di comandi)
  2. Utilizza il comando wget per scaricare una shell Web o una shell inversa.

Per riassumere le cose:

  1. I file di registro non hanno (non dovrebbero) il bit eseguibile impostato.
  2. L'accesso in lettura ai file di registro è sufficiente per eseguire il codice dopo che sono stati avvelenati (questo richiede LFI)
  3. 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.
risposta data 17.11.2018 - 09:55
fonte
1

Non ci sono "file di registro" . La registrazione può essere eseguita in file e i registri iniettati finiranno quindi anche nei file. L'esecuzione viene eseguita solo se qualcuno esegue codice in base ai dati nei file di registro assumendo che questi dati possano essere considerati attendibili. Non si tratta di eseguire i file di log stesso.

Per ulteriori informazioni, consulta OWASP: Log Injection .

    
risposta data 17.11.2018 - 08:59
fonte

Leggi altre domande sui tag