80,443 - Pentesting Web Methodology
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Kry 'n hacker se perspektief op jou webtoepassings, netwerk, en wolk
Vind en rapporteer kritieke, exploiteerbare kwesbaarhede met werklike besigheidsimpak. Gebruik ons 20+ pasgemaakte gereedskap om die aanvaloppervlak te karteer, vind sekuriteitskwessies wat jou toelaat om bevoegdhede te verhoog, en gebruik geoutomatiseerde eksploit om noodsaaklike bewyse te versamel, wat jou harde werk in oortuigende verslae omskep.
Die webdiens is die mees gewone en uitgebreide diens en 'n baie verskillende tipes kwesbaarhede bestaan.
Standaard poort: 80 (HTTP), 443(HTTPS)
In hierdie metodologie gaan ons aanneem dat jy 'n domein (of subdomein) gaan aanval en net dit. So, jy moet hierdie metodologie toepas op elke ontdekte domein, subdomein of IP met onbepaalde webbediener binne die omvang.
Kyk of daar bekende kwesbaarhede is vir die bediener weergawe wat loop. Die HTTP koppe en koekies van die antwoord kan baie nuttig wees om die tegnologieë en/of weergawe wat gebruik word te identifiseer. Nmap skandering kan die bediener weergawe identifiseer, maar dit kan ook nuttig wees om die gereedskap whatweb, webtech of https://builtwith.com/:
Search for kwesbaarhede van die webtoepassing weergawe
Sommige truuks om kwesbaarhede in verskillende bekende tegnologieë te vind:
Hou in gedagte dat die selfde domein verskillende tegnologieë in verskillende poorte, mappes en subdomeine kan gebruik. As die webtoepassing enige bekende tegnologie/platform wat voorheen gelys is of enige ander gebruik, moenie vergeet om op die Internet na nuwe truuks te soek (en laat weet my!).
As die bronkode van die toepassing beskikbaar is in github, benewens om jou eie 'White box' toets van die toepassing uit te voer, is daar sekere inligting wat nuttig kan wees vir die huidige Black-Box toetsing:
Is daar 'n Veranderingslog of Readme of Weergawe lêer of enigiets met weergaweninligting toeganklik via die web?
Hoe en waar word die akkrediteer gestoor? Is daar enige (toeganklike?) lêer met akkrediteer (gebruikersname of wagwoorde)?
Is wagwoorde in plank teks, geënkripteer of watter hash-algoritme word gebruik?
Gebruik dit enige meester sleutel om iets te enkripteer? Watter algoritme word gebruik?
Kan jy toegang tot enige van hierdie lêers verkry deur 'n kwesbaarheid te benut?
Is daar enige interessante inligting in die github (opgeloste en nie-opgeloste) kwessies? Of in commit geskiedenis (miskien 'n wagwoord wat in 'n ou commit ingevoer is)?
As 'n CMS gebruik word, moenie vergeet om 'n skandeerder te loop', dalk word iets sappigs gevind:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin webwerwe vir Sekuriteitskwessies. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal of (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
Op hierdie punt behoort jy reeds 'n paar inligting oor die webbediener wat deur die kliënt gebruik word (indien enige data gegee is) en 'n paar truuks in gedagte te hou tydens die toets. As jy gelukkig is, het jy selfs 'n CMS gevind en 'n skandeerder laat loop.
Vanaf hierdie punt gaan ons begin om met die webtoepassing te kommunikeer.
Standaard bladsye met interessante inligting:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Kontroleer ook kommentaar in die hoof- en sekondêre bladsye.
Dwing foute
Webbedieners mag onverwagte gedrag vertoon wanneer vreemde data na hulle gestuur word. Dit kan kwesbaarhede of sensitiewe inligting openbaar.
Toegang tot valse bladsye soos /whatever_fake.php (.aspx,.html,.ens)
Voeg "[]", "]]", en "[[" in koekie waardes en parameter waardes by om foute te skep
Genereer 'n fout deur invoer te gee as /~randomthing/%s
aan die einde van die URL
Probeer verskillende HTTP Werkwoorde soos PATCH, DEBUG of verkeerd soos FAKE
As jy vind dat WebDav geaktiveer is, maar jy het nie genoeg regte om lêers op te laai in die wortelgids nie, probeer om:
Brute Force akrediteer
Lêers op te laai via WebDav na die oorblywende gevonde gidse binne die webblad. Jy mag regte hê om lêers in ander gidse op te laai.
As die toepassing nie die gebruiker van HTTPS dwing nie, dan is dit kwesbaar vir MitM
As die toepassing sensitiewe data (wagwoorde) via HTTP stuur. Dan is dit 'n hoë kwesbaarheid.
Gebruik testssl.sh om te kontroleer vir kwesbaarhede (In Bug Bounty programme sal hierdie soort kwesbaarhede waarskynlik nie aanvaar word nie) en gebruik a2sv om die kwesbaarhede weer te kontroleer:
Inligting oor SSL/TLS kwesbaarhede:
Begin 'n soort spider binne die web. Die doel van die spider is om soveel moontlike paaie te vind vanaf die getoetste toepassing. Daarom moet webkruip en eksterne bronne gebruik word om soveel geldige paaie as moontlik te vind.
gospider (go): HTML spider, LinkFinder in JS-lêers en eksterne bronne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML spider, met LinkFider vir JS-lêers en Archive.org as eksterne bron.
dirhunt (python): HTML spider, dui ook "juicy files" aan.
evine (go): Interaktiewe CLI HTML spider. Dit soek ook in Archive.org.
meg (go): Hierdie hulpmiddel is nie 'n spider nie, maar dit kan nuttig wees. Jy kan net 'n lêer met hosts en 'n lêer met paaie aandui en meg sal elke pad op elke host haal en die antwoord stoor.
urlgrab (go): HTML spider met JS-rendering vermoëns. Dit lyk egter of dit nie meer onderhou word nie, die voorafgecompileerde weergawe is oud en die huidige kode compileer nie.
gau (go): HTML spider wat eksterne verskaffers gebruik (wayback, otx, commoncrawl).
ParamSpider: Hierdie skrip sal URL's 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 in staat is om nuwe paaie in JS-lêers te soek. Dit kan ook die moeite werd wees om na JSScanner te kyk, wat 'n wrapper van LinkFinder is.
goLinkFinder (go): Om eindpunte in beide HTML-bron en ingebedde javascript-lêers te onttrek. Nuttig vir foutjagters, rooi spanlede, infosec ninjas.
JSParser (python2.7): 'n Python 2.7 skrip wat Tornado en JSBeautifier gebruik om relatiewe URL's uit JavaScript-lêers te parse. Nuttig om AJAX versoeke maklik te ontdek. Dit lyk of dit nie meer onderhou word nie.
relative-url-extractor (ruby): Gegee 'n lêer (HTML) sal dit URL's daaruit onttrek met behulp van slim regulêre uitdrukkings om die relatiewe URL's uit lelike (minify) lêers te vind en onttrek.
JSFScan (bash, verskeie hulpmiddels): Verskaf interessante inligting uit JS-lêers met behulp van verskeie hulpmiddels.
subjs (go): Vind JS-lêers.
page-fetch (go): Laai 'n bladsy in 'n headless blaaskenner en druk al die URL's wat gelaai is om die bladsy te laai.
Feroxbuster (rust): Inhoud ontdekking hulpmiddel wat verskeie opsies van die vorige hulpmiddels meng.
Javascript Parsing: 'n Burp uitbreiding om paaie en parameters in JS-lêers te vind.
Sourcemapper: 'n hulpmiddel wat gegee die .js.map URL jou die beautified JS kode sal gee.
xnLinkFinder: Dit is 'n hulpmiddel wat gebruik word om eindpunte vir 'n gegewe teiken te ontdek.
waymore: Ontdek skakels van die wayback masjien (ook die antwoorde in die wayback aflaai en na meer skakels soek).
HTTPLoot (go): Kruip (selfs deur vorms in te vul) en vind ook sensitiewe inligting met behulp van spesifieke regexes.
SpiderSuite: Spider Suite is 'n gevorderde multi-funksie GUI web sekuriteit Crawler/Spider ontwerp vir kuberveiligheid professionele.
jsluice (go): Dit is 'n Go-pakket en opdraglyn hulpmiddel om URL's, paaie, geheime en ander interessante data uit JavaScript-bronkode te onttrek.
ParaForge: ParaForge is 'n eenvoudige Burp Suite uitbreiding om die parameters en eindpunte uit die versoek te onttrek om 'n pasgemaakte woordlys vir fuzzing en enumerasie te skep.
katana (go): Wonderlike hulpmiddel hiervoor.
Crawley (go): Druk elke skakel wat dit kan vind.
Begin brute-forcing vanaf die wortelmap en wees seker om alle die directories wat gevind is te brute-force met hierdie metode en al die directories ontdek deur die Spidering (jy kan hierdie brute-forcing rekursief doen en die name van die gevonde directories aan die begin van die gebruikte woordlys voeg). Hulpmiddels:
Dirb / Dirbuster - Ingesluit in Kali, oud (en stadig) maar funksioneel. Laat outomaties onderteken sertifikate toe en rekursiewe soektog. Te stadig in vergelyking met die ander opsies.
Dirsearch (python): Dit laat nie outomaties onderteken sertifikate toe nie, maar laat rekursiewe soektog toe.
Gobuster (go): Dit laat outomaties onderteken sertifikate toe, dit het nie rekursiewe soektog nie.
Feroxbuster - Vinning, ondersteun rekursiewe soektog.
wfuzz wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Vinning: 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 hulpmiddel wat gegee die lys van gevonde URL's sal "gedupliceerde" URL's verwyder.
Scavenger: Burp Uitbreiding om 'n lys van directories uit die burp geskiedenis van verskillende bladsye te skep.
TrashCompactor: Verwyder URL's met gedupliceerde funksies (gebaseer op js imports).
Chamaleon: Dit gebruik wapalyzer om gebruikte tegnologieë te detecteer en die woordlyste te kies.
Aanbevole woordlyste:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Nota dat enige tyd wanneer 'n nuwe directory ontdek word tydens brute-forcing of spidering, dit brute-forced moet word.
Broken link checker: Vind gebroke skakels binne HTML's wat geneig kan wees om oorname te neem.
Lêer Rugsteun: Sodra jy al die lêers gevind het, soek vir rugsteun van al die uitvoerbare lêers (".php", ".aspx"...). Algemene variasies vir die benoeming van 'n rugsteun 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 hulpmiddel bfac of backup-gen.
Ontdek nuwe parameters: Jy kan hulpmiddels soos Arjun, parameth, x8 en Param Miner gebruik om verborge parameters te ontdek. As jy kan, kan jy probeer om verborge parameters op elke uitvoerbare web lêer te soek.
Arjun al standaard woordlyste: 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
Kommentaar: Kontroleer die kommentaar van al die lêers, jy kan akkrediteer of verborge funksionaliteit vind.
As jy CTF speel, is 'n "gewone" truuk om inligting te versteek binne kommentaar aan die regterkant van die bladsy (met behulp van honderde spasies sodat jy nie die data sien as jy die bronkode met die blaaskenner oopmaak). 'n Ander moontlikheid is om verskeie nuwe lyne te gebruik en inligting in 'n kommentaar aan die onderkant van die webblad te versteek.
API sleutels: As jy enige API sleutel vind is daar 'n gids wat aandui hoe om API sleutels van verskillende platforms te gebruik: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird.
Google API sleutels: As jy enige API sleutel vind wat lyk soos AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die projek gmapapiscanner gebruik om te kyk watter API's die sleutel kan toegang.
S3 Buckets: Terwyl jy spider, kyk of enige subdomein of enige skakel verband hou met 'n S3 bucket. In daardie geval, kontroleer die toestemmings van die bucket.
Terwyl jy die spidering en brute-forcing uitvoer, kan jy interessante dinge vind wat jy moet oplet.
Interessante lêers
Soek na skakels na ander lêers binne die CSS lêers.
As jy 'n .env lêer vind, kan inligting soos API sleutels, databasis wagwoorde en ander inligting gevind word.
As jy API eindpunte vind, moet jy dit ook toets. Hierdie is nie lêers nie, maar sal waarskynlik "soos" hulle lyk.
JS lêers: In die spidering afdeling is verskeie hulpmiddels genoem wat paaie uit JS-lêers kan onttrek. Dit sal ook interessant wees om elke JS-lêer wat gevind is te monitor, aangesien 'n verandering kan aandui dat 'n potensiële kwesbaarheid in die kode bekendgestel is. Jy kan byvoorbeeld JSMon.
Javascript Deobfuscator en Unpacker: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator.
Javascript Beautifier: http://jsbeautifier.org/, http://jsnice.org/.
JsFuck deobfuscation (javascript met karakters:"[]!+" https://enkhee-osiris.github.io/Decoder-JSFuck/).
TrainFuck: +72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
Op verskeie geleenthede sal jy die regulêre uitdrukkings wat gebruik word moet begryp. Dit sal nuttig wees: https://regex101.com/ of https://pythonium.net/regex.
Jy kan ook die lêers monitor waar vorms gedetecteer is, aangesien 'n verandering in die parameter of die verskyning van 'n nuwe vorm 'n potensiële nuwe kwesbare funksionaliteit kan aandui.
403 Verbode/Basiese Verifikasie/401 Nie-toegelaat (omseiling)
403 & 401 Bypasses502 Proxy Fout
As enige bladsy antwoord gee met daardie kode, is dit waarskynlik 'n sleg geconfigureerde proxy. As jy 'n HTTP versoek soos: GET https://google.com HTTP/1.1
(met die host kop en ander algemene koppe) stuur, sal die proxy probeer om toegang te verkry tot google.com en jy sal 'n SSRF gevind het.
NTLM Verifikasie - Inligtingsontsluiting
As die bediener wat verifikasie vra Windows is of jy 'n aanmelding vind wat om jou akkrediteer (en om domeinnaam vra), kan jy 'n inligtingsontsluiting veroorsaak.
Stuur die kop: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
en as gevolg van hoe die NTLM verifikasie werk, sal die bediener met interne inligting (IIS weergawe, Windows weergawe...) binne die kop "WWW-Authenticate" antwoordgee.
Jy kan dit outomatiseer met die nmap plugin "http-ntlm-info.nse".
HTTP Oorplasing (CTF)
Dit is moontlik om inhoud binne 'n Oorplasing te plaas. Hierdie inhoud sal nie aan die gebruiker gewys word nie (aangesien die blaaskenner die oorplasing sal uitvoer) maar iets kan versteek wees daarin.
Nou dat 'n omvattende enumerasie van die webtoepassing uitgevoer is, is dit tyd om vir 'n klomp moontlike kwesbaarhede te kontroleer. Jy kan die kontrolelys hier vind:
Web Vulnerabilities MethodologyVind meer inligting oor web kwesbaarhede in:
Jy kan hulpmiddels soos https://github.com/dgtlmoon/changedetection.io gebruik om bladsye vir wysigings te monitor wat kwesbaarhede kan invoeg.
Kry 'n hacker se perspektief op jou webtoepassings, netwerk, en wolk
Vind en rapporteer kritieke, exploiteerbare kwesbaarhede met werklike besigheidsimpak. Gebruik ons 20+ pasgemaakte hulpmiddels om die aanvaloppervlak te karteer, sekuriteitskwessies te vind wat jou toelaat om voorregte te verhoog, en gebruik outomatiese eksploit om noodsaaklike bewyse te versamel, wat jou harde werk in oortuigende verslae omskep.
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)