WebPageTest hizmetinin 0 günlük güvenlik açığıyla Mozilla AWS ortamında uzaktan kod yürütmeyi gerçekleştirin

Bu makalede, Assetnote CS güvenlik ekibi Mozilla AWS bulut hizmeti ağ ortamının saldırı yüzeyini analiz ettiğinde, içinde dağıtılan ağ performansı test aracı WebPageTest'te 0 günlük bir güvenlik açığı keşfettiler. Bu güvenlik açığı nihayet Mozilla AWS sunucusunda uzaktan kod yürütmeyi gerçekleştirmek için kullanıldı ( RCE).

WebPageTest'e Giriş

WebPageTest, açık kaynaklı bir web ön uç performans analiz aracıdır. İki türü vardır: çevrimiçi sürüm ve yerel olarak oluşturulmuş sürüm. Belirli web siteleri için ücretsiz performans değerlendirmesi sağlayabilir. IE ve Chrome tarayıcılarını destekler. Gerçek tarayıcıların (IE Ve Chrome) bağlantı hızı, dünyanın çeşitli yerlerinden ücretsiz web sitesi hız testleri yapın. Çok adımlı işlemler, video yakalama, içerik engelleme ve daha fazlasını içeren basit testler çalıştırabilir veya gelişmiş testler gerçekleştirebilirsiniz. Kaynak yükleme şelale çizelgeleri, sayfa hızı optimizasyon kontrolleri ve iyileştirme önerileri dahil olmak üzere test sonuçlarına dayalı olarak çok sayıda tanı bilgisi sağlanacak ve her bir öğeye nihai bir derecelendirme verilecektir. Kuruluşlar veya kuruluşlar, dahili bir test sitesi oluşturmak ve dahili web sitesinde performans testi analizi yapmak için açık kaynak sürümünü indirebilir.

İntranette dağıtılan WebPageTest hizmetinde, bazı temel kullanıcı adı ve parola doğrulaması, settings.ini dosyası değiştirilerek etkinleştirilebilir.Bu nedenle, anonim kullanıcıların oturum açmasını önlemek için bunu yapılandırmanız önerilir.

Assetnote CS güvenlik ekibi tarafından değerlendirilen birçok intranet WebPageTest hizmeti, temel kullanıcı doğrulama önlemlerinden yoksundur.Bu nedenle, olası sonuç, bir saldırganın SSRF'yi (Sunucu İsteği Sahteciliği) başlatmak için WebPageTest'in bir dizi performans testi aracını kullanabilmesidir. ) Hedefin intranet kaynaklarına erişim sağlamak için saldırı.

Güvenlik açığına genel bakış

Kasım 2017'de Assetnote CS güvenlik ekibi, Mozilla'nın AWS (Amazon Bulut Hizmetleri) ortamının testi sırasında aşağıdaki iki ağ varlığını keşfetti:

wpt-vpn.stage.mozaws.net

wpt1.dev.mozaws.net

Bu ağ varlıklarının her ikisi de, Mozilla AWS ortamındaki WebPageTest hizmetinin test örneklerine aittir.Ayrıca, Mozilla AWS ortamında dağıtılan WebPageTest hizmetinde herhangi bir temel kullanıcı adı ve parola doğrulama önlemi yoktur. White Hat Mathias işbirliği ile bunları dağıttık WebPageTest hizmeti kaynak kod analizi gerçekleştirdi. Birkaç saatlik testten sonra, uzaktan kod yürütülmesine (RCE) yol açabilecek bir saldırı zinciri keşfettik.

O zamanlar bu 0 günlük bir güvenlik açığı olduğundan, bu güvenlik açığını gidermek için Mozilla ve WebPageTest ekibiyle zamanında iletişim kurup görüştük. 17 Ocak 2018'de onarılan sürümde gönderilen teslim bilgilerini görebilirsiniz.

Güvenlik açığı keşfi ve kullanımı

WebPageTest'in kaynak kodunda dikkatimizi çeken ilk şey, /www/work/workdone.php betiği tarafından sağlanan rasgele zip dosyalarını karşıya yükleme ve açma işlevidir.Bu php komut dosyası, 127.0.0.1 dışındaki kaynağa erişim mantığını içerir. Kod aşağıdaki gibidir. (Satır 110):

... ! strcmp ($ _ SUNUCU; "127.0.0.1") ...

Ayrıca bu php dosyasında, herhangi bir zip dosyasını yükleme ve onu bilinen bir konuma açma mantığı olan başka bir tehlike bulduk.Kod aşağıdaki gibidir (133-136. Satırlar):

eğer (isset ($ _ FILES)) { ExtractZipFile ($ _ FILES, $ testPath); CompressTextFiles ($ testPath); }

Yukarıdaki kod mantığına dayanarak, IP'yi 127.0.0.1 olarak gizleyebilirsek, bunları sunucu tarafı kod yürütmesini gerçekleştirmek için kullanabilir miyiz? Ancak, gerçek düşündüğümüz kadar basit değil. /Www/work/workdone.php'nin 321. satırında, böyle bir yöntem işlevi var:

SecureDir ($ testPath);

SecureDir yöntemi işlevinin kodu, /www/common_lib.inc dosyasının 2322-2347 satırında tanımlanmıştır:

/ ** * Verilen dizinde riskli dosya bulunmadığından emin olun ve her şeyin yürütülmemesini sağlayın * * @param karışık $ yolu * / function SecureDir ($ yol) { $ dosyalar = scandir ($ yol); foreach ($ dosya olarak $ dosya) { $ filepath = "$ yol / $ dosya"; eğer (is_file ($ dosya yolu)) { $ parçalar = yol bilgisi ($ dosya); $ ext = strtolower ($ parçalar); eğer (strpos ($ ext, 'php') === false strpos ($ ext, 'pl') === false strpos ($ ext, 'py') === false strpos ($ ext, 'cgi') === false strpos ($ ext, 'asp') === false strpos ($ ext, 'js') === false strpos ($ ext, 'rb') === false strpos ($ ext, 'htaccess') === false strpos ($ ext, 'jar') === false) { @chmod ($ dosya yolu, 0666); } Başka { @chmod ($ filepath, 0666); // herhangi bir nedenle bağlantının kaldırılamaması durumunda bağlantıyı kaldır ($ dosya yolu); } } elseif ($ dosya! = '.' $ dosya! = '..' is_dir ($ dosya yolu)) { SecureDir ($ dosya yolu); } } }

Bazı tehlikeli dosyaları kontrol edecek ve filtreleyecek ve dosya yürütme işlemi olmadığından emin olacaktır.Sadece sonraki kod akışında göründüğü için, kullanılabilecek bir yarış koşulu (Yarış Durumu) vardır, yani web'e açın Sunucunun PHP dosyalarına, filtrelenmeden ve silinmeden önce kısaca erişilebilir.

Oluşturduğumuz saldırı zincirinde önkoşullar çok basittir, çünkü wpt-vpn.stage.mozaws.net hedef varlığın WebPageTest hizmetinde, Traceroute komutunu çalıştırdıktan sonra WebPageTest tarafından oluşturulan geçerli bir test kimliği elde edebiliriz. Bu kimlik numarasının kullanımı daha kolaydır. Örneğin, Traceroute komutunu https://google.com içinde çalıştırıyoruz:

Bundan sonra, WebPageTest hizmeti, test kimliğini içeren bir performans testi sonucu URL sayfasına atlayacaktır:

Burada 171124_GW_9 test kimliğidir.

Bu noktada, 127.0.0.1 IP sahteciliği adımının hala gerisindeyiz.Bu adım başarılı olursa, workdone.php dosyasına etkin bir şekilde erişebilir ve komut yürütmeyi başlatabiliriz.

Analizden sonra /www/common.inc dosyasının 70. satırında aşağıdaki kod mantığını bulduk:

eğer (ayarlanmış ($ _ SUNUCU)) $ _SERVER = $ _SERVER;

Bu kod parçacığından, bir istek göndererek FASTLY-CLIENT-IP istek başlığını 127.0.0.1 olarak ayarlayabileceğimizi bulabiliriz, böylece uzak kullanıcı olarak $ _SERVER'ın IP adresini değiştirebiliriz.

Özetle, son sunucu tarafı kod yürütmesini sağlamak için iki Burp Intruder saldırı uzantısı kurabiliriz. Bir Burp Intruder, kötü amaçlı bir zip dosyası yüklemek için kullanılır ve diğer Burp Intruder, sıkıştırmayı açtıktan sonra hedef sistemde bulunan php dosyasına erişmek için kullanılır. Yukarıdaki yarış koşullarını kullanmamız için maksimum Burp Intruder thread sayısı 200'dür.

Neyse ki, yüksek hızlı bir istek eklentisi olan Turbo Intruder'ın yardımıyla, istismar zincirimiz nispeten kararlıdır. Sonunda, Mozilla AWS ağ ortamında sunucu tarafında kod yürütmeyi başarıyla uyguladık. Aşağıdaki gibi, wpt-vpn.stage.mozaws.net içinde phpinfo () okuma çağrısını uyguladık:

Şimdi, resmi Mozilla güvenlik açığı duyurusu web sitesi olan Bugzilla, buradan görüntüleyebileceğiniz güvenlik açığı raporumuzu yayınladı.Raporda ayrıntılı yineleme adımları, test ekran görüntüleri, PoC kodu, koordinasyon ve iletişim ve diğer ayrıntılı unsurlar ve ilgili süreçler yer almaktadır. Sonunda, resmi bir Mozilla 500 $ ödülü aldık ve teşekkürler.

* Referans kaynağı: assetnote, FreeBuf.COM'dan yeniden oluşturulmuş bulutlar

Çeşitli yerlerde kolej giriş sınavı için en yüksek puan kimdir? En çok puanı hangi bölge düşürdü?
önceki
Zafer Kralı Marco Polo, bir saniyede dört atış, süper hızlı saldırı hızı ile savaş alanına hakim
Sonraki
Microsoft'un 2 numaralı figürü vefat etti, Apple, Google ve diğer devler yas tutmak için mesajlar gönderdi
"Avengers 4: Endgame" resmi özel sayısının kapağı açığa çıktı ve dul kadının güzelliği patladı!
2017 Şangay Otomobil Fuarı Pavyonu: GAC Trumpchi GS4 PHEV
Harvard Üniversitesi GFL Çin-Yabancı Beşeri Bilimler Değişim Araştırması Yaz Projesi
NIKE'dan insani bakım! SNKRS, satın alamayacağınız 6 spor ayakkabıyı listeleyecek mi?
Şangay Otomobil Fuarı Pavilion Express Vol1: GS7 / GE3 / GS4 EV
Athena, delici silah
Zaobao: Vivonun gizemli yeni makinesi GeekBench / Samsung S10 + fiyatında tanıtıldı
Microsoft kurucu ortağı Paul Allen kanserden öldü; Pinduoduo sahte ürün sorunu tekrar saldırıya uğradı; Odada gizli bir kamera olduğunu özgürce yanıtladı | Lei Feng Morning Post
Ödemenin yanı sıra oynamak veya giymek ister misiniz? Bu en moda yol!
2017 Shanghai Auto Show Pavilion: Küçük bir makyajlı Mustang T70 ortaya çıktı
Mi 9'un görünümü ve konfigürasyonu neredeyse duyuruldu.Size fiyatını söyleyeyim.
To Top