80,443 - Pentesting Web Metodologie

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Basiese Inligting

Die webdiens is die mees algemene en omvattende diens en daar bestaan baie verskillende tipes kwesbaarhede.

Verstekpoort: 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

Web API Riglyne

Web API Pentesting

Metodologie opsomming

In hierdie metodologie gaan ons veronderstel dat jy ’n domain (of subdomain) en slegs daardie gaan aanval. Dus moet jy hierdie metodologie toepas op elke ontdekte domain, subdomain of IP met ’n onbepaalde web server binne die scope.

  • Begin deur identifiseer die technologies wat deur die web server gebruik word. Soek vir tricks om in gedagte te hou tydens die res van die toets as jy die tech suksesvol kan identifiseer.
  • Enige known vulnerability van die weergawe van die tegnologie?
  • Gebruik jy enige well known tech? Enige useful trick om meer inligting te onttrek?
  • Enige specialised scanner om te laat loop (soos wpscan)?
  • Voer general purposes scanners uit. Jy weet nooit of hulle iets gaan vind of interessante inligting gaan onthul nie.
  • Begin met die initial checks: robots, sitemap, 404 error en SSL/TLS scan (if HTTPS).
  • Begin spidering die webblad: Dit is tyd om al die moontlike files, folders en parameters being used. Kontroleer ook vir special findings.
  • Let wel dat elke keer as ’n nuwe directory tydens brute-forcing of spidering ontdek word, dit gespider moet word.
  • Directory Brute-Forcing: Probeer om alle ontdekte folders te brute force op soek na nuwe files en directories.
  • Let wel dat elke keer as ’n nuwe directory tydens brute-forcing of spidering ontdek word, dit Brute-Forced moet word.
  • Backups checking: Toets of jy backups van ontdekte files kan vind deur algemene backup extensies aan te sit.
  • Brute-Force parameters: Probeer om hidden parameters te vind.
  • Sodra jy al die moontlike endpoints wat user input aanvaar geĂŻdentifiseer het, kontroleer vir alle soorte vulnerabilities wat daarmee verband hou.
  • Follow this checklist

Server Weergawe (Kwetsbaar?)

Identify

Check of daar known vulnerabilities is vir die server version wat aan die gang is.
Die HTTP headers and cookies of the response kan baie nuttig wees om die technologies en/of version wat gebruik word te identify. Nmap scan kan die server version identifiseer, maar dit kan ook nuttig wees om die tools whatweb, webtech of https://builtwith.com/:

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

Search for vulnerabilities of the web application version

Kyk of daar ’n WAF is

Web tegniese truuks

Hier is ’n paar truuks om kwetsbaarhede te vind in verskillende bekende tegnologieĂ« wat gebruik word:

Neem in ag dat dieselfde domein verskillende tegnologieĂ« op verskillende porte, lĂȘergidse en subdomeine kan gebruik.
As die webtoepassing enige bekende tegnologie/platform wat hierbo gelys is of enige ander gebruik, moenie vergeet om op die Internet na nuwe truuks te soek nie (en laat my weet!).

Bronkode hersiening

As die bronkode van die toepassing op github beskikbaar is, behalwe om deur jouself ’n White box test van die toepassing uit te voer, is daar inligting wat nuttig kan wees vir die huidige Black-Box testing:

  • Is daar ’n Change-log of Readme of Version lĂȘer of iets met weergawe-inligting wat via die web toeganklik is?
  • Hoe en waar word die credentials gestoor? Is daar enige (toeganklike?) file met credentials (gebruikersname of wagwoorde)?
  • Is die passwords in plain text, encrypted of watter hashing algorithm gebruik word?
  • Gebruik dit enige master key om iets te enkripteer? Watter algorithm word gebruik?
  • Kan jy enige van hierdie files bekom deur ’n kwesbaarheid te benut?
  • Is daar enige interessante inligting in die github (opgelos en nie-opgelos) issues? Of in die commit history (miskien is daar ’n password wat in ’n ou commit ingesluit is)?

Source code Review / SAST Tools

Outomatiese skandeerders

Algemene doel outomatiese skandeerders

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"

CMS-skandeerders

As ’n CMS gebruik word, moenie vergeet om ’n skandeerder te laat loop nie, dalk word iets sappigs gevind:

Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish
CMSScan: WordPress, Drupal, Joomla, vBulletin webwerwe vir sekuriteitsprobleme. (GUI)
VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart
CMSMap: (W)ordpress, (J)oomla, (D)rupal of (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

Op hierdie stadium behoort jy reeds sommige inligting te hĂȘ oor die webbediener wat deur die kliĂ«nt gebruik word (as enige data gegee is) en ’n paar truuks om in gedagte te hou tydens die toets. As jy gelukkig is, het jy dalk selfs ’n CMS gevind en ’n scanner laat loop.

Stap-vir-stap ontdekking van webtoepassings

Vanaf hierdie punt gaan ons begin om met die webtoepassing te kommunikeer.

Aanvangskontroles

Standaardbladsye met interessante inligting:

  • /robots.txt
  • /sitemap.xml
  • /crossdomain.xml
  • /clientaccesspolicy.xml
  • /.well-known/
  • Kontroleer ook kommentare op die hoof- en sekondĂȘre bladsye.

Foute afdwing

Webbedieners kan onverwag optree wanneer vreemde data na hulle gestuur word. Dit kan kwetsbaarhede oopmaak of sensitiewe inligting openbaar.

  • Besoek gefakste bladsye soos /whatever_fake.php (.aspx,.html,.etc)
  • Voeg “[]”, “]]”, en “[[” in cookie values en parameter values om foute te veroorsaak
  • Genereer ’n fout deur insette as /~randomthing/%s aan die einde van die URL te gee
  • Probeer different HTTP Verbs soos PATCH, DEBUG, of selfs foutiewe verbs soos FAKE

Check if you can upload files (PUT verb, WebDav)

As jy vind dat WebDav geaktiveer is maar jy nie genoeg toestemmings het vir uploading files in die root-gids nie, probeer om:

  • Brute Force credentials
  • Upload files via WebDav na die res van die gevonde gidse binne die webblad. Jy mag dalk toestemmings hĂȘ om lĂȘers in ander gidse op te laai.

SSL/TLS kwesbaarhede

  • As die toepassing die gebruik van HTTPS nĂȘrens afdwing nie, is dit kwesbaar vir MitM
  • As die toepassing sensitiewe data (wachtwoorde) via HTTP stuur, is dit ’n hoĂ« kwesbaarheid.

Gebruik testssl.sh om vir kwesbaarhede te kontroleer (in Bug Bounty-programme sal hierdie soort kwesbaarhede waarskynlik nie aanvaar word nie) en gebruik a2sv om die kwesbaarhede te herkontroleer:

./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>

Inligting oor SSL/TLS kwesbaarhede:

Spidering

Begin ’n soort spider op die web. Die doel van die spider is om soveel paaie as moontlik te vind van die getoetste toepassing. Daarom moet web crawling en eksterne bronne gebruik word om soveel geldige paaie as moontlik te ontdek.

  • gospider (go): HTML spider, LinkFinder in JS files en eksterne bronne (Archive.org, CommonCrawl.org, VirusTotal.com).
  • hakrawler (go): HML spider, met LinkFider vir JS files en Archive.org as eksterne bron.
  • dirhunt (python): HTML spider, wys ook “juicy files”.
  • evine (go): Interaktiewe CLI HTML spider. Soek ook in Archive.org.
  • meg (go): Hierdie hulpmiddel is nie ’n spider nie, maar kan nuttig wees. Jy kan ’n lĂȘer met hosts en ’n lĂȘer met paths aandui en meg sal elke path op elke host haal en die response stoor.
  • urlgrab (go): HTML spider met JS rendering vermoĂ«ns. Dit lyk egter on-onderhou, die vooraf-gekompileerde weergawe is oud en die huidige kode kompileer nie.
  • gau (go): HTML spider wat eksterne providers gebruik (wayback, otx, commoncrawl).
  • ParamSpider: Hierdie script sal URLs met parameters vind en dit lys.
  • galer (go): HTML spider met JS rendering vermoĂ«ns.
  • LinkFinder (python): HTML spider, met JS beautify vermoĂ«ns wat nuwe paaie in JS files kan soek. Dit is ook die moeite werd om na JSScanner te kyk, wat ’n wrapper van LinkFinder is.
  • goLinkFinder (go): Om endpoints in beide HTML source en ingebedde javascript files uit te trek. Nuttig vir bug hunters, red teamers, infosec ninjas.
  • JSParser (python2.7): ’n python 2.7 script wat Tornado en JSBeautifier gebruik om relative URLs uit JavaScript files te parse. Nuttig om AJAX requests maklik te ontdek. Lyk on-onderhou.
  • relative-url-extractor (ruby): Gegee ’n lĂȘer (HTML) sal dit URLs daaruit uittrek gebruik makende van slim regular expressions om relative URLs uit rommelige (minified) files te kry.
  • JSFScan (bash, verskeie tools): Versamel interessante inligting uit JS files deur verskeie tools te gebruik.
  • subjs (go): Vind JS files.
  • page-fetch (go): Laai ’n bladsy in ’n headless browser en druk al die urls wat gelaai is om die bladsy te laai.
  • Feroxbuster (rust): Content discovery tool wat verskeie opsies van die vorige tools kombineer.
  • Javascript Parsing: ’n Burp extension om path en params in JS files te vind.
  • Sourcemapper: ’n instrument wat, gegee die .js.map URL, die beautified JS code vir jou kry.
  • xnLinkFinder: ’n tool wat gebruik word om endpoints vir ’n gegewe target te ontdek.
  • waymore: Ontdek links van die wayback machine (laai ook die responses in die wayback af en soek na meer links).
  • HTTPLoot (go): Crawl (selfs deur vorms in te vul) en vind ook sensitiewe info met spesifieke regexes.
  • SpiderSuite: Spider Suite is ’n gevorderde multi-feature GUI web security Crawler/Spider ontwerp vir cyber security professionele.
  • jsluice (go): ’n Go pakket en command-line tool vir die onttrekking van URLs, paths, secrets, en ander interessante data uit JavaScript source code.
  • ParaForge: ParaForge is ’n eenvoudige Burp Suite extension om parameters en endpoints te onttrek uit requests om pasgemaakte wordlists vir fuzzing en enumerasie te skep.
  • katana (go): Awesome tool hiervoor.
  • Crawley (go): Druk elke link wat dit kan vind.

Brute Force directories and files

Begin brute-forcing vanaf die root gids en maak seker om alle directories wat gevind word met hierdie metode en al die directories wat deur die Spidering ontdek is, te brute-force (jy kan hierdie brute-forcing rekursief doen en die name van die gevonde directories aan die begin van die gebruikte wordlist byvoeg).
Tools:

  • Dirb / Dirbuster - Ingesluit in Kali, oud (en stadig) maar funksioneel. Laat auto-signed certificates en recursive search toe. Te stadig vergelyk met ander opsies.
  • Dirsearch (python): Dit laat nie auto-signed certificates toe nie maar ondersteun recursive search.
  • Gobuster (go): Dit laat auto-signed certificates toe, maar dit het nie recursive search nie.
  • Feroxbuster - Fast, supports recursive search.
  • wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
  • ffuf - Fast: ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
  • uro (python): Dit is nie ’n spider nie maar ’n tool wat, gegee ’n lys van gevonde URLs, “gedupliseerde” URLs sal verwyder.
  • Scavenger: Burp Extension om ’n lys directories te skep vanaf die burp history van verskeie bladsye.
  • TrashCompactor: Verwyder URLs met gedupliseerde funksionaliteite (gebaseer op js imports).
  • Chamaleon: Dit gebruik wapalyzer om gebruikte tegnologieĂ« te identifiseer en kies die woordlyste wat gebruik moet word.

Aanbevole woordlyste:

Berig: elke keer as ’n nuwe directory ontdek word tydens brute-forcing of spidering, moet dit brute-forced word.

What to check on each file found

  • Broken link checker: Vind gebroke skakels binne HTMLs wat vatbaar mag wees vir takeovers.
  • File Backups: Sodra jy al die files gevind het, soek na backups van alle uitvoerbare files (“.php”, “.aspx”
). Algemene variasies vir die benoeming van ’n backup is: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp en file.old. Jy kan ook die tool bfac of backup-gen gebruik.
  • Discover new parameters: Jy kan tools soos Arjun, parameth, x8 en Param Miner gebruik om versteekte parameters te ontdek. Indien moontlik, probeer om versteekte parameters op elke uitvoerbare webfile te soek.
  • Arjun all default wordlists: https://github.com/s0md3v/Arjun/tree/master/arjun/db
  • Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
  • Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
  • nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
  • Comments: Kontroleer die comments van al die files; jy kan inlogbewyse of verborgde funksionaliteit vind.
  • As jy ’n CTF speel, is ’n algemene truuk om inligting weg te steek in comments regs van die bladsy (gebruik honderde spasies sodat jy die data nie sien as jy die source in die blaaier oopmaak nie). ’n Ander moontlikheid is om verskeie nuwe lyne te gebruik en inligting in ’n comment onderaan die webblad te verberg.
  • API keys: As jy enige API key vind, is daar gidse wat aandui hoe om API keys van verskillende platforms te gebruik: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird
  • Google API keys: As jy ’n API key vind wat lyk soos AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die projek gmapapiscanner gebruik om te kyk watter apis die key kan toegang gee.
  • S3 Buckets: Terwyl jy spider, kyk of enige subdomain of skakel met ’n S3 bucket verband hou. In daardie geval, kontroleer die permissions van die bucket.

Special findings

Terwyl jy die spidering en brute-forcing uitvoer, kan jy interessante dinge vind wat aangeteken moet word.

Interesting files

403 Forbidden/Basic Authentication/401 Unauthorized (bypass)

403 & 401 Bypasses

502 Proxy Error

As enige bladsy met daardie kode reageer, is dit waarskynlik ’n verkeerd geconfigureerde proxy. As jy ’n HTTP request stuur soos: GET https://google.com HTTP/1.1 (met die host header en ander algemene headers), sal die proxy probeer om google.com te benader en jy het ’n SSRF gevind.

NTLM Authentication - Info disclosure

As die bediener wat om authentication vra ’n Windows bediener is of jy vind ’n login wat jou credentials (en die domain name) vra, kan jy ’n inligtingslek provoceer.
Stuur die header: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=” en weens hoe NTLM authentication werk, sal die bediener met interne inligting (IIS version, Windows version
) in die header “WWW-Authenticate” antwoord.
Jy kan dit outomatiseer met die nmap plugin “http-ntlm-info.nse”.

HTTP Redirect (CTF)

Dit is moontlik om inhoud binne ’n Redirection te plaas. Hierdie inhoud sal nie aan die gebruiker gewys word nie (aangesien die blaaier die redirect uitvoer) maar iets kan daarin weggesteek wees.

Web Vulnerabilities Checking

Nou dat ’n omvattende enumerasie van die web toepassing uitgevoer is, is dit tyd om vir ’n hele reeks moontlike kwesbaarhede te toets. Jy kan die checklist hier vind:

Web Vulnerabilities Methodology

Vind meer inligting oor web vulns in:

Monitor Pages for changes

Jy kan tools gebruik soos https://github.com/dgtlmoon/changedetection.io om bladsye te monitor vir wysigings wat moontlik kwesbaarhede kan invoeg.

HackTricks Automatic Commands

HackTricks Automatic Commands ```yaml 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.wiki/en/network-services-pentesting/pentesting-web/index.html

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}

</details>

> [!TIP]
> Leer en oefen AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Leer en oefen GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Leer en oefen Azure Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Ondersteun HackTricks</summary>
>
> - Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
> - **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐩 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>