OS Komut Enjeksiyonu

OS Komut Enjeksiyonu


OS komut enjeksiyonu ayrıca kabuk enjeksiyonu olarak da bilinir, bir saldırganın bir uygulamayı çalıştıran sunucuda rastgele işletim sistemi (OS) komutları yürütmesine ve genellikle uygulamanın ve tüm verilerinin güvenliğinin tamamen tehlikeye girmesine izin veren bir web güvenlik açığıdır. Çoğu zaman, bir saldırgan, saldırıyı kuruluş içindeki diğer sistemlere yönlendirmek için güven ilişkilerinden yararlanarak barındırma altyapısının diğer bölümlerini tehlikeye atmak için bir işletim sistemi komut enjeksiyon güvenlik açığından yararlanabilir.


İsteğe bağlı komutları yürütme


Kullanıcının belirli bir mağazada bir ürünün stokta olup olmadığını görmesini sağlayan bir alışveriş uygulaması düşünün. Bu bilgilere aşağıdaki gibi bir URL aracılığıyla erişilir:

Stok bilgilerini sağlamak için uygulamanın çeşitli eski sistemleri sorgulaması gerekir. Tarihsel nedenlerden dolayı, işlevsellik, ürün ve mağaza kimlikleriyle birlikte bir kabuk komutuna argüman olarak çağrılarak uygulanır:

Bu komut, kullanıcıya iade edilen belirtilen kalemin stok durumunu verir.

Uygulama, işletim sistemi komut enjeksiyonuna karşı hiçbir savunma uygulamadığından, bir saldırgan, rastgele bir komut yürütmek için aşağıdaki girdiyi gönderebilir:

Bu giriş, ürün kimliği parametresinde gönderilirse, uygulama tarafından yürütülen komut şudur:

echo komutu, sağlanan dizenin çıktıda yankılanmasına neden olur ve bazı işletim sistemi komut enjeksiyonu türlerini test etmenin kullanışlı bir yoludur. & karakteri bir kabuk komut ayırıcısıdır ve bu nedenle yürütülen şey aslında birbiri ardına üç ayrı komuttur. Sonuç olarak, kullanıcıya çevrilen çıktı:

OS Komut Enjeksiyonu

Üç çıktı satırı şunu gösterir:

  • Orijinal stockreport.pl komutu, beklenen bağımsız değişkenler olmadan yürütüldü ve bu nedenle bir hata mesajı verdi.
  • Enjekte edilen echo komutu yürütüldü ve sağlanan dize çıktıda yankılandı.
  • Orijinal argüman 29, bir hataya neden olan bir komut olarak yürütüldü.

Ek komut ayırıcısını & enjekte edilen komuttan sonra yerleştirmek, enjekte edilen komutu enjeksiyon noktasını takip edenlerden ayırdığı için genellikle yararlıdır. Bu, aşağıdakilerin enjekte edilen komutun yürütülmesini engelleme olasılığını azaltır.

Faydalı komutlar


Bir işletim sistemi komut ekleme güvenlik açığı belirlediğinizde, tehlikeye attığınız sistem hakkında bilgi almak için bazı başlangıç ​​komutlarını yürütmek genellikle yararlıdır. Aşağıdaki tabloda, Linux ve Windows platformlarında yararlı olan bazı komutların bir özeti verilmiştir:

OS Komut Enjeksiyonu


Kör OS komut enjeksiyon güvenlik açıkları


İşletim sistemi komut enjeksiyonunun birçok örneği, kör güvenlik açıklarıdır. Bu, uygulamanın komuttan çıktıyı HTTP yanıtı içinde döndürmediği anlamına gelir. Kör güvenlik açıklarından yararlanmaya devam edilebilir, ancak farklı teknikler gereklidir.

Kullanıcıların site hakkında geri bildirim göndermesine izin veren bir web sitesi düşünün. Kullanıcı e-posta adresini ve geri bildirim mesajını girer. Sunucu tarafı uygulaması daha sonra site yöneticisine geri bildirimi içeren bir e-posta oluşturur. Bunu yapmak için, gönderilen ayrıntılarla birlikte mail programına seslenir. Örneğin:

Eğer mail komutunun çıktısı varsa, uygulamanın yanıtlarında döndürülmez ve bu nedenle echo yükünü kullanmak etkili olmaz. Bu durumda, bir güvenlik açığını tespit etmek ve kullanmak için çeşitli başka teknikler kullanabilirsiniz.

Zaman gecikmelerini kullanarak kör OS komut enjeksiyonunu algılama


Uygulamanın yanıt vermesi için geçen süreye bağlı olarak komutun yürütüldüğünü onaylamanıza olanak tanıyan, bir zaman gecikmesini tetikleyecek enjekte edilmiş bir komut kullanabilirsiniz. Ping komutu, gönderilecek ICMP paketlerinin sayısını ve dolayısıyla komutun çalışması için geçen süreyi belirtmenize izin verdiği için bunu yapmanın etkili bir yoludur:

Bu komut, uygulamanın 10 saniye boyunca geri döngü ağ bağdaştırıcısına ping atmasına neden olur.

Çıktıyı yeniden yönlendirerek kör işletim sistemi komut enjeksiyonunu kullanma


Çıktıyı enjekte edilen komuttan web kökü içindeki bir dosyaya yönlendirebilir ve daha sonra tarayıcınızı kullanarak alabilirsiniz. Örneğin, uygulama /var/www/static dosya sistemi konumundan statik kaynaklar sunuyorsa, aşağıdaki girişi gönderebilirsiniz:

OS Komut Enjeksiyonu

The>character, whoami komutundan çıktıyı belirtilen dosyaya gönderir. Ardından, dosyayı almak için dosyasını almak için OS Komut Enjeksiyonu tarayıcınızı kullanabilir ve enjekte edilen komuttan çıktıyı görüntüleyebilirsiniz.

Bant dışı (OAST) teknikleri kullanarak kör OS komut enjeksiyonu kullanma

OAST tekniklerini kullanarak, kontrol ettiğiniz bir sistemle bant dışı ağ etkileşimini tetikleyecek enjekte edilmiş bir komut kullanabilirsiniz. Örneğin:

Bu yük, belirtilen etki alanı için bir DNS aramasına neden olmak için nslookup komutunu kullanır. Saldırgan, belirtilen aramanın gerçekleştiğini izleyebilir ve böylece komutun başarıyla enjekte edildiğini algılayabilir.

Bant dışı kanal ayrıca enjekte edilen komutlardan çıktıyı sızdırmak için kolay bir yol sağlar:

Bu, whoami komutunun sonucunu içeren saldırganın etki alanına bir DNS aramasına neden olur:

İşletim sistemi komutlarını enjekte etme yolları


OS komut enjeksiyonu saldırılarını gerçekleştirmek için çeşitli kabuk metakarakterleri kullanılabilir. Bir dizi karakter, komut ayırıcılar olarak işlev görür ve komutların birlikte zincirlenmesine izin verir. Aşağıdaki komut ayırıcılar hem Windows hem de Unix tabanlı sistemlerde çalışır:

  • &
  • &&
  • |
  • ||

Aşağıdaki komut ayırıcılar yalnızca Unix tabanlı sistemlerde çalışır:

  • ;
  • Yeni satır (0x0a veya \n)


Unix tabanlı sistemlerde, orijinal komut içinde enjekte edilen bir komutun satır içi yürütülmesini gerçekleştirmek için ters tik veya dolar karakterini de kullanabilirsiniz:

  • ` enjekte edilen komut `
  • $ ( enjekte edilen komut )


Farklı kabuk meta karakterlerinin, belirli durumlarda çalışıp çalışmadıklarını ve komut çıktısının bant içi alınmasına izin verip vermediklerini veya yalnızca kör sömürü için yararlı olup olmadıklarını etkileyebilecek çok farklı davranışları olduğunu unutmayın.

Bazen, kontrol ettiğiniz girdi orijinal komutta tırnak işaretleri içinde görünür. Bu durumda, yeni bir komut enjekte etmek için uygun kabuk meta karakterlerini kullanmadan önce alıntılanan bağlamı (” veya ‘ kullanarak) sonlandırmanız gerekir.

OS Komut Enjeksiyonu Saldırıları Nasıl Önlenir?


İşletim sistemi komut ekleme güvenlik açıklarını önlemenin açık ara en etkili yolu, uygulama katmanı kodundan hiçbir zaman işletim sistemi komutlarını çağırmamaktır. Hemen hemen her durumda, daha güvenli platform API’lerini kullanarak gerekli işlevselliği uygulamanın alternatif yolları vardır.

Kullanıcı tarafından sağlanan girdiyle işletim sistemi komutlarının çağrılmasının kaçınılmaz olduğu düşünülüyorsa, güçlü girdi doğrulaması gerçekleştirilmelidir. Etkili doğrulamanın bazı örnekleri şunları içerir:

  • İzin verilen değerlerin beyaz listesine göre doğrulama.
  • Girişin bir sayı olduğunu doğrulama.
  • Girişin yalnızca alfasayısal karakterler içerdiğini, başka bir sözdizimi veya boşluk içermediğini doğrulama.


Girişi kabuk metakarakterlerinden kaçarak temizlemeye çalışmayın. Pratik olarak, bu hataya çok açıktır ve yetenekli bir saldırgan tarafından atlanmaya karşı savunmasızdır.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »