80,443 - Pentesting Web Methodology

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

Njia nyingine za kusaidia HackTricks:

Ikiwa una nia ya kazi ya kuhack na kuhack mambo yasiyohack - tunakupa kazi! (ujuzi wa Kipolishi ulioandikwa na kuzungumzwa vizuri unahitajika).

Taarifa Msingi

Huduma ya wavuti ni huduma ya kawaida na pana zaidi na kuna aina nyingi za udhaifu.

Bandari ya chaguo: 80 (HTTP), 443(HTTPS)

PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  ssl/https
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0

Mwongozo wa Web API

pageWeb API Pentesting

Muhtasari wa Methodology

Katika methodology hii tutadhani kwamba unakwenda kushambulia kikoa (au subdomain) na hiyo tu. Kwa hivyo, unapaswa kutumia methodology hii kwa kila kikoa kilichogunduliwa, subdomain au IP na seva ya wavuti isiyoeleweka ndani ya wigo.

Toleo la Seva (Lenye Udhaifu?)

Kutambua

Angalia ikiwa kuna mdhaifu anayejulikana kwa toleo la seva linalotumika. Vichwa vya HTTP na vidakuzi vya majibu vinaweza kuwa na manufaa sana kwa kutambua teknolojia na/au toleo linalotumiwa. Uchunguzi wa Nmap unaweza kutambua toleo la seva, lakini pia inaweza kuwa na manufaa zana whatweb, webtech au https://builtwith.com/:

whatweb -a 1 <URL> #Stealthy
whatweb -a 3 <URL> #Aggresive
webtech -u <URL>
webanalyze -host https://google.com -crawl 2

Tafuta kwa mapungufu ya toleo la programu ya wavuti

Angalia kama kuna WAF yoyote

Mbinu za kiteknolojia za Wavuti

Baadhi ya mbinu za kutafuta mapungufu katika teknolojia tofauti inayojulikana inayotumiwa:

Chukua kuzingatia kwamba kikoa kimoja kinaweza kutumia teknolojia tofauti kwenye bandari tofauti, folda na subdomains. Ikiwa programu ya wavuti inatumia teknolojia/jukwaa lililotajwa hapo awali au lingine lolote, usisahau kutafuta kwenye Mtandao mbinu mpya (na niambie!).

Mapitio ya Msimbo wa Chanzo

Ikiwa msimbo wa chanzo wa programu unapatikana kwenye github, mbali na kufanya jaribio la White box test la programu kwa yako mwenyewe, kuna habari fulani ambayo inaweza kuwa ya manufaa kwa jaribio la Black-Box la sasa:

  • Je! Kuna Faili ya Mabadiliko au Soma au Toleo au chochote chenye habari ya toleo inayopatikana kupitia wavuti?

  • Vipi na wapi vitambulisho vinahifadhiwa? Je! Kuna (inayopatikana?) faili na vitambulisho (majina ya watumiaji au nywila)?

  • Je! Nywila ziko kwenye maandishi wazi, zimefichwa au ni algoritimu ya hashing ipi inayotumiwa?

  • Inatumia ufunguo wa msingi wowote kwa kufichua kitu? Algoritimu ipi inayotumiwa?

  • Je! Unaweza kupata ufikiaji wa faili hizi kwa kutumia kasoro fulani?

  • Je! Kuna habari ya kuvutia kwenye github (zilizotatuliwa na zisizotatuliwa) masuala? Au katika historia ya kujitolea (labda nywila iliyoingizwa ndani ya kujitolea cha zamani)?

pageSource code Review / SAST Tools

Skana za Kiotomatiki

Skana za Kiotomatiki za kusudi la jumla

nikto -h <URL>
whatweb -a 4 <URL>
wapiti -u <URL>
W3af
zaproxy #You can use an API
nuclei -ut && nuclei -target <URL>

# https://github.com/ignis-sec/puff (client side vulns fuzzer)
node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi2rVUN/?query=FUZZ"

Skanari za CMS

Ikiwa CMS inatumika usisahau kuendesha skanari, labda kitu cha kuvutia kitapatikana:

Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin tovuti kwa ajili ya masuala ya usalama. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal au (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress

cmsmap [-f W] -F -d <URL>
wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs

Kufikia wakati huu unapaswa tayari kuwa na baadhi ya taarifa kuhusu seva ya wavuti inayotumiwa na mteja (ikiwa kuna data yoyote iliyotolewa) na baadhi ya mbinu za kuzingatia wakati wa jaribio. Ikiwa una bahati, labda umepata hata mfumo wa usimamizi wa yaliyomo (CMS) na kukimbia baadhi ya zana za uchunguzi.

Hatua kwa Hatua Ugunduzi wa Maombi ya Wavuti

Kutoka wakati huu tunaanza kuingiliana na maombi ya wavuti.

Uchunguzi wa Awali

Kurasa za chaguo-msingi zenye habari muhimu:

  • /robots.txt

  • /sitemap.xml

  • /crossdomain.xml

  • /clientaccesspolicy.xml

  • /.well-known/

  • Angalia pia maoni kwenye kurasa kuu na za sekondari.

Kulazimisha makosa

Seva za wavuti zinaweza kutenda kwa njia isiyotarajiwa wakati data isiyotarajiwa inatumwa kwao. Hii inaweza kufunua mapungufu au kufichua taarifa nyeti.

  • Fikia kurasa bandia kama /whatever_fake.php (.aspx,.html,.n.k)

  • Ongeza "[]", "]]", na "[[" kwenye thamani za vidakuzi na thamani za parameta ili kusababisha makosa

  • Zalisha kosa kwa kutoa kuingiza kama /~randomthing/%s mwishoni mwa URL

  • Jaribu Vidirisha vya HTTP tofauti kama PATCH, DEBUG au visivyo sahihi kama FAKE

Angalia kama unaweza kupakia faili (PUT verb, WebDav)

Ikiwa unagundua kuwa WebDav imewezeshwa lakini huna idhini ya kutosha ya kupakia faili kwenye saraka ya msingi, jaribu:

  • Kuvunja Nguvu siri

  • Pakia faili kupitia WebDav kwenye mabara mengine yaliyopatikana ndani ya ukurasa wa wavuti. Unaweza kuwa na idhini ya kupakia faili kwenye mabara mengine.

Mapungufu ya SSL/TLS

  • Ikiwa maombi hayalazimishi matumizi ya HTTPS kwa sehemu yoyote, basi ni dhaifu kwa MitM

  • Ikiwa maombi yanatuma data nyeti (nywila) kwa kutumia HTTP. Basi ni mapungufu makubwa.

Tumia testssl.sh kuchunguza mapungufu (Katika programu za Bug Bounty labda mapungufu kama haya hayatakubalika) na tumia a2sv kuchunguza upya mapungufu:

./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also

# You can also use other tools, by testssl.sh at this momment is the best one (I think)
sslscan <host:port>
sslyze --regular <ip:port>

Maelezo kuhusu Udhaifu wa SSL/TLS:

Kupambana na Mtandao

Zindua aina fulani ya buibui ndani ya wavuti. Lengo la buibui ni kupata njia nyingi iwezekanavyo kutoka kwenye programu iliyopimwa. Kwa hivyo, utaftaji wa wavuti na vyanzo vya nje vinapaswa kutumika kupata njia halali kadri iwezekanavyo.

  • gospider (go): Buibui wa HTML, LinkFinder katika faili za JS na vyanzo vya nje (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).

  • hakrawler (go): Buibui wa HML, na LinkFider kwa faili za JS na Archive.org kama chanzo cha nje.

  • dirhunt (python): Buibui wa HTML, pia inaonyesha "faili zenye thamani".

  • evine (go): Buibui wa HTML ya CLI ya kuingiliana. Pia inatafuta kwenye Archive.org

  • meg (go): Zana hii sio buibui lakini inaweza kuwa na manufaa. Unaweza tu kuonyesha faili na wenyeji na faili na njia na meg itapata kila njia kwa kila mwenyeji na kuhifadhi majibu.

  • urlgrab (go): Buibui wa HTML na uwezo wa kurendera JS. Walakini, inaonekana haijatunzwa, toleo lililopangwa mapema ni la zamani na nambari ya sasa haijatengenezwa

  • gau (go): Buibui wa HTML anayetumia watoa huduma wa nje (wayback, otx, commoncrawl)

  • ParamSpider: Skripti hii itapata URL na parameta na kuziorodhesha.

  • galer (go): Buibui wa HTML na uwezo wa kurendera JS.

  • LinkFinder (python): Buibui wa HTML, na uwezo wa urembo wa JS unao uwezo wa kutafuta njia mpya katika faili za JS. Inaweza kuwa na thamani pia kutazama JSScanner, ambayo ni kifuniko cha LinkFinder.

  • goLinkFinder (go): Kutoa sehemu za mwisho katika chanzo cha HTML na faili za javascript zilizojumuishwa. Inafaa kwa wawindaji wa mdudu, timu nyekundu, na mahinja wa habari za usalama.

  • JSParser (python2.7): Skripti ya python 2.7 ikitumia Tornado na JSBeautifier kuchambua URL za kihusiani kutoka kwenye faili za JavaScript. Inafaa kwa kugundua kwa urahisi maombi ya AJAX. Inaonekana haijatunzwa.

  • relative-url-extractor (ruby): Ikiwa imepewa faili (HTML) itaondoa URL kutoka kwake kwa kutumia mbinu ya kawaida ya kutafuta na kutoa URL za kihusiani kutoka kwa faili zenye urembo (minify).

  • JSFScan (bash, zana kadhaa): Kusanya habari muhimu kutoka kwa faili za JS kwa kutumia zana kadhaa.

  • subjs (go): Pata faili za JS.

  • page-fetch (go): Pakia ukurasa katika kivinjari bila kichwa na chapisha URL zote zilizopakiwa kwenye ukurasa.

  • Feroxbuster (rust): Zana ya ugunduzi wa maudhui ikichanganya chaguo kadhaa za zana za awali

  • Uchambuzi wa JavaScript: Kifuniko cha Burp cha kupata njia na parameta katika faili za JS.

  • Sourcemapper: Zana ambayo ikipewa URL ya .js.map itapata nambari ya JS iliyopambwa

  • xnLinkFinder: Hii ni zana inayotumiwa kugundua sehemu za mwisho kwa lengo lililopewa.

  • waymore: Gudua viungo kutoka kwa mashine ya wayback (pia kupakua majibu katika wayback na kutafuta viungo zaidi

  • HTTPLoot (go): Tafuta (hata kwa kujaza fomu) na pia gundua habari nyeti kwa kutumia regex maalum.

  • SpiderSuite: Spider Suite ni Buibui ya Usalama wa Wavuti ya GUI yenye vipengele vingi iliyoundwa kwa wataalamu wa usalama wa cyber.

  • jsluice (go): Ni pakiti ya Go na zana ya mstari wa amri ya kutoa URL, njia, siri, na data nyingine ya kuvutia kutoka kwa nambari ya chanzo cha JavaScript.

  • ParaForge: ParaForge ni kifuniko rahisi cha Burp Suite cha kutoa parameta na sehemu za mwisho kutoka kwa ombi ili kuunda orodha ya maneno ya desturi kwa ajili ya kufanya uchunguzi na kutambua.

  • katana (go): Zana nzuri kwa hili.

Kufanya Uvumbuzi wa Daktari na Faili

Anza kufanya uvumbuzi wa daktari kutoka kwenye folda ya msingi na hakikisha kufanya uvumbuzi wa daktari katika directories zote zilizopatikana kwa kutumia njia hii na directories zote zilizogunduliwa na Kupambana na Mtandao (unaweza kufanya uvumbuzi huu wa daktari kwa njia ya mfululizo na kuongeza mwanzoni mwa orodha ya maneno iliyotumiwa majina ya directories zilizopatikana). Zana:

  • Dirb / Dirbuster - Imejumuishwa katika Kali, zamani (na polepole) lakini inafanya kazi. Inaruhusu vyeti vilivyosainiwa kiotomatiki na utaftaji wa mfululizo. Polepole sana ikilinganishwa na chaguo zingine.

  • Dirsearch (python): Hauruhusu vyeti vilivyosainiwa kiotomatiki lakini inaruhusu utaftaji wa mfululizo.

  • Gobuster (go): Inaruhusu vyeti vilivyosainiwa kiotomatiki, haina utaftaji wa mfululizo.

  • Feroxbuster - Haraka, inasaidia utaftaji wa mfululizo.

  • wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ

  • ffuf - Haraka: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ

  • uro (python): Hii sio buibui bali ni zana ambayo ikipewa orodha ya URL zilizopatikana itafuta kufuta URL "zilizodondolewa".

  • Scavenger: Kifuniko cha Burp cha kuunda orodha ya directories kutoka kwa historia ya burp ya kurasa tofauti

  • TrashCompactor: Ondoa URL zenye utendaji uliodondolewa (kulingana na uingizaji wa js)

  • Chamaleon: Inatumia wapalyzer kugundua teknolojia zilizotumiwa na kuchagua orodha za maneno za kutumia.

Maneno ya kupendekezwa:

Note kwamba wakati wowote saraka mpya inagunduliwa wakati wa kufanya nguvu-kulazimisha au kufanya spidering, inapaswa kufanyiwa Nguvu-Kulazimishwa.

Mambo ya kuangalia kwenye kila faili inayopatikana

Uvumbuzi Maalum

Wakati wa kufanya spidering na nguvu-kulazimisha unaweza kupata vituko vya kuvutia ambavyo unapaswa kuzingatia.

Faili za Kuvutia

403 Imezuiwa/uthibitishaji wa Msingi/401 Hauruhusiwi (kipuuzi)

page403 & 401 Bypasses

Kosa la Proksi la 502

Ikiwa ukurasa wowote unajibu na nambari hiyo, labda ni proksi iliyopangwa vibaya. Ikiwa unatuma ombi la HTTP kama: GET https://google.com HTTP/1.1 (na kichwa cha mwenyeji na vichwa vingine vya kawaida), proksi itajaribu kufikia google.com na utakuwa umepata SSRF.

Uthibitishaji wa NTLM - Ufunuo wa habari

Ikiwa seva inayotumika inayouliza uthibitishaji ni Windows au unapata ombi la kuingia linalouliza vyeti vyako (na kuuliza jina la domaini), unaweza kusababisha ufunuo wa habari. Tuma kichwa: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=” na kutokana na jinsi uthibitishaji wa NTLM unavyofanya kazi, seva itajibu na habari za ndani (toleo la IIS, toleo la Windows...) ndani ya kichwa "WWW-Authenticate". Unaweza kutumia hii kiotomatiki kwa kutumia nmap plugin "http-ntlm-info.nse".

Uelekezaji wa HTTP (CTF)

Inawezekana kuweka maudhui ndani ya Uelekezaji. Maudhui haya hayataonyeshwa kwa mtumiaji (kwa sababu kivinjari kitatekeleza uelekezaji) lakini kitu kinaweza kufichwa ndani yake.

Ukaguzi wa Udhaifu wa Wavuti

Sasa baada ya uchunguzi kamili wa programu ya wavuti umefanywa ni wakati wa kuchunguza udhaifu mwingi uwezekanao. Unaweza kupata orodha ya ukaguzi hapa:

pageWeb Vulnerabilities Methodology

Pata habari zaidi kuhusu udhaifu wa wavuti katika:

Fuatilia Kurasa kwa Mabadiliko

Unaweza kutumia zana kama https://github.com/dgtlmoon/changedetection.io kufuatilia kurasa kwa mabadiliko ambayo yanaweza kuweka udhaifu.

Ikiwa una nia katika kazi ya udukuzi na kudukua yasiyoweza kudukuliwa - tunatoa ajira! (inahitajika uwezo wa kuandika na kuzungumza Kipolishi kwa ufasaha).

Amri za Kiotomatiki za HackTricks

Protocol_Name: Web    #Protocol Abbreviation if there is one.
Port_Number:  80,443     #Comma separated if there is more than one.
Protocol_Description: Web         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for Web
Note: |
https://book.hacktricks.xyz/pentesting/pentesting-web

Entry_2:
Name: Quick Web Scan
Description: Nikto and GoBuster
Command: nikto -host {Web_Proto}://{IP}:{Web_Port} &&&& gobuster dir -w {Small_Dirlist} -u {Web_Proto}://{IP}:{Web_Port} && gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}

Entry_3:
Name: Nikto
Description: Basic Site Info via Nikto
Command: nikto -host {Web_Proto}://{IP}:{Web_Port}

Entry_4:
Name: WhatWeb
Description: General purpose auto scanner
Command: whatweb -a 4 {IP}

Entry_5:
Name: Directory Brute Force Non-Recursive
Description:  Non-Recursive Directory Brute Force
Command: gobuster dir -w {Big_Dirlist} -u {Web_Proto}://{IP}:{Web_Port}

Entry_6:
Name: Directory Brute Force Recursive
Description: Recursive Directory Brute Force
Command: python3 {Tool_Dir}dirsearch/dirsearch.py -w {Small_Dirlist} -e php,exe,sh,py,html,pl -f -t 20 -u {Web_Proto}://{IP}:{Web_Port} -r 10

Entry_7:
Name: Directory Brute Force CGI
Description: Common Gateway Interface Brute Force
Command: gobuster dir -u {Web_Proto}://{IP}:{Web_Port}/ -w /usr/share/seclists/Discovery/Web-Content/CGIs.txt -s 200

Entry_8:
Name: Nmap Web Vuln Scan
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}

Entry_9:
Name: Drupal
Description: Drupal Enumeration Notes
Note: |
git clone https://github.com/immunIT/drupwn.git for low hanging fruit and git clone https://github.com/droope/droopescan.git for deeper enumeration

Entry_10:
Name: WordPress
Description: WordPress Enumeration with WPScan
Command: |
?What is the location of the wp-login.php? Example: /Yeet/cannon/wp-login.php
wpscan --url {Web_Proto}://{IP}{1} --enumerate ap,at,cb,dbe && wpscan --url {Web_Proto}://{IP}{1} --enumerate u,tt,t,vp --passwords {Big_Passwordlist} -e

Entry_11:
Name: WordPress Hydra Brute Force
Description: Need User (admin is default)
Command: hydra -l admin -P {Big_Passwordlist} {IP} -V http-form-post '/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log In&testcookie=1:S=Location'

Entry_12:
Name: Ffuf Vhost
Description: Simple Scan with Ffuf for discovering additional vhosts
Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:FUZZ.{Domain_Name}" -c -mc all {Ffuf_Filters}
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated