Ders 4.4: Dizin aşma ve komut enjeksiyonu
Bir ziyaretçinin girdisinin işletim sistemine ulaşmasının iki yolu. Dizin aşma: istekten gelen, içinde ../ olan bir dosya adı amaçlanan klasörden dışarı tırmanır ve web sunucusunun okuyabildiği her dosyayı okur. Komut enjeksiyonu: bir kabuk komutuna yapıştırılan girdi kendi komutlarını ekler ve onları web sunucusunun kullanıcısı olarak çalıştırır. Savunmalar: dosyalar için basename ve izin listeleri, komutlar için girdiyi doğrulamak ve kabuktan kaçınmak (ya da escapeshellarg) ve PHP'yi çalıştıran kullanıcı için en az ayrıcalık. Laboratuvarda fatura indirme üzerinden /etc/passwd'yi okuyor, etiket yazıcısı aracı üzerinden id çalıştırıyor, iki PHP dosyasını da düzeltiyor ve düzeltmeleri kanıtlıyorsun.
20 dk
Bu derste öğreneceklerin
- Dizin aşmayı açıklamak ve ../ saldırılarını tanımak
- Dosya erişimini basename ya da bir izin listesiyle düzeltmek
- Komut enjeksiyonunu ve kabuk özel karakterlerini açıklamak
- Girdiyi doğrulayarak ve kabuktan kaçınarak düzeltmek
- Web sunucusu kullanıcısının neden az hakka sahip olması gerektiğini açıklamak
Temel terimler
- Dizin aşma
- Amaçlanan klasörden çıkmak için bir dosya adında ../ (ya da %2e%2e%2f gibi kodlu biçimlerini) kullanmak.
- Komut enjeksiyonu
- Bir kabuk komutuna yerleştirilen girdinin kendi komutlarını eklemesi.
- Uzaktan kod çalıştırma (RCE)
- Bir saldırganın ağ üzerinden hedef makinede kendi kodunu çalıştırabilmesi.
- basename
- Bir yolun yalnızca son parçasını döndürür: klasörler olmadan dosya adı.
- Girdi doğrulama
- Girdiyi kullanmadan önce beklenen biçimde (tür, uzunluk, karakterler) olduğunu kontrol etmek.
- escapeshellarg
- Bir değeri, kabuğun onu tek bir argüman olarak ele alması için tırnaklara saran PHP fonksiyonu.
← UDP ve ICMP: hızlı mesajlar ve ağ sinyalleri · Tüm dersler · Kimlik doğrulama, yetkilendirme, kayıt tutma ve MFA →