Hacking Eğitimi - #1-2 Command Injection Nedir?

Nanchew 

Allahümme kun bî
Katılım
9 Nis 2024
Tepki puanı
720
Konum
Ötüken
Command Injection, bir web uygulamasında komutların güvenlik kontrollerinden geçmeden işletim sistemine iletilmesi sonucunda zararlı şekilde kullanılabileceği bir güvenlik açığdır. Bu süzen, genellikle kullanıcı girdiği kontrol edilmediğinde veya doğru bir şekilde sınırlandırılmadığında ortaya çıkar. Bu tür açıklar, siber saldırganların sisteme erişim sağlamasına, hassas verileri ele geçirmesine ya da sistemi devre dışı bırakmasına neden olabilir.

Nasıl Çalışır?​

Command Injection, bir web uygulamasının kullanıcıdan aldığı girdiyi doğrudan bir sistem komutu olarak çalıştırmasıyla gerçekleşir. Bu durumda siber súldırgan, komutun içeriğini değiştirerek kendi zararlı komutlarını uygulamaya ekleyebilir.

Örnek Senaryo:​

Bir web uygulamasının "ping" fonksiyonu üzerinden kullanıcıdan bir IP adresi alıp bu IP'ye ping atarak sonucu ekranda gösterdiğini düşünelim. Komutun arka planda şu şekilde çalıştığını varsayalım:
Kod:
os.system("ping " + user_input)

Bu durumda bir siber süldırgan, girdisini şu şekilde ayarlayabilir:
Kod:
8.8.8.8 && rm -rf /

Yukarıdaki girdinin sonucunda işletim sistemi komutları şu hale gelir:
Kod:
ping 8.8.8.8 && rm -rf /

Bu çok tehlikeli bir durumdur, çünkü "rm -rf /" komutu, sunucudaki tüm dosyaları siler.

Command Injection Çeşitleri​

  1. Doğrudan Komut Enjeksiyonu: Kullanıcı girdisi doğrudan bir sistem komutuna eklenir ve çalıştırılır. Yukarıdaki örnek buna bir örnektir.
  2. Kısaltılmış Komut Enjeksiyonu: Komutlar türkçe karakterler veya başka sembollerle manipüle edilerek enjeksiyon yapılabilir.
  3. Komut Zincirleme: ";", "&&", "|" gibi semboller kullanılarak ardışık komutlar çalıştırılabilir.

Nasıl Korunulur?​


Kullanıcı Girdisinin Kontrolü: Kullanıcı girdiğini mutlaka doğrulayın. Sadece beklenen formatta girdilere izin verin.
Komut Parametrelerini Sınırlama: Sisteme gönderilecek parametreleri sabitleyin veya doğrulayın. Mümkünse dinamik komutlar yerine sabit komutlar kullanın.
Güvenli Kodlama Prensipleri: os.system() gibi fonksiyonları kullanmaktan kaçının. Bunun yerine, Python'da subprocess modülünü kullanarak girdileri doğrulayın.
Web Uygulaması Firewall'ları (WAF): Command Injection denemelerini algılayıp engelleyebilecek bir WAF kullanın.
Minimum Yetki: Web sunucusunun çalıştığı kullanıcı hesabına sadece gerekli yetkileri verin. Çalışan komutların yetkisini minimumda tutun.

Güncel payloadlara bakıp, command injection'da oluşan zafiyetleri takip edebilirsiniz. Sistemlerinizide bunlara göre güncelleyebilirsiniz.
 
131,512Konular
3,268,852Mesajlar
315,316Kullanıcılar
KsjdhsjsjSon Üye
Üst Alt