Scripting una ricerca tramite file php per chiamate pericolose per la revisione manuale

8

Sto automatizzando uno script che cerca in tutti i file php di un grosso sito comandi pericolosi. I file trovati verranno sottoposti a revisione manuale del codice.

Qualcuno ha qualche raccomandazione per il mio script? C'è qualcosa che ho dimenticato di cercare? Tieni presente che questo script è stato messo insieme in 10 minuti, quindi sono sicuro che ci sono molti miglioramenti che possono essere fatti per renderlo più facile e migliore (come i molteplici argomenti di egrep).

find . | grep "php$" | xargs grep -s "eval(" >> /tmp/review.txt
find . | grep "php$" | xargs grep -s "fopen(" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "passthru(" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "exec(" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "proc_" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "dl(" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "require($" >> /tmp/review.txt
find . | grep "php$" | xargs grep -s "require_once($" >> /tmp/review.txt
find . | grep "php$" | xargs grep -s "include($" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "include_once($" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "include($" >> /tmp/review.txt 
find . | grep "php$" | xargs grep -s "query(" >> /tmp/review.txt 
    
posta Chris Dale 10.12.2010 - 14:34
fonte

4 risposte

8

Sicuramente questa lista non è abbastanza. Prima di tutto, non è completo, in secondo luogo, possono essere usati diversi metodi di offuscamento per nascondere web-shell, altri script dannosi.

Per tali scopi molto tempo fa ho scritto il mio script PHP per cercare posti pericolosi: link . È scritto su PHP, quindi non aspettarti che sia veloce come il comando "trova". Tuttavia, consente di controllare gli hash dei file, visualizzare quali file sono apparsi, mancano o sono cambiati. Ti consiglio di testarlo prima contro un piccolo script, solo per capire come funziona, prima di girare sul server di produzione. Inoltre, in particolare per la ricerca di vulnerabilità nel codice PHP, qualche tempo fa ho creato un semplice script bash: link . Non è completo, potrebbe richiedere l'ottimizzazione e la critica da parte di bash guru:)

Se vuoi continuare con il tuo script, ecco una bella lista da cui puoi estrarre ciò di cui hai bisogno: link .

Aggiornato: come si è capito, l'argomento riguarda la revisione del codice. Le soluzioni sopra menzionate hanno ancora senso, ma vorrei menzionare questo progetto: link . A mio parere, attualmente è il miglior analizzatore di codice sorgente disponibile gratuitamente per le applicazioni Web PHP.

    
risposta data 10.12.2010 - 15:06
fonte
5

Anche se non ho esperienza diretta con gli strumenti di analisi statica su PHP, sembra che ci siano una serie di strumenti, sia open source che commerciali, disponibili per l'uso.

In breve, sembra che PHPLint dovrebbe essere abbastanza veloce e facile da usare. La mia interpretazione indica che funziona in modo abbastanza simile a lint / splint per C, che ho usato e che mi ha soddisfatto.

OpenSource

Commerciale

risposta data 10.12.2010 - 16:34
fonte
3

Non sono un mago di PHP, quindi non ho molto da aggiungere in termini di cose aggiuntive da cercare, ma dovresti notare che qualsiasi tipo di spazio casuale casuale rovinerà le tue scoperte.
Per es.

fopen  ( 

non sarà trovato ...

    
risposta data 11.12.2010 - 22:27
fonte
2

Penso che estrai sia anche un pericoloso costrutto linguistico. (Anche se è usato più raramente di eval (), quindi non sono in molti a rendersene conto.)

Puoi anche provare a utilizzare Php Code Sniffer e scriverle come "annusate". Ecco uno che ho scritto per un progetto open source su cui lavoro.

    
risposta data 22.12.2011 - 19:58
fonte

Leggi altre domande sui tag