Haftanın Hackleri: Komut Enjeksiyonu, Same Origin Policy ve Angular 1.5.8

Emre Iyidogan - 07 Aralık 2016 -

“Haftanın Hackleri” başlığı ile yayınladığımız yazılarda bu hafta Boşluk Karakteri Kullanmadan Komut Enjeksiyonu, Same Origin Policy’de Açılan Gedik ve Angular 1.5.8 Engeli başlıklı konulara değindik. Sosyal medyada bu yazıyı #haftaninhackleri etiketi ile tartışabilir, sorularınızı bize sorabilirsiniz.

Haftanın Hackleri: Komut Enjeksiyonu, Same Origin Policy ve Angular 1.5.8

“Haftanın Hackleri” başlığı ile yayınladığımız yazılarda bu hafta Boşluk Karakteri Kullanmadan Komut Enjeksiyonu, Same Origin Policy’de Açılan Gedik ve Angular 1.5.8 Engeli başlıklı konulara değindik. Sosyal medyada bu yazıyı #haftaninhackleri etiketi ile tartışabilir, sorularınızı bize sorabilirsiniz.

Bu hafta web güvenliğinde dikkatimizi çeken konular:

Boşluk Karakteri Kullanmadan Komut Enjeksiyonu

Girdilerin doğrulanması ve sanitize edilmesinde yapılan herhangi bir hata, bu açığın saldırganlar tarafından suistimal edilip sunucu üzerinde komut çalıştırılmasına neden olabiliyor. Örneğin bir nslookup servisinin input alanına girdiğiniz “google.com && ls” komutu çalışmazken, boşlukları kaldırarak aynı komutu girdiğinizde sunucu size istenilen çıktıyı veriyor.

İlk örnekte boşlukların kaldırılması komutun çalışması için yeterliyken bazı durumlarda fazlasını yapmak gerekebilir. Şöyle ki Unix vb. sistemlerde düz metin dosyalarını açmak için kullanılan cat komutu boşluklar silinince çalışmamakta. “google.com&&cat /etc/passwd” komutu için zorunlu olan boşluk karakterini kaldırdığınızda istenilen sonucu almak mümkün olmuyor.

Bunun yerine, boşluk karakterlerinin onaltılık olarak girildiği farklı bir komut enjeksiyonu denenmiş: Söz konusu enjeksiyon yukarıda verdiğimiz nslookup servisi örneğiyle birleştirildiğinde “google.com&&CMD=$'\x20/etc/passwd'&&cat$CMD” komutu ortaya çıkıyor. Doğal olarak, yapılan hack sonucunda /etc/passwd dosyasının içeriği görüntülenebilir hale geliyor.

Daha fazla ayrıntı için burayı ziyaret edebilirsiniz:
http://www.betterhacker.com/2016/10/command-injection-without-spaces.html

Same Origin Policy’de Açılan Gedik

Same Origin Policy’nin genel olarak, iki farklı origin arasında etkileşimi kısıtlayan tarayıcı temelli bir kurallar bütünü olduğunu biliyoruz. Örneğin, SOP için herhangi bir bypass yöntemi kullanılmamış olan a.ornek.com ve b.ornek.com sitelerine direkt olarak erişim sağlayan bir kullanıcının, a.ornek.com’da bıraktığı cookie bilgisine b.ornek.com üzerinden ulaşamayız. Çünkü SOP, bu işlemi kısıtlar. Geliştiricilerin kullandığı birkaç bypass yöntemi mevcut. Fakat burada anlatılan olay, geliştiricilerin istemediği bypass yöntemlerinden birine örnek olabilir.

Burada gerçekleştirilen “yansılama” (yazarın ifadesiyle, mirroring) işlemi, birçok kullanıcının bildiği Google Translate, Internet Archive ve Hide.me gibi farklı bir originden aldığı veriyi kullanıcıya yansıtan servisler vasıtasıyla yapılıyor. Yukarıdaki örnek üzerinden anlatacak olursak, Google Translate vasıtasıyla a.ornek.com’a giriş yapan bir kullanıcının cookie bilgisini yine Google Translate üzerinden görüntülediğimiz b.ornek.com’da göstermemiz mümkündür. Yani harici bir içeriği kullanıcılara gösteren bu tarz yansılama servisleri, SOP’un çalışmasını engelleyebiliyor.

Bing Cache, Hide.me, HideMyAss!, Microsoft Translator gibi pek çok servis, bu problemden etkilenmiş olan siteler arasında yer alıyor. SOP gibi önemli bir meselenin zafiyete uğratıldığı bu güvenlik olayının, son kullanıcılardan geliştiricilere kadar, herkes tarafından bilinmesinde fayda var. Gerekli önlemler ve tüm ayrıntılar için buraya tıklayabilirsiniz.

Angular 1.5.8 Engeli

Mozilla Firefox için geliştirdikleri extension üzerinde aylarca çalıştıklarını belirten bir geliştirici takımı, önce kendi yazdıkları eklentiyi review etmeleri için eklenti takımına göndermişler. Bir ayın ardından istenilen ufak tefek değişiklilkler yapılmış ve tekrar Mozilla eklenti takımına gönderilmiş. Karşılaştıkları sorun şu: yazdıkları eklentiyi yayımlayamıyorlar çünkü Angular 1.x sürümünün tümünde bir yasaklama söz konusu. Yani mesele Mozilla ile Angular geliştiricileri arasında. Bu sorunun Google tarafından çözüldüğü belirtilmesine rağmen açık olup olmadığıyla alakalı herhangi bir bilgi verilmemiş. Dolayısıyla yapılan eklentinin yayımlanması için bu zafiyetin ya da problemin çözülmesi gerekiyor.

Öte yandan Angular ve Mozilla yetkilileri bu konunun çözümü için gerekli çalışmayı başlattıklarını ifade ettiler. Tüm ayrıntılar ve geliştiricilerin verdikleri cevapları görmek için şuraya tıklayın: https://github.com/mozilla/addons-linter/issues/1000