Kredi kartı gözden geçirme işlemi için bozuk bir görüntü dosyasının kullanılıp kullanılmadığını nasıl anlayabilirim?


17

Müşteri kredi kartı verilerini toplamak için saldırıya uğradığına inandığım bir siteyle çalışıyorum, ancak emin olamıyorum.

Ben vermedi Birkaç makalelerinde öne görüldü ettik ortak yerlerde hiçbir şüpheli kodu bulun.

Ben yaptım şüpheli "kırık" görüntü dosyasını bulmak:

/skin/adminhtml/default/default/images/db-tab-bottom-right-bg_bg.gif

Dosya uzantısını değiştirdim ve açtım, ama sadece JPEG-1.1dağınık şifreli metnin bir duvarı .

Sitenin güvenliğinin ihlal edilip edilmediğini nasıl anlayabilirim?

Düzeltme ekinin uygulandığını doğruladım, ancak saldırı düzeltme eki öncesinde gerçekleşmiş olabilir.

EDIT: Etkilenen sürüm 1.7.0.2

Yanıtlar:


21

Sorunuza özel cevap için bkz. Https://magento.stackexchange.com/a/72700/361

Arka fon

Birincisi, belirli bir istismar yoktur - şu anda mermiyi yapan ve kaynak makaleyi yanlış ve yanlış anlayan bir dizi makale vardır.

Orijinal makale , sadece söz konusu (ve başka sözcüklerle ediyorum)

Bir hacker ise olduğumuzu Magento dosyalara erişim elde edebilir, bunlar olabilir sizin müşteriden bilgi yakalamak

Bilgisayar korsanının sunucunuza gerçekten erişmesi ve dosyaları değiştirmesi gereken kilit kısımdır.


Panik yapma ... Bu Magento'ya özgü bir şey değil

Bilgi yakalama açısından, Magento'ya diğer herhangi bir web sitesi / platformdan daha spesifik bir şey yoktur. Bir bilgisayar korsanı dosyalarınıza erişirse, etkin bir şekilde oyun biter - istedikleri bilgileri yakalayabilirler.

Yapabileceğiniz en iyi şey (ve sonuç olarak yapmanız gereken en az şey) ödeme işleme endüstrisinin PCI Güvenlik Standartlarına uygun iyi bir güvenlik politikası sağlamaktır, listeyi burada bulabilirsiniz, https://www.pcisecuritystandards.org /documents/Prioritized_Approach_for_PCI_DSS_v3_.pdf


Mağazanızı sertleştirin

Mağazanızın bir hacker için yüzey saldırı alanını büyük ölçüde azaltan yönlerini kilitleyebilir veya en azından içeri girmeyi başarırlarsa ilerlemelerini yavaşlatabilirsiniz.

Kilitleme izinleri

Belge kökündeki izinleri yalnızca temel dizinlere ( /varve /media) yazmaya izin vermek için kısıtlayabilirsiniz

MageStack'ta varsayılan olarak yaptığımız şey budur ,

echo -n "Fixing ownership"
chown -R $SSH_USER:$WEB_GROUP $INSTALL_PATH && echo " ... OK" || echo " ... ERROR"
INSTALL_PATH="/path/to/public_html"
chmod 750 $INSTALL_PATH
find $INSTALL_PATH -type d ! -perm 750 -exec chmod 750 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing file permissions"
find $INSTALL_PATH -type f ! -perm 740 -exec chmod 740 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing cron permissions"
find $INSTALL_PATH/*/cron.sh -type f ! -perm 750 -exec chmod 750 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing media/var file permissions"
chmod -R 760 $INSTALL_PATH/*/media $INSTALL_PATH/*/var && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing media/var directory permissions"
find $INSTALL_PATH/*/media $INSTALL_PATH/*/var -type d ! -perm 770 -exec chmod 770 {} \; && echo " ... OK" || echo " ... ERROR"

Uygun şekilde ayarlayın INSTALL_PATH,SSH_USER,WEB_GROUP. Önemli olan, SSH_USERPHP'nin web sunucusu işlemi için kullandığı aynı kullanıcı olmamasıdır, aksi takdirde, temel olarak web sunucusuna tam yazma erişimi sağlarsınız (herhangi bir avantajı azaltır).

Yönetici / indirici erişiminizi kilitleme

MageStack'ta bunu ___general/x.conf

set $magestack_protect_admin true;
set $magestack_protect_downloader true;

Nginx'te bunu kullanabilirsiniz,

location ~* ^/(index.php/)?admin{
  satisfy any;

  allow x.x.x.x;

  auth_basic "Login";
  auth_basic_user_file /microcloud/data/domains/x/domains/x/___general/.htpasswd;

  deny all;

  location ~* \.(php) {
    include fastcgi_params;
  }
  try_files $uri $uri/ /admin/index.php ;
}

Nasıl hazırlanacağına dair biraz daha dokümantasyon var .htpasswd dosya var

Sarın cron.shSüreci

Cron / admin kullanımı için özel makineler kullanan diğer barındırma sağlayıcılarıyla karşılaştım - yani cron.sh dosyanın cron / admin üzerinde uzaktan kod yürütülmesine izin vereceği . İşlemi doğru kullanıcı ile bir fakechroot'ta sarmak, işlemi kilitlemek için biraz daha ileri gidebilir.

Gönderebileceğim çok fazla kod var, ama bir senaryo var var . MageStack'a özgüdür, ancak daha az zarif sunucu yapılandırmalarında kullanılmak üzere ayarlanabilir :)

Denetim, denetim, denetim

Linux, sunucunuzun ne yaptığına dair tam bir fikir verecek olan oturum açma ve bunlara dokunma açısından harika.

MageStack'ın fantastik bir özelliği, her türlü erişimi ve hatta dosya değişikliklerini günlük olarak kaydeden denetim aracıdır . Günlükleri burada bulabilirsiniz,

/microcloud/logs_ro
|-dh[0-9]+
|---access-YYYY-MM-DD.log.gz
|---backup-YYYY-MM-DD.log.gz
|---magescan-YYYY-MM-DD.log.gz
|---php-differential-YYYY-MM-DD.log.gz
|-acc[0-9]+
|---access-YYYY-MM-DD.log.gz

MageStack kullanmıyorsanız, bunlardan bazılarını kendi barındırma sağlayıcınızla kolayca çoğaltabilirsiniz, rsync yapmak için en basit araç olan .

Örneğin. Yedekleriniz yerel olarak mevcutsa, aşağıdakileri yapabilirsiniz. Bu, kuru çalışarak iki dizini karşılaştıracak ve fark yama listesi oluşturacaktır.

rsync -na /path/to/public_html/ /path/to/backup/public_html/ > change.log
grep -E '\.php$' change.log | while read FILE; do
  diff -wp /path/to/public_html/$FILE /path/to/backup/public_html/$FILE >> php-differential.log
done

PHP değişiklikleri o kadar nadirdir ki, bunu günlük olarak (veya günde birden çok kez) çalışacak şekilde planlayabilir ve bir PHP dosya değişikliği varsa size e-posta ile bildirebilirsiniz.


Özetle

  • Sürüm kontrolünü kullanın, değişiklikleri izlemek daha kolaydır
  • Sitenizi güvenli hale getirmek için sadece bir SSL sertifikasına sahip olmak yeterli değildir
  • Güvenliği düşünmek için saldırıya uğramak için beklemeyin
  • Ödeme ağ geçidi sağlayıcınıza (bilgi yakalamaya karşı) yönlendirdiğiniz için - PCI uyumluluğundan kaçınabileceğiniz anlamına gelmez, yine de uymanız gerekir
  • Proaktif olun, güvenli olun ve kapsamlı olun - kurmadan önce modül kodunu kontrol edin, günlük PHP dosyalarını kontrol edin, günlükleri inceleyin, FTP / SSH erişimini kontrol edin, şifreleri düzenli olarak değiştirin

Müşterileriniz, tüm özel bilgilerini aktardıklarında size çok büyük bir güven veriyorlar - ve bu güveye güvenli bir iş yürütmeyerek ihanet ederseniz, geleneklerini ve gelecekteki tüm geleneklerini kaybedersiniz.

PCI adli soruşturmaları inanılmaz derecede pahalı, zaman alıcıdır ve sonuçta kart ödemelerini tekrar alabilme yeteneğinizi riske atar. Kendinizi bu pozisyona sokmanıza izin vermeyin!


Yamalı ol

Son zamanlarda Magento'dan sabit delikleri serbest bırakan bir dizi yama vardı, bunlardan bazıları uzaktan kod yürütülmesine izin verdi. Bunları buraya getirebilirsiniz, https://www.magentocommerce.com/products/downloads/magento/

Ancak bu yeni makaleler yeni bir istismardan bahsetmiyor, bilgisayar korsanlarının kart sahibi bilgilerini yakalamak için tarihi istismarları (veya başka bir saldırı vektörünü) nasıl kullandıklarını belirtiyorlar.


Kaynaklar


4
Teşekkürler! Bu inanılmaz bir yazma ve çok yararlı bilgiler.
Piotr Kaminski

9

Başka bir cevabı ekliyorum çünkü diğeri soruyu cevaplamıyor - ve artık daha fazla olması gerekmiyor!

Görüntünün CC bilgisi içerip içermediğini nasıl doğrulayabilirim?

Sonuçta, yapamazsın. Bazen onu öne çıkaran göstergeler vardır,

Örneğin.

  • Büyük dosya boyutu
  • Dosyada düz metin bulunması
  • Yanlış resim başlıkları

Ancak, içerik yalnızca düz metinde değilse içeriği belirlemek için ikili dosyaların içeriğini sindirmek özellikle zor olabilir.

Gördüğüm en yaygın istismar, bir .jpg|png|gif|etcuzantıya sahip bir dosyaya düz metin verileri yazmayı değil, genellikle verileri gizlemek için bir tür kodlama / şifreleme içerir (örn. base64Veya mcryptvb.). Yani basit bir grep işe yaramaz.

Yapabilirsiniz (ve bu hiçbir şekilde ayrıntılı değildir) ...

Anormal derecede büyük dosyaları bulma

find \
/path/to/public_html/skin \
/path/to/public_html/media \
-type f -size +20M 2>/dev/null

CC regex ile eşleşen dosyaları bulma

grep -lE '([0-9]+\-){3}[0-9]{4}|[0-9]{16}' \
/path/to/public_html/skin \
/path/to/public_html/media 2>/dev/null

Görüntü dosyalarının geçerli olup olmadığını kontrol edin

find \
/path/to/public_html/skin \
/path/to/public_html/media -type f \
-regextype posix-egrep -regex '.*\.(jpg|gif|png|jpeg)' |\
xargs identify 1>/dev/null

Veya

find \
/path/to/public_html/skin \
 -name '*' -exec file {} \; | grep -v -o -P '^.+: \w+ image'

Değiştirilip değiştirilmediğini görmek için kurulumumdaki PHP dosyalarını nasıl kontrol edebilirim

Yükleme dosyalarınızı karşılaştırmanın en kolay yolu, çekirdeği temiz bir kopyaya göre ayırmak olacaktır. Bu, tema dosyalarınızı hesaba katmaz, ancak kurulumunuzda birkaç bin dosyayı kontrol etmek için uzun bir yol kat eder.

Süreç gerçekten kolay,

Örneğin. Magento 1.7.0.2 sürümü için

wget sys.sonassi.com/mage-install.sh -O mage-install.sh
bash mage-install.sh -d -r 1.7.0.2
tar xvfz latest-magento.tar.gz
diff -w --brief -r magento-ce-*/app/code/core app/code/core
diff -w --brief -r magento-ce-*/lib lib

Eski Magento sürümlerinin (can sıkıcı bir şekilde) yamalı olmadığını unutmayın, bu nedenle çekirdek farkının yapılması değişikliklerin gösterilmesine neden olacaktır. Bundan kaçınmak için, yamaları yeni indirilen temiz kaynağa uygulayın, sonra tekrar dağıtın.


2
Her iki cevabınız da göz önüne alındığında, bu soru ile daha iyi ilişkilidir.
pspahn

Ben, önerdiğim düzenleme için gerekçemi bitirmeden önce enter'a girdim ... önemli bir şey değil, sadece PCI bir endüstri standardı ve en azından ABD'de bir hükümet organı tarafından geçirilen bir düzenleme veya yasa değil: en.wikipedia.org/wiki/…
Bryan 'BJ' Hoffpauir Jr.

1
Ben sadece "kural" (hukuk değil) ile değiştirilebilir olma bağlamında "düzenleme" kullanıyordum
Ben Lessani - Sonassi

Ayrımı takdir edin ve başlangıçta fark ettiğimden daha fazla yerel ayara dayalı olabilir. Babamın avukatına ve kız kardeşine göre ABD'de hukuk okulu dekanı (onlarla tahmin edebileceğiniz gibi tartışmaktan nefret ediyorum) bile, buradaki Endüstri Kuralı gibi belirli bir değiştirici tarafından ön planlandığında kural kelimesinin belirli bir anlamı vardır. davaya karşı Ajans Kuralı (EPA gibi bir devlet ajansı, yasalar gibi yasal olarak bağlayıcı olan ancak Senato veya Temsilciler Meclisi odalarımız tarafından bir düzenleme olarak geçilmeyen ayrıntılı gereklilikler yayınlayabildiği durumlarda). Sadece :) paylaşım bilgiçlik olmamaya ortalama Do
Bryan 'BJ' Hoffpauir Jr.

3

Harika gönderi, ancak maalesef her şey eşit yaratılmadı.

Dosya izinleri

Paylaşılan barındırma popüler olduğunda, insanların aynı sunucuda başkalarının içeriğini görüntülemesine izin verilmemesi daha önemli olarak kabul edildi. FreeBSD hapishanelerinin ortaya çıkmasına kadar:

  • kısıtlı mermiler
  • / root olarak ev: kök 700
  • Umask 007 ile kullanıcı hesapları.
  • UID değişen web sunucusu yazılımı
  • Ve değiştiği kullanıcı kimliği, bu hesabın sahibidir.

Bu, (sonra) HTML dosyalarının hesap sahibi tarafından değiştirilmesine izin verirken aynı zamanda hem web sunucusu işlemi hem de hesap sahibinin aynı makinedeki diğer kullanıcılara erişimi yoktu.

Bu çok değişmedi ve paylaşılan barındırma (CPanel, DirectAdmin, Plex) için uygun yazılım paketleri bu ilkeleri kullanıyor. Bu, ana giriş noktasının (web sunucusu ve / veya komut dosyası yorumlayıcısı) hesaptaki herhangi bir dosyaya yazabileceği ve dosya izinlerini işe yaramayacağı anlamına gelir.

Eğer yoksa CC çalmak için CC yok

CC verilerinin gerçekten sunucunuza gönderilip gönderilmediğini ve şifrelenmemiş olarak şifrelenmemiş olarak gönderilip gönderilmediğini CC ödeme sağlayıcınıza bildirin. JavaScript bugünlerde oldukça güçlü ve orada, sunucuya aktarılmadan önce hassas bilgileri şifrelemek için müşterinizin JavScript motorunu kullanan Ödeme Servis Sağlayıcıları var. Bu bilgi toplayıcının oturum anahtarını ve şifrelenmiş verileri alması (ve böylece şifresini çözebilmesi) mümkün olsa da, toplanan veriler daha büyük ve botun AI'sı çok daha karmaşık olduğundan toplayıcı için daha az ilginçtir .

Değişiklik tespiti

15 yıldan fazla unix ve TripWire reenkarnasyonlarını gördüğümde hala yüzüme nostaljik bir gülümseme koyuyor . Git bunun için de iyi bir araç. Bilinen iyi bir sürümle karşılaştırıldığında, eklemeler hesaba katılmadığından ve site-yerel değişiklikler bozulmamış kurulumlardan daha sık olduğu için burada iyi bir araç kullanmaktadır.

İndirici

Downloeader'ı bir tür HTTP kimlik doğrulaması yüklemek kadar belge kökünün dışına taşımak da kolaydır. Sonra sadece kullandığınız zaman geri koyun. Bu pratik değilse, o zaman başka bir kullanıcı / parola katmanı yerine, özellikle düz metin olarak parola gönderenler yerine uzak adrese göre kilitlemeyi tercih ederim.

WAF ve alternatifler

Bir Web Uygulaması Güvenlik Duvarı, bir saldırının tarama aşamasında olan birçok sorunu önleyebilir. Ne yazık ki, bunlar pahalı kara kutular, ancak bazı alternatifler var:

  1. Gün içinde tripwire arkadaşı olan biri - Snort - orada ticari WAF en ile. Dik bir öğrenme eğrisi var, ancak anormallikleri ve bilinen kötü kalıpları oldukça iyi tespit edebilir.
  2. Nginx için Naxsi ve Apache için mod_security, bildiğiniz saldırı imzalarını içeren istekleri reddeder. Naxsi biraz daha geneldir ve bilinen bir SQL parçasının aksine, gizlenmiş SQL gibi "buraya ait olmayan şeyler" için hizmeti reddeder.
  3. Fail2ban / sshguard önceki ikisi arasında oturuyor. Farklı günlük türlerini işleyebilir ve özelleştirilebilir eylemlere sahip olabilirler. Dezavantajı gerçeği sonra çalışıyorlar. Loglines genellikle bir eylem tamamlandıktan sonra günlüğe çarpar ve bunun üzerine araçların yanlış pozitiflerle mücadele etmek için bir eşiği vardır. Bu, saldırganın daha önceki aşamalarda doğru bilgi edinmesi durumunda erişim elde etmesi için yeterli olabilir.

Sanırım bir çok şeyi ele aldık ama benim petpeeve'imle bitireyim:


FTP KULLANMAYI DURDUR


Orada. Söyledim. Ve işte gidiyorsunuz: https://wiki.filezilla-project.org/Howto


1

Bu yeni saldırı hakkında kesin bir şey yok, Ben Marks dün sorunu araştırdıklarını bildirdi ve var bu makale de var.

Deneyebileceğiniz en iyi yaklaşım, SSH üzerinden giriş yapmak ve belirli bir dizede sahip olduğunuz tüm dosyaların içinde bir arama yapmaktır.

find . | xargs grep 'db-tab-bottom-right-bg_bg.gif' -sl

Magento kök klasöründen bir eşleşme elde ederseniz, neler olup bittiğini görmek için dosyayı manuel olarak kontrol edin. Örneğin "END PUBLIC KEY" gibi diğer dizelerle aynı.

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.