Saldırıya uğrayan kolay WP SMTP (v1.3.9) 0 günlük güvenlik açığının süreci ve yinelenmesi

Önsöz

Blog sitem wordpres tarafından barındırılıyor ve geçen ay bazı anormallikler buldum.

3.12'de posta kutusu patladı ve patlatılan web sitesi hakkında 100'den fazla bildirim e-postası alındı.

O gün görmek garip değildi, çünkü daha önce böyle bir durum olmuştu ve Japonya'ya gitmeleri için her gün onlarca patlama bildirimi vardı (Buda departmanı istasyonu açtı) ...

Ancak o günlerde e-postanın değişmeyen tonu bana bu konunun o kadar basit olmadığını söylüyordu.

Ayın 15'inde, patlatma bildirimi önceki iki güne göre iki kat daha yüksekti. Durumu kontrol etmek için hemen web sitesine giriş yaptım. Anormallik bulunmadı. Çok fazlaydı. Patlama IP'si engellendi. Lanet şey şu ki, bu süre boyunca hiç zaman yoktu, oraya buraya koşarak, patlamalarınızla uğraşacak zamanınız yok.

Ayın 16'sında patlamaların sayısı düştü ve umurumda bile değildi. 19'una kadar e-posta bana web sitesine yeni bir üye kaydettirmemi hatırlattı? ? ?

Web sitesi kayıt işlevi kapalıysa kayıt olabilir miyim? Bu, batırıldığımı bulmak içindir; kullanıcı başarıyla kaydolduğunda patlatma hızı da durdu.

Sonraki patlamalara gelince, aynı grup olmadıkları tahmin ediliyor Hesap kaydı başarılı olduktan sonra, çok sayıda web sitesi kilit bildirimi de aldılar.

Patlatma zamanının analizine göre 23-7 zaman dilimindeydi o günler yorulmuştu ve köpek olmuştu, sabahın erken saatlerinde hala yanında mıyım?

Bu e-postayı görene kadar, ben ***** ......

Web sitesi artık benim web sitem değil.

Web sitesinin arka planına giriş yapın ve engellenen tüm IP'lerin temizlendiğini bulun:

Saldırganın en son giriş yaptığı zaman. Bu hileyi düşünün, neyin patladığını, doğrudan kendi hesabıyla giriş yapın.

Takvime bir göz attım ve sanırım nisan başına kadar meşgul olacağım. .

Web sitesini hızla kapattım ve analiz sonrası için yedekledim.

analiz

Analiz başlıyor, önünde bir sürü saçmalık ...

Web sitesi değiştirildi: kayıt işlevi açıldı.

Yeni bir kayıtlı kullanıcı bulundu:

Web sitesinin ana sayfa adresi değiştirildi:

Web sitesinin ana sayfasına kötü niyetli bir web sitesine atlamak için bir komut dosyası enjekte edildi ve komut dosyalarının birden fazla eklenti tema sayfasına yerleştirildiği de bulundu.

Web sitesinin değiştirilmiş içeriğine ve NinTechNet tarafından 3.15'te WordPress WP SMTP eklentisinde 0 günlük bir güvenlik açığının en son ifşa edilmesine göre (v1.3.9 sürümünde mevcuttur), saldırgan 0 günlük güvenlik açığından yararlandı;

3.17'de resmi sürüm v1.3.9.1 güncellendi. Sürümü güncellemeyen web yöneticileri için lütfen zamanında güncelleyin!

Güvenlik açığı analizi: sorunlu kod bloğu

function admin_init () { eğer (tanımlı ('DOING_AJAX') DOING_AJAX) { add_action ('wp_ajax_swpsmtp_clear_log', array ($ this, 'clear_log')); add_action ('wp_ajax_swpsmtp_self_destruct', array ($ this, 'self_destruct_handler')); } // günlük dosyasını görüntüle eğer (isset ($ _GET )) { eğer ($ _GET === 'view_log') { $ log_file_name = $ this- > seçeneğini seçer; eğer (! file_exists (plugin_dir_path (__FILE__). $ log_file_name)) { eğer ($ this- > günlük ("Kolay WP SMTP hata ayıklama günlük dosyası \ r \ n \ r \ n") === false) { wp_die (Günlük dosyasına 'yazılamıyor. Eklenti dizininin ('. plugin_dir_path (__FILE__). ') yazılabilir olup olmadığını kontrol edin.'); }; } $ logfile = fopen (plugin_dir_path (__FILE__). $ log_file_name, 'rb'); eğer (! $ logfile) { wp_die ('Günlük dosyası açılamıyor.'); } başlık ('İçerik Türü: metin / düz'); fpassthru ($ logfile); ölmek; } } // bunun dışa aktarma ayarları isteği olup olmadığını kontrol edin $ is_export_settings = filter_input (INPUT_POST, 'swpsmtp_export_settings', FILTER_SANITIZE_NUMBER_INT); eğer ($ is_export_settings) { $ veri = dizi (); $ seçenekler = get_option ('swpsmtp_options', dizi ()); $ veri = $ seçenekler; $ swpsmtp_pass_encrypted = get_option ('swpsmtp_pass_encrypted', false); $ veri = $ swpsmtp_pass_encrypted; eğer ($ swpsmtp_pass_encrypted) { $ swpsmtp_enc_key = get_option ('swpsmtp_enc_key', false); $ veri = $ swpsmtp_enc_key; } $ smtp_test_mail = get_option ('smtp_test_mail', array ()); $ veri = $ smtp_test_mail; $ çıkış = dizi (); $ out = serileştirme ($ veri); $ out = 1; $ out = md5 ($ out ); $ dosyaadı = 'easy_wp_smtp_settings.txt'; başlık ('Content-Disposition: attachment; filename = "'. $ dosyaadı. '"'); başlık ('İçerik Türü: metin / düz'); echo serileştirme ($ çıkış); çıkış; } $ is_import_settings = filter_input (INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT); eğer ($ is_import_settings) { $ err_msg = __ ('Ayarları içe aktarırken hata oluştu', 'easy-wp-smtp'); eğer (boş ($ _FILES )) { echo $ err_msg; wp_die (); } $ in_raw = file_get_contents ($ _FILES ); Deneyin { $ in = unserialize ($ in_raw); eğer (boş ($ içinde )) { echo $ err_msg; wp_die (); } eğer (boş ($ in )) { echo $ err_msg; wp_die (); } eğer (md5 ($ in )! == $ in ) { echo $ err_msg; wp_die (); } $ veri = serileştirme ($ içinde ); foreach ($ veri olarak $ anahtar = > $ değer) { update_option ($ anahtar, $ değer); } set_transient ('easy_wp_smtp_settings_import_success', true, 60 * 60); $ url = admin_url (). 'seçenekler-general.php? sayfa = swpsmtp_settings'; wp_safe_redirect ($ url); çıkış; } catch (Exception $ ex) { echo $ err_msg; wp_die (); } } }

Easy-wp-smtp.php betiğinden yukarıdaki admin_init () işlevi, kullanıcı yönetim alanına eriştiğinde admin_int kancasından geçer. Wordpress veritabanındaki günlükleri görüntülemek / silmek, konfigürasyonu içe / dışa aktarmak ve güncelleme seçenekleri için kullanılır.Kullanıcı işlevlerini kontrol etmez, böylece oturum açmış herhangi bir kullanıcı bunu tetikleyebilir. Easy WP SMTP, admin-ajax.php üzerinde çalıştırmak için AJAX ve admin_inj kancasını kullandığından, kimliği doğrulanmamış kullanıcılar tarafından da çalıştırılabilir.

Bu nedenle, kimliği doğrulanmamış kullanıcılar yukarıdaki işlevi tetiklemek ve kodlarını çalıştırmak için action = swpsmtp_clear_log gibi bir ajax isteği gönderebilir.

İzlenebilirlik

Başlangıçta saldırganın izini sürmek istiyordu, ancak sunucu Alibaba Cloud'da barındırılıyordu ve dışa aktarma ayrı bir IP değildi. Yukarıdaki ekran görüntüsünde patlatılan tüm IP'ler saldırganın IP'si değildi. Daha da acı verici olan şey web sitesi günlüklerinin (zamanında değil) temizlenmesidir Arka planda işlemeye giriş yapın), benim için yalnızca iki yönlendirilmiş alan kaldı.

Bu iki IP'nin IP ile sorgulanması, tehdit istihbaratı ile patlatıldı. Artık alan adını ziyaret etmek için tarayıcıyı kullanmak, kimlik avı web sitesi bilgilerini (saçma, kaç wordpress engelleniyor) soracaktır.

Bu eklentinin yorum sütununda da bir sürü lanet var, şu anda kaç web sitesinin saldırı altında olduğu tahmin edilebilir.

tekrarlayan

Ardından, güvenlik açığını yeniden oluşturun.

Easy WP SMTP sürümünü onaylayın:

Web sitesi kayıt işlevinin kapalı olup olmadığını kontrol edin:

İnternette verilen POC'ye göre bir dosya oluşturun ve aşağıdaki içeriği dosyaya yazın:

Normalde bu dosyayı istemek 0 döndürür:

Dosyayı yükleyin:

Web sitesi giriş arayüzünü ziyaret edin, kayıt işlevi açıldı. Bir hesap kaydetmeyi deneyin ve kayıtlı kullanıcının bir yönetici olup olmadığını doğrulayın Kayıt işlemi yeni kullanıcı kayıt işlemiyle aynıdır Posta kutusu yoluyla bir e-posta alın.

Doğrulama başarılı.

Kullanıcı devipentesting99'u görüyor musunuz? Bu, saldırgan tarafından oluşturulan kullanıcıdır.

Bu noktada nüks bitmiştir.

"Zaten bir web yöneticisisiniz", ne yapabileceğinizi söylemeyin (kitaplığı silip çıkın).

Küçük bir öneri:

Değiştirilen dosyayı onarın, web kabuğunu silin (birden fazla web kabuğunun yüklendiğini tespit edin);

Eklenti en son sürüme güncellenmiştir ve kararlı sürüm de mevcuttur;

Web sitesinin sorunu zamanında ele alınmalı, acil durum müdahalesinin önemi;

En son güvenlik açıklarına dikkat edin ve resmi sürüm güncellemesini zamanında güncelleyin;

Web sitesi günlüklerini düzenli olarak yedekleyin, gelecekte günlükler eksik olabilir;

Koşullar WEB uygulaması güvenlik duvarını kullanabilir.

* Yazar: timneh, FreeBuf.COM'dan yeniden basılmıştır.

Li Yuanyi Ighalo, Preciia'nın lore, Shenzhen 2-1 Shenhua'yı attı
önceki
GIF: Tian Yinong puan verdi, Carrasco vuruşları, Suning 1-1
Sonraki
DNF (özel sunucu) oyunları oynamaktan oyun verilerini değiştirmeye
Filmleri popüler makaleler kazandı ve çok sayıda ödül kazandı, ancak bir borsa turundan sonra, 268 milyon yuan gibi büyük bir borcu vardı.
[Bir dolandırıcı beyaz bir şapkayla karşılaştığında] Telekomünikasyon dolandırıcılarının bilgisayarının kontrolünü nasıl ele geçirebileceğimi görün
Öfkeyle MLM web sitesi tökezleyen kızı kurtarıyor
Ekranların% 1'i ve gişelerin% 13'ü IMAX Entertainment CEO'su Megan Corrigan, IMAX gişesinin "sırrını" açıklıyor
Bir öğretmen eğitimi bilgi yönetim sisteminin penetrasyonu ile ilgili fikirlerin paylaşılması
Zhao Wenzhuo reklam sözcüsü olarak göründü "Reklam sözcüsü sektör eğilimleri ve sözcüsü ticari değer değerlendirme standartları" yayınlandı
En sık kullanılan 5 hackleme aracı ve nasıl savunulacağı
Shehei Köyü sekreteri soruşturuldu, konağa lüks arabalar, saatler, silahlar ve fildişi gizlendi.
Yeni "Altına Hücum": Batı Çin'in Yükselişi
GIF: Qiao Wei bir hentbol gönderdi ve Ighalo tek seferde skoru eşitledi
GIF: Jiang Zhe hentbol Alan penaltı vuruşu, Tianhai 2-2 Chongqing
To Top