Command Injection
Last updated
Last updated
Command Injection, bir uygulamayı çalıştıran sunucuda işletim sisteminde (OS) yetkisiz komutlar çalıştırmasına olanak tanıyan bir saldırı türüdür. Genellikle uygulamanın ve verilerinin tamamen tehlikeye atılmasına olanak tanır.
Bu saldırı türü, genellikle bir uygulamanın kullanıcı girdisini doğru şekilde doğrulamadığı veya sınırlamadığı durumlarda ortaya çıkar. Saldırgan, bu eksik doğrulama veya sınırlamadan yararlanarak zararlı komutları uygulamaya sızdırabilir ve bu komutlar hedef sistemde çalıştırılabilir.
İşletim sistemi üzerinde kod çalıştırabileceğimiz için sistem hakkında bilgi toplayabiliriz.
Kullanıcı Girdisinin Doğrulanmaması: Kullanıcıdan alınan girdinin doğrulanmadan veya sınırlanmadan işletim sistemi komutlarına dahil edilmesi.
Kötü Tasarım: Yazılımın, kullanıcı girdisini doğrudan işletim sistemi komutlarına dahil edecek şekilde tasarlanması.
Eksik Girdi Temizleme: Kullanıcı girdisinin zararlı içeriği temizlenmeden komutlara dahil edilmesi.
Blind Injection : Bu tür saldırı tipinde, payloadları test ederken uygulamadan doğrudan çıktı almadığımız senaryolardır. Payloadların başarılı olup olmadığını belirlemek için uygulamanın davranışlarını araştırmanız gerekecektir. Göndereceğimiz payloadın çıktısını göremeyeceğimiz için işlemin bitiş zamanı ile ilgili manipülasyonlarda bulunabiliriz. Ne demek oluyor bitiş zamanı manipülasyonu. sleep
ve ping
komutlarıyla işlemlerin bitişlerinin ertelenmesi sağlanır.
Verbose Command Injection : Bu tür saldırı tipinde ise girdiğimiz komutun çıktısını ekranda görebilir durumdayız. Bu tür saldırılarda genel olarak ls
ve whoami
gibi komutlar sıklıkla kullanılır.
Command Injection zafiyetini simüle etmek için üzerinden anlatım yapacağım.
Fotoğrafta da gördüğünüz gibi verdiğiniz bir IP adresine ping atıyor. Bu yapılan işlem için arkada bir ping komutu çalışıyor. Bizden aldığı IP değerini de ping komutunun sonuna ekliyor ve o adrese ping atıyor.
Bize sorulan soruda ise /home/tryhackme/flag.txt
içindeki yazı isteniyor. Dosyayı okumak için cat
komutu kullanacağız.
Temel olarak neleri kullanacağımızı gördükten sonra bunları nasıl kullanacağız onu konuşmamız lazım. Bizim öncelikle ping
komutuna bir IP adresi vermemiz gerekiyor sonrasında cat
komutuyla bizden istenen dosyayı okumamız gerekiyor.
Aynı anda birden fazla komut çalıştırmak için bazı ara karakterlere ihtiyacımız var. Komut satırında bu özellik için && karakteri kullanılır.Input alanına şöyle bir payload yazmamız lazım 127.0.0.1 || cat /home/tryhackme/flag.txt
, bu payload sonucunda oluşan komut satırı şu şekildedir:
Payloadı girdikten sonra istediğimiz dosyanın içeriğini okuyabiliyoruz.
Çeşitli senaryolarda çeşitli karakterler ve komutlar engellenir. Farklı komutlar kullanılarak engeller aşılabilir.
Bu yazı tarafından hazırlanmıştır.