A causa di una vulnerabilità nel modo in cui è stato installato PHP (VPS condiviso con PHP installato come modulo Apache invece di CGI) e quindi come è stato configurato OSCommerce (con sicurezza di 777 su determinate directory), ho trovato un certo numero di script PHP su un webserver di amici che era stato caricato dagli hacker. Il codice effettivo è stato nascosto utilizzando diversi livelli di crittografia. Avevano un file PHP con una stringa enorme assegnata a una variabile $ str. Quindi hanno usato la seguente riga per decodificare la stringa in codice PHP dannoso e hanno tentato di eseguirlo visitando la pagina. L'istruzione utilizzata per decodificare la stringa codificata era eval(gzinflate(str_rot13(base64_decode($str))));
Non possono eseguire il codice da questa directory ora perché c'è un file .htaccess che impedisce l'esecuzione di script da quella cartella che è stata messa in atto da quando abbiamo scoperto che il sistema era stato compromesso, questa è una soluzione temporanea ma probabilmente non il migliore.
Ho eseguito questo script su un Linux vm in esecuzione sul mio Mac mentre modificavo l'istruzione sopra a echo(gzinflate(str_rot13(base64_decode($str))));
in modo che potessi vedere il codice sorgente. L'ho messo su pastebin per l'interesse delle persone qui.
Pastebin of source per la pagina compromessa
Da quello che posso raccogliere, questo sembra essere uno script piuttosto sofisticato che tenta ogni sorta di trucchi per accedere al server, ma non conosco abbastanza bene con PHP per identificare tutte le vulnerabilità che questo potrebbe tentare di sfruttare. Quali controlli dovrei eseguire sul mio sistema se posso presupporre che sono riusciti a farlo in un dato momento?