Translated ['src/pentesting-web/domain-subdomain-takeover.md', 'src/pent

This commit is contained in:
Translator 2025-02-04 18:53:59 +00:00
parent d6235b3225
commit 94d5b5265e
2 changed files with 80 additions and 37 deletions

View File

@ -11,7 +11,7 @@ As jy 'n domein (domain.tld) ontdek wat **gebruik word deur 'n diens binne die o
'n Subdomein van die maatskappy wys na 'n **derdeparty diens met 'n naam wat nie geregistreer is nie**. As jy 'n **rekening** in hierdie **derdeparty diens** kan **skep** en die **naam** wat in gebruik is kan **registreer**, kan jy die subdomein oorneem.
Daar is verskeie gereedskap met woordeboeke om moontlike oorneems te kontroleer:
Daar is verskeie gereedskap met woordeboeke om moontlike oornames te kontroleer:
- [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)
- [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot)
@ -31,17 +31,17 @@ Daar is verskeie gereedskap met woordeboeke om moontlike oorneems te kontroleer:
Wanneer DNS wildcard in 'n domein gebruik word, sal enige aangevraagde subdomein van daardie domein wat nie 'n ander adres het nie, **opgelos word na dieselfde inligting**. Dit kan 'n A IP adres, 'n CNAME...
Byvoorbeeld, as `*.testing.com` gewild is na `1.1.1.1`. Dan sal `not-existent.testing.com` na `1.1.1.1` wys.
Byvoorbeeld, as `*.testing.com` gewild gemaak word na `1.1.1.1`. Dan sal `not-existent.testing.com` na `1.1.1.1` wys.
As die stelselinvoerder egter dit na 'n **derdeparty diens via CNAME** wys, soos 'n G**ithub subdomein** byvoorbeeld (`sohomdatta1.github.io`). 'n Aanvaller kan **sy eie derdeparty bladsy skep** (in Gihub in hierdie geval) en sê dat `something.testing.com` daarheen wys. Omdat die **CNAME wildcard** sal saamstem, sal die aanvaller in staat wees om **arbitraire subdomeine vir die domein van die slagoffer te genereer wat na sy bladsye wys**.
As die stelselsadministrateur egter dit na 'n **derdeparty diens via CNAME** wys, soos 'n G**ithub subdomein** byvoorbeeld (`sohomdatta1.github.io`). 'n Aanvaller kan **sy eie derdeparty bladsy skep** (in Gihub in hierdie geval) en sê dat `something.testing.com` daarheen wys. Omdat die **CNAME wildcard** sal saamstem, sal die aanvaller in staat wees om **arbitraire subdomeine vir die domein van die slagoffer te genereer wat na sy bladsye wys**.
Jy kan 'n voorbeeld van hierdie kwesbaarheid in die CTF skrywe vind: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api)
## Exploiteer 'n subdomein oorneem
Subdomein oorneem is essensieel DNS spoofing vir 'n spesifieke domein oor die internet, wat aanvallers toelaat om A rekords vir 'n domein in te stel, wat blaaiers lei om inhoud van die aanvaller se bediener te vertoon. Hierdie **deursigtigheid** in blaaiers maak domeine geneig tot phishing. Aanvallers mag [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) of [_Doppelganger domeine_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) vir hierdie doel gebruik. Veral kwesbaar is domeine waar die URL in 'n phishing e-pos legitiem lyk, wat gebruikers mislei en spamfilters ontduik weens die domein se inherente vertroue.
Subdomein oorneem is in wese DNS spoofing vir 'n spesifieke domein oor die internet, wat aanvallers toelaat om A rekords vir 'n domein in te stel, wat blaaiers lei om inhoud van die aanvaller se bediener te vertoon. Hierdie **deursigtigheid** in blaaiers maak domeine geneig tot phishing. Aanvallers mag [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) of [_Doppelganger domeine_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) vir hierdie doel gebruik. Veral kwesbaar is domeine waar die URL in 'n phishing e-pos legitiem lyk, wat gebruikers mislei en spamfilters ontduik weens die domein se inherente vertroue.
Kontroleer hierdie [plasing vir verdere besonderhede](https://0xpatrik.com/subdomain-takeover/)
Kyk na hierdie [plasing vir verdere besonderhede](https://0xpatrik.com/subdomain-takeover/)
### **SSL Sertifikate**
@ -51,9 +51,25 @@ SSL sertifikate, as dit deur aanvallers gegenereer word via dienste soos [_Let's
Blaaier deursigtigheid strek ook na koekie sekuriteit, wat gereguleer word deur beleide soos die [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). Koekies, wat dikwels gebruik word om sessies te bestuur en aanmeld tokens te stoor, kan deur subdomein oorneem uitgebuit word. Aanvallers kan **sessie koekies versamel** bloot deur gebruikers na 'n gecompromitteerde subdomein te lei, wat gebruikersdata en privaatheid in gevaar stel.
### CORS Bypass
Dit mag moontlik wees dat elke subdomein toegelaat word om CORS hulpbronne van die hoofdomein of ander subdomeine te benader. Dit kan deur 'n aanvaller uitgebuit word om **sensitiewe inligting** te bekom deur CORS versoeke te misbruik.
### CSRF - Same-Site Koekies bypass
Dit mag moontlik wees dat die subdomein toegelaat word om koekies na die domein of ander subdomeine te stuur wat deur die `Same-Site` attribuut van die koekies verhoed is. Let egter daarop dat anti-CSRF tokens steeds hierdie aanval sal voorkom as hulle behoorlik geïmplementeer is.
### OAuth tokens herlei
Dit mag moontlik wees dat die gecompromitteerde subdomein toegelaat word om gebruik te word in die `redirect_uri` URL van 'n OAuth vloei. Dit kan deur 'n aanvaller uitgebuit word om die **OAuth token** te **steel**.
### CSP Bypass
Dit mag moontlik wees dat die gecompromitteerde subdomein (of elke subdomein) toegelaat word om byvoorbeeld die `script-src` van die CSP te gebruik. Dit kan deur 'n aanvaller uitgebuit word om **kwaadwillige skripte in te voeg** en potensiële XSS kwesbaarhede te misbruik.
### **E-pos en Subdomein Oorneem**
Nog 'n aspek van subdomein oorneem behels e-posdienste. Aanvallers kan **MX rekords** manipuleer om e-posse van 'n legitieme subdomein te ontvang of te stuur, wat die doeltreffendheid van phishing-aanvalle verbeter.
'n Ander aspek van subdomein oorneem behels e-posdienste. Aanvallers kan **MX rekords** manipuleer om e-posse van 'n legitieme subdomein te ontvang of te stuur, wat die doeltreffendheid van phishing-aanvalle verbeter.
### **Hoër Orde Risiko's**
@ -61,7 +77,7 @@ Verder risiko's sluit **NS rekord oorneem** in. As 'n aanvaller beheer oor een N
### CNAME Rekord Kwesbaarheid
Aanvallers mag onopgeëiste CNAME rekords wat na eksterne dienste wys wat nie meer gebruik word of afgeskakel is nie, uitbuit. Dit stel hulle in staat om 'n bladsy onder die vertroude domein te skep, wat phishing of malware verspreiding verder fasiliteer.
Aanvallers mag onopgeëiste CNAME rekords wat na eksterne dienste wys wat nie meer gebruik word of afgeskakel is nie, uitbuit. Dit stel hulle in staat om 'n bladsy onder die vertroude domein te skep, wat phishing of malware verspreiding verder vergemaklik.
### **Mitigering Strategieë**
@ -69,13 +85,14 @@ Mitigering strategieë sluit in:
1. **Verwydering van kwesbare DNS rekords** - Dit is effektief as die subdomein nie meer benodig word nie.
2. **Eise van die domeinnaam** - Registreer die hulpbron by die betrokke wolkverskaffer of heraankoop 'n vervalde domein.
3. **Gereelde monitering vir kwesbaarhede** - Gereedskap soos [aquatone](https://github.com/michenriksen/aquatone) kan help om kwesbare domeine te identifiseer. Organisasies moet ook hul infrastruktuur bestuur proses hersien, om te verseker dat DNS rekord skepping die finale stap in hulpbron skepping en die eerste stap in hulpbron vernietiging is.
3. **Gereelde monitering vir kwesbaarhede** - Gereedskap soos [aquatone](https://github.com/michenriksen/aquatone) kan help om kwesbare domeine te identifiseer. Organisasies moet ook hul infrastruktuur bestuur proses hersien, om te verseker dat die skepping van DNS rekords die finale stap in hulpbron skepping en die eerste stap in hulpbron vernietiging is.
Vir wolkverskaffers is dit belangrik om domeinbesit te verifieer om subdomein oorneems te voorkom. Sommige, soos [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), het hierdie probleem erken en domeinverifikasiesisteme geïmplementeer.
Vir wolkverskaffers is dit van kardinale belang om domeinbesit te verifieer om subdomein oornames te voorkom. Sommige, soos [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), het hierdie probleem erken en domeinverifikasiemeganismes geïmplementeer.
## Verwysings
- [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/)
- [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide)
- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20)
{{#include ../banners/hacktricks-training.md}}

View File

@ -8,11 +8,11 @@ Koekies kom met verskeie attribuut wat hul gedrag in die gebruiker se blaaiers b
### Vervaldatum en Max-Age
Die vervaldatum van 'n koekie word bepaal deur die `Expires` attribuut. Omgekeerd, die `Max-age` attribuut definieer die tyd in sekondes totdat 'n koekie verwyder word. **Kies vir `Max-age` aangesien dit meer moderne praktyke weerspieël.**
Die vervaldatum van 'n koekie word bepaal deur die `Expires` attribuut. Omgekeerd definieer die `Max-age` attribuut die tyd in sekondes totdat 'n koekie verwyder word. **Kies vir `Max-age` aangesien dit meer moderne praktyke weerspieël.**
### Domein
Die gasheer wat 'n koekie ontvang, word gespesifiseer deur die `Domain` attribuut. Standaard is dit ingestel op die gasheer wat die koekie uitgereik het, sonder om sy subdomeine in te sluit. Wanneer die `Domain` attribuut egter eksplisiet ingestel word, sluit dit ook subdomeine in. Dit maak die spesifikasie van die `Domain` attribuut 'n minder beperkende opsie, nuttig vir scenario's waar koekie deel tussen subdomeine nodig is. Byvoorbeeld, om `Domain=mozilla.org` in te stel maak koekies beskikbaar op sy subdomeine soos `developer.mozilla.org`.
Die gasheer wat 'n koekie ontvang, word gespesifiseer deur die `Domain` attribuut. Standaard is dit ingestel op die gasheer wat die koekie uitgereik het, sonder om sy subdomeine in te sluit. Wanneer die `Domain` attribuut egter eksplisiet ingestel word, sluit dit ook subdomeine in. Dit maak die spesifikasie van die `Domain` attribuut 'n minder beperkende opsie, nuttig vir scenario's waar koekie deel tussen subdomeine nodig is. Byvoorbeeld, om `Domain=mozilla.org` in te stel, maak koekies beskikbaar op sy subdomeine soos `developer.mozilla.org`.
### Pad
@ -54,13 +54,13 @@ Let daarop dat tydelik, na die toepassing van hierdie verandering, die **koekies
### HttpOnly
Dit verhoed die **klient** om toegang tot die koekie te verkry (Via **Javascript** byvoorbeeld: `document.cookie`)
Dit verhoed dat die **klient** toegang tot die koekie het (Via **Javascript** byvoorbeeld: `document.cookie`)
#### **Omseilings**
- As die bladsy **die koekies as die antwoord** van 'n versoek stuur (byvoorbeeld in 'n **PHPinfo** bladsy), is dit moontlik om die XSS te misbruik om 'n versoek na hierdie bladsy te stuur en **die koekies** uit die antwoord te **steel** (kyk 'n voorbeeld in [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
- As die bladsy **die koekies as die antwoord** van 'n versoek stuur (byvoorbeeld in 'n **PHPinfo** bladsy), is dit moontlik om die XSS te misbruik om 'n versoek na hierdie bladsy te stuur en **die koekies** uit die antwoord te **steel** (kyk 'n voorbeeld in [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/)).
- Dit kan omseil word met **TRACE** **HTTP** versoeke aangesien die antwoord van die bediener (as hierdie HTTP metode beskikbaar is) die koekies wat gestuur is, sal weerspieël. Hierdie tegniek word **Cross-Site Tracking** genoem.
- Hierdie tegniek word vermy deur **moderne blaaiers deur nie 'n TRACE** versoek van JS toe te laat nie. Daar is egter sekere omseilings in spesifieke sagteware gevind, soos om `\r\nTRACE` in plaas van `TRACE` na IE6.0 SP2 te stuur.
- Hierdie tegniek word vermy deur **moderne blaaiers deur nie toe te laat om 'n TRACE** versoek van JS te stuur nie. Daar is egter sekere omseilings in spesifieke sagteware gevind, soos om `\r\nTRACE` in plaas van `TRACE` na IE6.0 SP2 te stuur.
- 'n Ander manier is die uitbuiting van nul/dag kwesbaarhede van die blaaiers.
- Dit is moontlik om **HttpOnly koekies** te oorskry deur 'n Koekie Jar oorgeloop aanval uit te voer:
@ -76,20 +76,20 @@ Die versoek sal **slegs** die koekie in 'n HTTP versoek stuur as die versoek oor
## Koekies Vooraf
Koekies wat met `__Secure-` geaffilieer is, moet saam met die `secure` vlag van bladsye wat deur HTTPS beveilig is, ingestel word.
Koekies wat met `__Secure-` voorafgegaan word, moet saam met die `secure` vlag van bladsye wat deur HTTPS beveilig is, ingestel word.
Vir koekies wat met `__Host-` geaffilieer is, moet verskeie voorwaardes nagekom word:
Vir koekies wat met `__Host-` voorafgegaan word, moet verskeie voorwaardes nagekom word:
- Hulle moet met die `secure` vlag ingestel word.
- Hulle moet afkomstig wees van 'n bladsy wat deur HTTPS beveilig is.
- Hulle is verbode om 'n domein te spesifiseer, wat hul oordrag na subdomeine voorkom.
- Die pad vir hierdie koekies moet op `/` ingestel wees.
Dit is belangrik om daarop te let dat koekies wat met `__Host-` geaffilieer is, nie toegelaat word om na superdomeine of subdomeine gestuur te word nie. Hierdie beperking help om toepassingskoekies te isoleer. Dus, om die `__Host-` voorvoegsel vir alle toepassingskoekies te gebruik, kan beskou word as 'n goeie praktyk om sekuriteit en isolasie te verbeter.
Dit is belangrik om te noem dat koekies wat met `__Host-` voorafgegaan word, nie toegelaat word om na superdomeine of subdomeine gestuur te word nie. Hierdie beperking help om toepassingskoekies te isoleer. Dus, om die `__Host-` voorvoegsel vir alle toepassingskoekies te gebruik, kan beskou word as 'n goeie praktyk om sekuriteit en isolasie te verbeter.
### Oorskry van koekies
So, een van die beskermings van `__Host-` geaffilieerde koekies is om te voorkom dat hulle van subdomeine oorgeskryf word. Dit voorkom byvoorbeeld [**Koekie Tossing aanvalle**](cookie-tossing.md). In die praatjie [**Koekies Krummel: Ontsluiting van Web Sessies Integriteit Kwesbaarhede**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**papier**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) word aangebied dat dit moontlik was om \_\_HOST- geaffilieerde koekies van subdomein in te stel, deur die parser te bedrieg, byvoorbeeld, om "=" aan die begin of aan die begin en die einde by te voeg...:
So, een van die beskermings van `__Host-` voorafgegaan koekies is om te voorkom dat hulle van subdomeine oorgeskryf word. Dit voorkom byvoorbeeld [**Koekie Tossing aanvalle**](cookie-tossing.md). In die praatjie [**Koekies Krummel: Ontsluiting van Web Sessies Integriteit Kwesbaarhede**](https://www.youtube.com/watch?v=F_wAzF4a7Xg) ([**papier**](https://www.usenix.org/system/files/usenixsecurity23-squarcina.pdf)) word aangebied dat dit moontlik was om \_\_HOST- voorafgegaan koekies van subdomein in te stel, deur die parser te bedrieg, byvoorbeeld, om "=" aan die begin of aan die begin en die einde by te voeg...:
<figure><img src="../../images/image (6) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
@ -99,9 +99,9 @@ Of in PHP was dit moontlik om **ander karakters aan die begin** van die koekie n
## Koekies Aanvalle
As 'n pasgemaakte koekie sensitiewe data bevat, kyk dit (spesifiek as jy 'n CTF speel), aangesien dit kwesbaar mag wees.
As 'n pasgemaakte koekie sensitiewe data bevat, kyk daarna (veral as jy 'n CTF speel), aangesien dit kwesbaar mag wees.
### Dekodering en Manipulasie van Koekies
### Dekodering en Manipulering van Koekies
Sensitiewe data wat in koekies ingebed is, moet altyd ondersoek word. Koekies wat in Base64 of soortgelyke formate gekodeer is, kan dikwels gedekodeer word. Hierdie kwesbaarheid laat aanvallers toe om die koekie se inhoud te verander en ander gebruikers na te boots deur hul gewysigde data terug in die koekie te kodeer.
@ -111,7 +111,7 @@ Hierdie aanval behels die steel van 'n gebruiker se koekie om ongeoorloofde toeg
### Sessiefiksasie
In hierdie scenario, bedrieg 'n aanvaller 'n slagoffer om 'n spesifieke koekie te gebruik om in te log. As die toepassing nie 'n nuwe koekie toeken nie wanneer daar ingelog word, kan die aanvaller, wat die oorspronklike koekie besit, die slagoffer na boots. Hierdie tegniek is afhanklik van die slagoffer wat met 'n koekie wat deur die aanvaller verskaf is, inlog.
In hierdie scenario bedrieg 'n aanvaller 'n slagoffer om 'n spesifieke koekie te gebruik om in te log. As die toepassing nie 'n nuwe koekie toeken nie wanneer daar ingelog word, kan die aanvaller, wat die oorspronklike koekie besit, die slagoffer na boots. Hierdie tegniek is afhanklik van die slagoffer wat inlog met 'n koekie wat deur die aanvaller verskaf is.
As jy 'n **XSS in 'n subdomein** gevind het of jy **beheer 'n subdomein**, lees:
@ -121,7 +121,7 @@ cookie-tossing.md
### Sessiedonasie
Hier, oortuig die aanvaller die slagoffer om die aanvaller se sessie koekie te gebruik. Die slagoffer, wat glo dat hulle in hul eie rekening ingelog is, sal onbewustelik aksies in die konteks van die aanvaller se rekening uitvoer.
Hier oortuig die aanvaller die slagoffer om die aanvaller se sessie koekie te gebruik. Die slagoffer, wat glo dat hulle in hul eie rekening ingelog is, sal onbewustelik aksies in die konteks van die aanvaller se rekening uitvoer.
As jy 'n **XSS in 'n subdomein** gevind het of jy **beheer 'n subdomein**, lees:
@ -133,7 +133,7 @@ cookie-tossing.md
Klik op die vorige skakel om toegang te verkry tot 'n bladsy wat moontlike gebreke in JWT verduidelik.
JSON Web Tokens (JWT) wat in koekies gebruik word, kan ook kwesbaarhede bied. Vir diepgaande inligting oor potensiële gebreke en hoe om dit te benut, word dit aanbeveel om die gekoppelde dokument oor die hacking van JWT te raadpleeg.
JSON Web Tokens (JWT) wat in koekies gebruik word, kan ook kwesbaarhede . Vir diepgaande inligting oor potensiële gebreke en hoe om dit te benut, word dit aanbeveel om die gekoppelde dokument oor die hack van JWT te raadpleeg.
### Kruis-web Versoek Forgery (CSRF)
@ -155,7 +155,7 @@ document.cookie = `${name}=${value}`
setCookie("", "a=b") // Setting the empty cookie modifies another cookie's value
```
Dit lei daartoe dat die blaaiert 'n koekie-kopstuk stuur wat deur elke webbediener geïnterpreteer word as 'n koekie met die naam `a` en 'n waarde `b`.
Dit lei daartoe dat die blaaiert 'n koekie-kop stuur wat deur elke webbediener geïnterpreteer word as 'n koekie met die naam `a` en 'n waarde `b`.
#### Chrome Fout: Unicode Surrogate Codepoint Probleem
@ -167,13 +167,13 @@ Dit lei tot `document.cookie` wat 'n leë string uitset, wat permanente korrupsi
#### Koekie Smuggling Weens Parsing Probleme
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Verskeie webbedieners, insluitend dié van Java (Jetty, TomCat, Undertow) en Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), hanteer koekie stringe verkeerd weens verouderde RFC2965 ondersteuning. Hulle lees 'n dubbel-aanhaling koekiewaarde as 'n enkele waarde, selfs al bevat dit puntkommas, wat normaalweg sleutel-waarde pare moet skei:
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Verskeie webbedieners, insluitend dié van Java (Jetty, TomCat, Undertow) en Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), hanteer koekie stringe verkeerd weens verouderde RFC2965 ondersteuning. Hulle lees 'n dubbel-aanhaling koekiewaarde as 'n enkele waarde, selfs al sluit dit puntkommas in, wat normaalweg sleutel-waarde pare moet skei:
```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
```
#### Cookie-inspuitkwesbaarhede
#### Koekie-inspuitingskw vulnerabilities
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Die onkorrekte ontleding van koekies deur bedieners, veral Undertow, Zope, en dié wat Python se `http.cookie.SimpleCookie` en `http.cookie.BaseCookie` gebruik, skep geleenthede vir koekie-inspuitaanvalle. Hierdie bedieners slaag nie daarin om die begin van nuwe koekies behoorlik te begrens nie, wat dit moontlik maak vir aanvallers om koekies na te maak:
(Kyk na verdere besonderhede in die [oorspronklike navorsing](https://blog.ankursundara.com/cookie-bugs/)) Die onakkurate ontleding van koekies deur bedieners, veral Undertow, Zope, en dié wat Python se `http.cookie.SimpleCookie` en `http.cookie.BaseCookie` gebruik, skep geleenthede vir koekie-inspuitingsaanvalle. Hierdie bedieners slaag nie daarin om die begin van nuwe koekies behoorlik te begrens nie, wat dit moontlik maak vir aanvallers om koekies na te maak:
- Undertow verwag 'n nuwe koekie onmiddellik na 'n aangehaalde waarde sonder 'n puntkomma.
- Zope soek 'n komma om die volgende koekie te begin ontleed.
@ -181,24 +181,50 @@ RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
Hierdie kwesbaarheid is veral gevaarlik in webtoepassings wat op koekie-gebaseerde CSRF-beskerming staatmaak, aangesien dit aanvallers in staat stel om nagebootste CSRF-token koekies in te spuit, wat moontlik sekuriteitsmaatreëls kan omseil. Die probleem word vererger deur Python se hantering van duplikaat koekiename, waar die laaste voorkoms vroeëre oorskry. Dit wek ook kommer vir `__Secure-` en `__Host-` koekies in onveilige kontekste en kan lei tot magtigingsoorskryding wanneer koekies aan agtergrondbedieners oorgedra word wat vatbaar is vir nabootsing.
### Koekies $version en WAF-omseilings
### Koekies $version
Volgens [**hierdie blogpos**](https://portswigger.net/research/bypassing-wafs-with-the-phantom-version-cookie), mag dit moontlik wees om die koekie-attribuut **`$Version=1`** te gebruik om die agtergrond 'n ou logika te laat gebruik om die koekie te ontleed weens die **RFC2109**. Boonop kan ander waardes soos **`$Domain`** en **`$Path`** gebruik word om die gedrag van die agtergrond met die koekie te verander.
#### WAF Oorskryding
#### Omseiling van waarde-analise met aangehaalde-string kodering
Volgens [**hierdie blogpos**](https://portswigger.net/research/bypassing-wafs-with-the-phantom-version-cookie), mag dit moontlik wees om die koekie-attribuut **`$Version=1`** te gebruik om die agtergrond 'n ou logika te laat gebruik om die koekie te ontleed as gevolg van die **RFC2109**. Boonop kan ander waardes soos **`$Domain`** en **`$Path`** gebruik word om die gedrag van die agtergrond met die koekie te verander.
#### Koekie-sandwich-aanval
Volgens [**hierdie blogpos**](https://portswigger.net/research/stealing-httponly-cookies-with-the-cookie-sandwich-technique) is dit moontlik om die koekie-sandwich-tegniek te gebruik om HttpOnly koekies te steel. Dit is die vereistes en stappe:
- Vind 'n plek waar 'n blykbaar nuttelose **koekie in die antwoord weerspieël word**
- **Skep 'n koekie genaamd `$Version`** met die waarde `1` (jy kan dit in 'n XSS-aanval vanaf JS doen) met 'n meer spesifieke pad sodat dit die aanvanklike posisie kry (sommige raamwerke soos Python het nie hierdie stap nodig nie)
- **Skep die koekie wat weerspieël word** met 'n waarde wat 'n **oop dubbele aanhalingstekens** laat en met 'n spesifieke pad sodat dit in die koekiedatabasis na die vorige een (`$Version`) geposisioneer word
- Dan sal die wettige koekie volgende in die volgorde gaan
- **Skep 'n dummy koekie wat die dubbele aanhalingstekens** binne sy waarde sluit
Op hierdie manier word die slagoffer koekie vasgevang binne die nuwe koekie weergawe 1 en sal dit weerspieël word wanneer dit weerspieël word.
bv. uit die pos:
```javascript
document.cookie = `$Version=1;`;
document.cookie = `param1="start`;
// any cookies inside the sandwich will be placed into param1 value server-side
document.cookie = `param2=end";`;
```
### WAF omseilings
#### Cookies $version
Kyk die vorige afdeling.
#### Omseiling van waarde-analisering met aangehaalde-string kodering
Hierdie ontleding dui aan om ontsnapte waardes binne die koekies te ontsnap, sodat "\a" "a" word. Dit kan nuttig wees om WAFS te omseil soos:
- `eval('test') => verbode`
- `"\e\v\a\l\(\'\t\e\s\t\'\)" => toegelaat`
#### Omseiling van koekie-naam bloklys
#### Omseiling van koekie-naam bloklyste
In die RFC2109 word aangedui dat 'n **komma as 'n skeidingsteken tussen koekiewaardes gebruik kan word**. En dit is ook moontlik om **spasies en tabblads voor en na die gelykteken by te voeg**. Daarom genereer 'n koekie soos `$Version=1; foo=bar, abc = qux` nie die koekie `"foo":"bar, admin = qux"` nie, maar die koekies `foo":"bar"` en `"admin":"qux"`. Let op hoe 2 koekies gegenereer word en hoe admin die spasie voor en na die gelykteken verwyder is.
In die RFC2109 word aangedui dat 'n **komma as 'n skeidingsteken tussen koekiewaardes gebruik kan word**. En dit is ook moontlik om **spasies en tabulasies voor en na die gelykteken by te voeg**. Daarom genereer 'n koekie soos `$Version=1; foo=bar, abc = qux` nie die koekie `"foo":"bar, admin = qux"` nie, maar die koekies `foo":"bar"` en `"admin":"qux"`. Let op hoe 2 koekies gegenereer word en hoe admin die spasie voor en na die gelykteken verwyder is.
#### Omseiling van waarde-analise met koekie-splitsing
#### Omseiling van waarde-analisering met koekie-skeiding
Laastens sou verskillende agterdeure in 'n string verskillende koekies wat in verskillende koekie-koptekste oorgedra word, saamvoeg soos in:
Laastens sou verskillende agterdeure in 'n string verskillende koekies saamvoeg wat in verskillende koekie-koptekste deurgegee word soos in:
```
GET / HTTP/1.1
Host: example.com
@ -242,9 +268,9 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
```
Padbuster sal verskeie pogings maak en sal jou vra watter voorwaarde die foutvoorwaarde is (die een wat nie geldig is nie).
Padbuster sal verskeie pogings doen en jou vra watter voorwaarde die foutvoorwaarde is (die een wat nie geldig is nie).
Dan sal dit begin om die koekie te ontsleutel (dit kan 'n paar minute neem)
Dan sal dit begin om die koekie te ontsleutel (dit kan 'n paar minute neem).
As die aanval suksesvol uitgevoer is, kan jy probeer om 'n string van jou keuse te enkripteer. Byvoorbeeld, as jy sou wil **encrypt** **user=administrator**
```