ShellShock zafiyeti son yılların en önemli güvenlik açıklarından bir tanesi durumundadır. Yazının sonunda ifade edeceğim üzere, geçtiğimiz aylarda gene çok konuştuguğumuz Heartbleed zafiyetinin oluşturduğu tehditten daha fazla potansiyeli mevcuttur.
Bu zafiyet ilk bakışta sadece sunucu sistemlerine zarar vericebileceği düşünülsede, hemen hemen tüm Unix türevi işletim sistemlerini kullanan kullanıcılara etki etmektedir.
CGI Uygulama Hizmeti Veren Sistemler
CGI uygulamalarına en aşına olduğumuz noktalar; modem, kamera vb gibi gömülü sistemlerdir. Bu sistemlerin uzun bir süre, belkide hiçbir zaman güncellenemeyeceğini unutmamak gerekir.
Hedef CGI uygulamasına tek bir HTTP talebi gönderilerek zafiyet sömürülebilir. Herhangi bir oturum bilgisi veya yetkiye ihtiyaç yoktur.
curl -H 'User-Agent: () { :;}; echo; /usr/bin/id' http://www.hedefsite.com/main.cgi
Saldırı talebinde ilgili payload’ı User-Agent üzerinden göndermeyi tercih edebilirsiniz. Bu noktada geçerli bir HTTP başlık bilgisi girmeniz zorunlu değildir.
CGI uygulamaları sunucu hizmetleri üzerinde de bulunmaktadır. Aşağıdaki basit bir google keyword’ü ile cgi uygulaması bulunan tüm domainleri tespit edebilirsiniz.
# VEYA inurl:"/cgi-bin" ext:cgi # VEYA site:com ext:cgi # ... örnekler çoğaltılabilir.
CGI Uygulamaları
Zafiyetin yapısında çalıştırılan komutun çıktısı, kullanıcıya gönderilen HTML içerikte bulunmaktadır. Bu vergi herhangi bir analize tabi tutulması mümkün olmadığı için output encoding gibi yaklaşımlarda bulunmak imkansızdır. Bu sayede ShellShock zafiyeti ile CGI uygulamalarına karşı XSS saldırısı düzenlemek mümkündür.
curl -H 'User-Agent: () {<svg onload="alert(1)"> {')' "(</svg>" {& }; echo -e "header\x3abashbug_irsdl" http://www.hedefsite.com/main.cgi
SSH Uygulamaları
Bu zafiyet SSH üzerinden de tetiklenebilmektedir. Ama tek ve yeter şart SSH oturumunu başarı ile tamamlamaktır. Aklına “Ben SSH yapabildikten sonra neyleyim ShellShock zafiyetini ? Gider komutu kendim çalıştırırım.” fikri gelebilir. Bu okurlara ise tek bir keyword veriyorum; gitlab
Git sunucuları barındırdığı veri açısında kritik noktadadır. Private Repository ‘lerinizde bulunan tüm kaynak kodlarınız, yazılımlarınız saldırganların eline geçebilir. Hemen hemen bir çok gitlab sunucusu halka açık şekilde bulunur ve geliştiriciler üye olarak kendi hesaplarını oluşturabilmektedir.
Gitlab sunucularına karşı yapılabilecek bir saldırıyı adım adım anlatmak gerekirse.
- Hedef gitlab sistemine üye olunur.
- Hesap ayarlarından git sunucusuna SSH public key eklenir.
- Hedef sisteme aşağıdaki komut ile ulaşılarak komut çalıştırılır ve saldırı tamamlanır.
ssh git@gitlab.example.com '() { ignored; }; /usr/bin/id'
Halka açık gitlab sistemlerini bulmak ise oldukça basit bir Google keyword’u ile gerçekleştirilebilir.
# Örnek Gitlab inurl:/users/sign_in
Gitlab’ın konu ile ilgili resmi yazısı : https://about.gitlab.com/2014/09/24/gitlab-shell-and-bash-cve-2014-6271/
DHCP ve Unix Kullanıcıları
Bulunduğunuz ağ üzerinden DHCP servisi başlatarak, ağda bulunan tüm kullanıcıların komut satırına erişebilmek mümkündür. DHCP servisini başlatırken 114 değerine aşağıdaki payload yazılırsa, DHCP servisiniz ile konuşan tüm kullanıcılarda bu komut çalışmış olacaktır.
() { ignored;}; echo 'foo'
Talebi alan Client
Görsel Kaynak : https://www.trustedsec.com/september-2014/shellshock-dhcp-rce-proof-concept/
Beyaz Şapkalı Hackerlar
ShellShock zafiyeti çıktığında tüm devlet kurumlarının sunucu sistemleri siber saldırıya karşı korunmasız durumdaydı. Bu durumu düzeltmek isteyen bir hacker grubunun aşağıda ki payload ile kendi ülkelerinde sistemlere “saldırı” düzenlediği gerçeği…
curl -H 'User-Agent: () { :;}; apt-get update && apt-get install --only-upgrade bash' http://www.hedefsite.com
Kendinizi Test Edin
Verilen URL adresini test eden ve güvenlik açığı varsa size söyleyen online hizmeti kullanabilirsiniz.