Esecuzione del codice LFI quando la directory specificata

1

Sto lavorando su hackme, che introduce LFI nel codice php.

<?php
if (isset($_COOKIE["user"])) {
    $file="txt/".$_COOKIE["user"];
    include $file;
}
?>

Quindi posso includere qualsiasi file dal sistema semplicemente impostando l'utente del cookie sul percorso del file, ad esempio: "../../../ etc / passwd".

C'è un modo per usare questa vulnerabilità per eseguire il mio codice php?

Ho provato a usare:

  • / proc / self / environ
  • / proc / self / fd / 0
  • / proc / self / fd / 1
  • / proc / self / fd /...

nessuno dei due funzionava (nessun risultato) e gli errori erano simili a questo:

include(txt/../../../proc/self/fd/2): failed to open stream: Permission denied

    
posta 04.08.2017 - 15:14
fonte

1 risposta

1

Bene, ci possono essere molti modi per fare qualcosa di simile. Sono d'accordo con i commenti su come fare qualche ricerca su esattamente cosa sta facendo un LFI e guardare un po 'alle RFI per aiutare a capire le differenze implicite.

Per quanto riguarda la tua domanda, la risposta sarebbe sì, ma strettamente teorica in quanto non abbiamo un'interazione diretta con l'applicazione, quindi non so se l'applicazione è vulnerabile anche ad altri vettori che potrebbero entrare in gioco.

Senza darti la risposta, dato che questi tipi di applicazioni vulnerabili sono per l'apprendimento da soli, ci sono molti modi per eseguire potenzialmente PHP tramite LFI, la maggior parte che comporta il caricamento di un file in qualche modo, ma non è quasi sempre il caso. Alcuni esempi: tramite una sorta di commenti memorizzati, l'accesso alla pagina tramite LFI e l'esecuzione del codice; tramite il caricamento attraverso una sorta di funzionalità di caricamento dei file e l'accesso alla shell caricata tramite l'LFI; trasformando il tuo LFI in un RFI (ci hai provato?); tramite l'escaping del comando che sta causando la lettura del file (il punto di iniezione) e l'esecuzione di PHP dopo di esso e una pletora di altri potenziali.

Dal momento che controlli il cookie e questo si riflette direttamente nel PHP, hai semplicemente provato a chiudere in modo pulito la dichiarazione in cui il cookie è stato scaricato e dopo aver scritto più PHP? Questa sarebbe la prima cosa che proverei quando un valore viene riflesso, non modificato, nel codice in uso sul server.

Speriamo che questa possa essere una risposta "sufficiente". Questi tipi di domande sono un po 'soggettivi, ma questo può aiutare.

    
risposta data 04.08.2017 - 21:21
fonte

Leggi altre domande sui tag