Abbiamo un'applicazione Java IRC in cui agli utenti è consentito eseguire PHP arbitrario e ottenere il risultato. Ecco un esempio di ciò che questo viene utilizzato per:Codice jailing PHP arbitrario
btc: <php>$btc = json_decode(file_get_contents('https://btc-e.com/api/2/1/ticker'), true); $ticker = $btc['ticker']; echo "Current BTC Ticker: High: $".$ticker['high']." Low: $".$ticker['low']." Average: $" . $ticker['avg'];
Abbiamo anche una messa a punto di pitone, ma ci piace PHP perché PHP non richiede a capo nel codice ovunque. (Perché questo è IRC, non possiamo dare è a capo a meno che non exec un file .py web-caricato)
Il problema è come impedire alle persone di cercare di sfruttare il sistema, come ad esempio in:
<php>echo readfile("/etc/passwd");
Quale sarebbe, chiaramente, leggere il file passwd per tutti da vedere.
Stiamo anche avendo questo problema, dopo aver cercato di bloccare readfile():
<php>$rf = readfile; echo $rf("/etc/passwd");
Come dovremmo andare sulla protezione di questo sistema? (Il codice completo è su github, per qualsiasi interessato: https://github.com/clone1018/Shocky)
Come una parte, nessuna informazione reale viene esposta, poiché l'intera cosa è in una VM, quindi non è una "bomba temporale" o qualcosa . Vogliamo comunque bloccarlo.
Perché il tuo server web ha i diritti di leggere '/ etc/passwd'? Blocca il tuo utente Web per i principianti. – afuzzyllama
@afuzzyllama Questo non ha nulla a che fare con l'utente web; '/ etc/passwd' è leggibile in tutto il mondo per la maggior parte delle distribuzioni Linux.Alcuni programmi richiedono l'accesso a quel file per funzionare e non contengono comunque password. –
@Ryan P - Per "utente web" intendevo l'utente che esegue apache, non l'utente sul sito web. – afuzzyllama