From d26b576b1070ff0d382376aecc742f717e3ef969 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 24 Mar 2025 11:34:12 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/1883-pentesting-mqtt-mosqui --- .../1883-pentesting-mqtt-mosquitto.md | 22 ++- src/pentesting-web/cache-deception/README.md | 62 ++++---- .../hacking-with-cookies/cookie-tossing.md | 23 +-- .../xss-cross-site-scripting/README.md | 141 +++++++++--------- 4 files changed, 126 insertions(+), 122 deletions(-) diff --git a/src/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md b/src/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md index 7e52be5dd..92cdb3242 100644 --- a/src/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md +++ b/src/network-services-pentesting/1883-pentesting-mqtt-mosquitto.md @@ -4,7 +4,7 @@ ## Basiese Inligting -**MQ Telemetry Transport (MQTT)** is bekend as 'n **publiseer/teken in boodskap protokol** wat uitstaan vir sy uiterste eenvoud en ligtheid. Hierdie protokol is spesifiek ontwerp vir omgewings waar toestelle beperkte vermoëns het en werk oor netwerke wat gekenmerk word deur lae bandwydte, hoë latensie, of onbetroubare verbindings. Die kern doelwitte van MQTT sluit in om die gebruik van netwerkbandwydte te minimaliseer en die vraag op toestel hulpbronne te verminder. Daarbenewens poog dit om betroubare kommunikasie te handhaaf en 'n sekere vlak van afleweringswaarborg te bied. Hierdie doelwitte maak MQTT uiters geskik vir die opkomende veld van **masjien-tot-masjien (M2M) kommunikasie** en die **Internet van Dinge (IoT)**, waar dit noodsaaklik is om 'n menigte toestelle doeltreffend te verbind. Boonop is MQTT baie voordelig vir mobiele toepassings, waar die bewaring van bandwydte en batterylewe van kardinale belang is. +**MQ Telemetry Transport (MQTT)** is bekend as 'n **publiseer/teken in boodskap protokol** wat uitstaan vir sy uiterste eenvoud en ligtheid. Hierdie protokol is spesifiek ontwerp vir omgewings waar toestelle beperkte vermoëns het en oor netwerke werk wat gekenmerk word deur lae bandwydte, hoë latensie, of onbetroubare verbindings. Die kern doelwitte van MQTT sluit in om die gebruik van netwerkbandwydte te minimaliseer en die vraag op toestel hulpbronne te verminder. Boonop poog dit om betroubare kommunikasie te handhaaf en 'n sekere vlak van afleweringswaarborg te bied. Hierdie doelwitte maak MQTT uiters geskik vir die opkomende veld van **masjien-tot-masjien (M2M) kommunikasie** en die **Internet van Dinge (IoT)**, waar dit noodsaaklik is om 'n menigte toestelle doeltreffend te verbind. Verder is MQTT baie voordelig vir mobiele toepassings, waar die bewaring van bandwydte en batterylewe van kardinale belang is. **Standaard poort:** 1883 ``` @@ -13,7 +13,7 @@ PORT STATE SERVICE REASON ``` ## Inspecting the traffic -Wanneer 'n **CONNECT** pakket deur MQTT brokers ontvang word, word 'n **CONNACK** pakket teruggestuur. Hierdie pakket bevat 'n terugkode wat van kardinale belang is om die verbintenisstatus te verstaan. 'n Terugkode van **0x00** beteken dat die geloofsbriewe aanvaar is, wat 'n suksesvolle verbinding aandui. Aan die ander kant dui 'n terugkode van **0x05** aan dat die geloofsbriewe ongeldig is, wat die verbinding voorkom. +Wanneer 'n **CONNECT** pakket deur MQTT-brokers ontvang word, word 'n **CONNACK** pakket teruggestuur. Hierdie pakket bevat 'n terugkode wat noodsaaklik is om die verbindsstatus te verstaan. 'n Terugkode van **0x00** beteken dat die geloofsbriewe aanvaar is, wat 'n suksesvolle verbinding aandui. Aan die ander kant dui 'n terugkode van **0x05** aan dat die geloofsbriewe ongeldig is, wat die verbinding voorkom. Byvoorbeeld, as die broker die verbinding weier weens ongeldig geloofsbriewe, sal die scenario iets soos volg lyk: ``` @@ -28,7 +28,7 @@ Byvoorbeeld, as die broker die verbinding weier weens ongeldig geloofsbriewe, sa ## Pentesting MQTT -**Outentisering is heeltemal opsioneel** en selfs al word outentisering uitgevoer, **word versleuteling nie standaard gebruik nie** (akkrediteer is in duidelike teks gestuur). MITM-aanvalle kan steeds uitgevoer word om wagwoorde te steel. +**Outentisering is heeltemal opsioneel** en selfs al word outentisering uitgevoer, **word versleuteling nie standaard gebruik nie** (akkrediteer word in duidelike teks gestuur). MITM-aanvalle kan steeds uitgevoer word om wagwoorde te steel. Om met 'n MQTT-diens te verbind, kan jy gebruik maak van: [https://github.com/bapowell/python-mqtt-client-shell](https://github.com/bapowell/python-mqtt-client-shell) en jouself aan al die onderwerpe te inteken deur: ``` @@ -36,13 +36,13 @@ Om met 'n MQTT-diens te verbind, kan jy gebruik maak van: [https://github.com/ba > subscribe "#" 1 > subscribe "$SYS/#" ``` -Jy kan ook gebruik maak van: +U kan ook gebruik maak van: ```bash apt-get install mosquitto mosquitto-clients mosquitto_sub -t 'test/topic' -v #Subscribe to 'test/topic' mosquitto_sub -h -t "#" -v #Subscribe to ALL topics. ``` -Of jy kan **hierdie kode uitvoer om te probeer om met 'n MQTT-diens te verbind sonder outentisering, op elke onderwerp te inteken en hulle te luister**: +Of jy kan **hierdie kode uitvoer om te probeer om met 'n MQTT-diens te verbind sonder verifikasie, op elke onderwerp te inteken en hulle te luister**: ```python #This is a modified version of https://github.com/Warflop/IOT-MQTT-Exploit/blob/master/mqtt.py import paho.mqtt.client as mqtt @@ -71,10 +71,6 @@ client.loop_start() if __name__ == "__main__": main() ``` -## Meer inligting - -from here: [https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b](https://morphuslabs.com/hacking-the-iot-with-mqtt-8edaf0d07b9b) - ### Die Publiseer/Inteken Patroon Die publiseer/inteken model bestaan uit: @@ -82,7 +78,7 @@ Die publiseer/inteken model bestaan uit: - **Publisher**: publiseer 'n boodskap na een (of meer) onderwerp(e) in die broker. - **Subscriber**: teken in op een (of meer) onderwerp(e) in die broker en ontvang al die boodskappe wat van die publisher gestuur word. - **Broker**: roeteer al die boodskappe van die publishers na die subscribers. -- **Topic**: bestaan uit een of meer vlakke wat geskei word deur 'n skuins streep (bv., /smartshouse/livingroom/temperature). +- **Topic**: bestaan uit een of meer vlakke wat geskei word deur 'n skuinsstreep (bv., /smartshouse/livingroom/temperature). ### Pakket Formaat @@ -92,16 +88,16 @@ Elke MQTT-pakket bevat 'n vaste kop (Figuur 02).Figuur 02: Vaste Kop ### Pakket Tipes -- CONNECT (1): Begin deur die kliënt om 'n verbinding met die bediener aan te vra. +- CONNECT (1): Begin deur die kliënt om 'n verbinding met die bediener te versoek. - CONNACK (2): Die bediener se erkenning van 'n suksesvolle verbinding. - PUBLISH (3): Gebruik om 'n boodskap van die kliënt na die bediener of omgekeerd te stuur. - PUBACK (4): Erkenning van 'n PUBLISH-pakket. - PUBREC (5): Deel van 'n boodskap afleweringsprotokol wat verseker dat die boodskap ontvang word. -- PUBREL (6): Verdere sekerheid in boodskapaflewering, wat 'n boodskapvrystelling aandui. +- PUBREL (6): Verdere versekerings in boodskapaflewering, wat 'n boodskapvrystelling aandui. - PUBCOMP (7): Finale deel van die boodskap afleweringsprotokol, wat voltooiing aandui. - SUBSCRIBE (8): 'n Kliënt se versoek om na boodskappe van 'n onderwerp te luister. - SUBACK (9): Die bediener se erkenning van 'n SUBSCRIBE versoek. -- UNSUBSCRIBE (10): 'n Kliënt se versoek om te stop om boodskappe van 'n onderwerp te ontvang. +- UNSUBSCRIBE (10): 'n Kliënt se versoek om te stop met die ontvangs van boodskappe van 'n onderwerp. - UNSUBACK (11): Die bediener se reaksie op 'n UNSUBSCRIBE versoek. - PINGREQ (12): 'n Hartklop boodskap wat deur die kliënt gestuur word. - PINGRESP (13): Die bediener se reaksie op die hartklop boodskap. diff --git a/src/pentesting-web/cache-deception/README.md b/src/pentesting-web/cache-deception/README.md index 619a9df2e..6a8a98a2b 100644 --- a/src/pentesting-web/cache-deception/README.md +++ b/src/pentesting-web/cache-deception/README.md @@ -6,8 +6,8 @@ > **Wat is die verskil tussen web cache poisoning en web cache deception?** > -> - In **web cache poisoning** veroorsaak die aanvaller dat die toepassing 'n paar kwaadwillige inhoud in die cache stoor, en hierdie inhoud word vanaf die cache aan ander toepassingsgebruikers bedien. -> - In **web cache deception** veroorsaak die aanvaller dat die toepassing 'n paar sensitiewe inhoud wat aan 'n ander gebruiker behoort in die cache stoor, en die aanvaller haal dan hierdie inhoud uit die cache. +> - In **web cache poisoning** veroorsaak die aanvaller dat die aansoek 'n paar kwaadwillige inhoud in die cache stoor, en hierdie inhoud word vanaf die cache aan ander aansoekgebruikers bedien. +> - In **web cache deception** veroorsaak die aanvaller dat die aansoek 'n paar sensitiewe inhoud wat aan 'n ander gebruiker behoort in die cache stoor, en die aanvaller haal dan hierdie inhoud uit die cache. ## Cache Poisoning @@ -15,17 +15,17 @@ Cache poisoning is daarop gemik om die kliënt-kant cache te manipuleer om klië Die uitvoering van 'n cache poisoning aanval behels verskeie stappe: -1. **Identifikasie van Ongekykte Insette**: Dit is parameters wat, alhoewel nie vereis word vir 'n versoek om in die cache gestoor te word nie, die antwoord wat deur die bediener teruggestuur word, kan verander. Die identifikasie van hierdie insette is van kardinale belang aangesien dit benut kan word om die cache te manipuleer. +1. **Identifikasie van Ongekykte Insette**: Dit is parameters wat, alhoewel nie vereis vir 'n versoek om in die cache gestoor te word nie, die antwoord wat deur die bediener teruggestuur word, kan verander. Die identifikasie van hierdie insette is van kardinale belang aangesien dit benut kan word om die cache te manipuleer. 2. **Eksploitatie van die Ongekykte Insette**: Nadat die ongekykte insette geïdentifiseer is, behels die volgende stap om uit te vind hoe om hierdie parameters te misbruik om die bediener se antwoord op 'n manier te verander wat die aanvaller bevoordeel. 3. **Verseker dat die Besmette Antwoord in die Cache Gestoor Word**: Die finale stap is om te verseker dat die gemanipuleerde antwoord in die cache gestoor word. Op hierdie manier sal enige gebruiker wat toegang tot die betrokke bladsy verkry terwyl die cache besoedel is, die besmette antwoord ontvang. ### Ontdekking: Kontroleer HTTP koptekste -Gewoonlik, wanneer 'n antwoord **in die cache gestoor is**, sal daar 'n **kopteks wees wat dit aandui**, jy kan kyk watter koptekste jy op hierdie pos moet let: [**HTTP Cache koptekste**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers). +Gewoonlik, wanneer 'n antwoord **in die cache gestoor is**, sal daar 'n **kopteken wees wat dit aandui**, jy kan kyk watter koptekste jy moet aandag gee in hierdie pos: [**HTTP Cache koptekste**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers). -### Ontdekking: Cache foutkodes +### Ontdekking: Caching foutkodes -As jy dink dat die antwoord in 'n cache gestoor word, kan jy probeer om **versoeke met 'n slegte kopteks te stuur**, wat met 'n **statuskode 400** beantwoord moet word. Probeer dan om die versoek normaal te benader en as die **antwoord 'n 400 statuskode is**, weet jy dit is kwesbaar (en jy kan selfs 'n DoS uitvoer). +As jy dink dat die antwoord in 'n cache gestoor word, kan jy probeer om **versoeke met 'n slegte kopteken te stuur**, wat met 'n **statuskode 400** beantwoord moet word. Probeer dan om die versoek normaal te benader en as die **antwoord 'n 400 statuskode is**, weet jy dit is kwesbaar (en jy kan selfs 'n DoS uitvoer). Jy kan meer opsies vind in: @@ -37,13 +37,13 @@ Let egter daarop dat **soms hierdie soort statuskodes nie in die cache gestoor w ### Ontdekking: Identifiseer en evalueer ongekykte insette -Jy kan [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) gebruik om **parameters en koptekste te brute-force** wat moontlik die **antwoord van die bladsy verander**. Byvoorbeeld, 'n bladsy mag die kopteks `X-Forwarded-For` gebruik om die kliënt aan te dui om die skrip van daar te laai: +Jy kan [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) gebruik om **parameters en koptekste te brute-force** wat moontlik die **antwoord van die bladsy verander**. Byvoorbeeld, 'n bladsy mag die kopteken `X-Forwarded-For` gebruik om die kliënt aan te dui om die skrip van daar te laai: ```html ``` -### Ontlok 'n skadelike reaksie van die agterkant bediener +### Ontlok 'n skadelike reaksie van die agtergrondbediener -Met die parameter/kop geïdentifiseer, kyk hoe dit **gesanitiseer** word en **waar** dit **reflekteer** of die reaksie van die kop beïnvloed. Kan jy dit op enige manier misbruik (voer 'n XSS uit of laai 'n JS-kode wat deur jou beheer word? voer 'n DoS uit?...) +Met die parameter/kop wat geïdentifiseer is, kyk hoe dit **skoon gemaak** word en **waar** dit **reflekteer** of die reaksie van die kop beïnvloed. Kan jy dit op enige manier misbruik (voer 'n XSS uit of laai 'n JS-kode wat deur jou beheer word? voer 'n DoS uit?...) ### Kry die reaksie in die cache @@ -52,18 +52,18 @@ Sodra jy die **bladsy** geïdentifiseer het wat misbruik kan word, watter **para Die kop **`X-Cache`** in die reaksie kan baie nuttig wees, aangesien dit die waarde **`miss`** kan hê wanneer die versoek nie in die cache was nie en die waarde **`hit`** wanneer dit in die cache is.\ Die kop **`Cache-Control`** is ook interessant om te weet of 'n hulpbron in die cache gestoor word en wanneer die volgende keer die hulpbron weer in die cache gestoor sal word: `Cache-Control: public, max-age=1800` -Nog 'n interessante kop is **`Vary`**. Hierdie kop word dikwels gebruik om **addisionele koppe aan te dui** wat as **deel van die cache-sleutel** behandel word, selfs al is hulle normaalweg nie gesleuteld nie. Daarom, as die gebruiker die `User-Agent` van die slagoffer wat hy teiken, ken, kan hy die cache vir die gebruikers wat daardie spesifieke `User-Agent` gebruik, vergiftig. +Nog 'n interessante kop is **`Vary`**. Hierdie kop word dikwels gebruik om **addisionele koppe** aan te dui wat as **deel van die cache-sleutel** behandel word, selfs al is hulle normaalweg nie gesleutel nie. Daarom, as die gebruiker die `User-Agent` van die teiken slagoffer ken, kan hy die cache vir die gebruikers wat daardie spesifieke `User-Agent` gebruik, vergiftig. Een meer kop wat verband hou met die cache is **`Age`**. Dit definieer die tyd in sekondes wat die objek in die proxy-cache was. Wanneer jy 'n versoek in die cache stoor, wees **versigtig met die koppe wat jy gebruik** omdat sommige daarvan **onverwagte** as **gesleuteld** gebruik kan word en die **slagoffer sal daardie selfde kop moet gebruik**. Toets altyd 'n Cache Poisoning met **verskillende blaaiers** om te kyk of dit werk. -## Exploiteringsvoorbeelde +## Exploitering Voorbeelde ### Eenvoudigste voorbeeld -'n Kop soos `X-Forwarded-For` word in die reaksie ongesanitiseer gereflekteer.\ -Jy kan 'n basiese XSS-payload stuur en die cache vergiftig sodat almal wat die bladsy toegang, XSS sal hê: +'n Kop soos `X-Forwarded-For` word in die reaksie ongesuiwer reflekteer.\ +Jy kan 'n basiese XSS-payload stuur en die cache vergiftig sodat almal wat die bladsy toegang, XSS sal ervaar: ```html GET /en?region=uk HTTP/1.1 Host: innocent-website.com @@ -77,9 +77,17 @@ _Note dat dit 'n versoek na `/en?region=uk` sal vergiftig en nie na `/en` nie_ cache-poisoning-to-dos.md {{#endref}} +### Cache vergiftiging deur CDNs + +In **[hierdie skrywe](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html)** word die volgende eenvoudige scenario verduidelik: + +- Die CDN sal enigiets onder `/share/` kas. +- Die CDN sal NIE `%2F..%2F` decodeer of normaliseer nie, daarom kan dit gebruik word as **pad traversie om toegang te verkry tot ander sensitiewe plekke wat gekas sal word** soos `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` +- Die webbediener SAL `%2F..%2F` decodeer en normaliseer, en sal antwoordgee met `/api/auth/session`, wat **die auth token bevat**. + ### Gebruik van web cache vergiftiging om koekie-hantering kwesbaarhede te benut -Koekies kan ook op die antwoord van 'n bladsy weerspieël word. As jy dit kan misbruik om 'n XSS te veroorsaak, kan jy in staat wees om XSS in verskeie kliënte te benut wat die kwaadwillige cache antwoord laai. +Koekies kan ook op die antwoord van 'n bladsy weerspieël word. As jy dit kan misbruik om 'n XSS te veroorsaak, kan jy in staat wees om XSS in verskeie kliënte te benut wat die kwaadwillige kasantwoord laai. ```html GET / HTTP/1.1 Host: vulnerable.com @@ -97,7 +105,7 @@ cache-poisoning-via-url-discrepancies.md ### Cache vergiftiging met pad traversering om API-sleutel te steel -[**Hierdie skrywe verduidelik**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) hoe dit moontlik was om 'n OpenAI API-sleutel te steel met 'n URL soos `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` omdat enigiets wat pas by `/share/*` gegee sal word, gegee sal word sonder dat Cloudflare die URL normaliseer, wat gedoen is toe die versoek die webbediener bereik het. +[**Hierdie skrywe verduidelik**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) hoe dit moontlik was om 'n OpenAI API-sleutel te steel met 'n URL soos `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` omdat enigiets wat pas by `/share/*` gegee sal word, sonder dat Cloudflare die URL normaliseer, wat gedoen is toe die versoek die webbediener bereik het. Dit word ook beter verduidelik in: @@ -107,7 +115,7 @@ cache-poisoning-via-url-discrepancies.md ### Gebruik van verskeie koptekste om web cache vergiftiging kwesbaarhede te benut -Soms sal jy **verskeie ongekeyde insette** moet **benut** om 'n cache te kan misbruik. Byvoorbeeld, jy mag 'n **Open redirect** vind as jy `X-Forwarded-Host` na 'n domein wat deur jou beheer word, stel en `X-Forwarded-Scheme` na `http`. **As** die **bediener** al die **HTTP** versoeke **na HTTPS** **stuur** en die koptekst `X-Forwarded-Scheme` as die domeinnaam vir die omleiding gebruik. Jy kan beheer waar die bladsy deur die omleiding gewys word. +Soms sal jy **verskeie ongekeyde insette** moet **benut** om 'n cache te kan misbruik. Byvoorbeeld, jy mag 'n **Open redirect** vind as jy `X-Forwarded-Host` na 'n domein wat deur jou beheer word, en `X-Forwarded-Scheme` na `http` stel. **As** die **bediener** al die **HTTP** versoeke **na HTTPS** stuur en die koptekst `X-Forwarded-Scheme` as die domeinnaam vir die omleiding gebruik. Jy kan beheer waar die bladsy deur die omleiding gewys word. ```html GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net @@ -156,19 +164,19 @@ Voorbeeld gebruik: `wcvs -u example.com` ### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577)) -ATS het die fragment binne die URL deurgegee sonder om dit te verwyder en het die cache-sleutel slegs met die gasheer, pad en navraag gegenereer (wat die fragment geïgnoreer het). So die versoek `/#/../?r=javascript:alert(1)` is na die agterkant gestuur as `/#/../?r=javascript:alert(1)` en die cache-sleutel het nie die payload daarin gehad nie, slegs gasheer, pad en navraag. +ATS het die fragment binne die URL deurgegee sonder om dit te verwyder en het die cache sleutel slegs met die gasheer, pad en navraag gegenereer (wat die fragment geïgnoreer het). So die versoek `/#/../?r=javascript:alert(1)` is na die agterkant gestuur as `/#/../?r=javascript:alert(1)` en die cache sleutel het nie die payload daarin gehad nie, slegs gasheer, pad en navraag. ### GitHub CP-DoS -Die stuur van 'n slegte waarde in die content-type kop het 'n 405 gecacheerde antwoord geaktiveer. Die cache-sleutel het die koekie bevat, so dit was slegs moontlik om ongeauthentiseerde gebruikers aan te val. +Die stuur van 'n slegte waarde in die content-type kop het 'n 405 gecacheerde antwoord geaktiveer. Die cache sleutel het die koekie bevat, so dit was slegs moontlik om ongeauthentiseerde gebruikers aan te val. ### GitLab + GCP CP-DoS -GitLab gebruik GCP-buckets om statiese inhoud te stoor. **GCP Buckets** ondersteun die **kop `x-http-method-override`**. So dit was moontlik om die kop `x-http-method-override: HEAD` te stuur en die cache te vergiftig om 'n leë antwoordliggaam te lewer. Dit kan ook die metode `PURGE` ondersteun. +GitLab gebruik GCP-buckets om statiese inhoud te stoor. **GCP Buckets** ondersteun die **kop `x-http-method-override`**. So dit was moontlik om die kop `x-http-method-override: HEAD` te stuur en die cache te vergiftig om 'n leë antwoordliggaam te laat terugkeer. Dit kan ook die metode `PURGE` ondersteun. ### Rack Middleware (Ruby on Rails) -In Ruby on Rails-toepassings word Rack middleware dikwels gebruik. Die doel van die Rack-kode is om die waarde van die **`x-forwarded-scheme`** kop in te stel as die versoek se skema. Wanneer die kop `x-forwarded-scheme: http` gestuur word, vind 'n 301 herleiding na dieselfde plek plaas, wat moontlik 'n Denial of Service (DoS) aan daardie hulpbron kan veroorsaak. Boonop kan die toepassing die `X-forwarded-host` kop erken en gebruikers na die gespesifiseerde gasheer herlei. Hierdie gedrag kan lei tot die laai van JavaScript-lêers van 'n aanvaller se bediener, wat 'n sekuriteitsrisiko inhou. +In Ruby on Rails toepassings word Rack middleware dikwels gebruik. Die doel van die Rack kode is om die waarde van die **`x-forwarded-scheme`** kop te neem en dit as die versoek se skema in te stel. Wanneer die kop `x-forwarded-scheme: http` gestuur word, vind 'n 301 omleiding na dieselfde plek plaas, wat moontlik 'n Denial of Service (DoS) aan daardie hulpbron kan veroorsaak. Boonop kan die toepassing die `X-forwarded-host` kop erken en gebruikers na die gespesifiseerde gasheer omlei. Hierdie gedrag kan lei tot die laai van JavaScript-lêers van 'n aanvaller se bediener, wat 'n sekuriteitsrisiko inhou. ### 403 and Storage Buckets @@ -176,15 +184,15 @@ Cloudflare het voorheen 403-antwoorde gecache. Pogings om S3 of Azure Storage Bl ### Injecting Keyed Parameters -Caches sluit dikwels spesifieke GET-parameters in die cache-sleutel in. Byvoorbeeld, Fastly se Varnish het die `size` parameter in versoeke gecache. As 'n URL-gecodeerde weergawe van die parameter (bv. `siz%65`) egter ook met 'n foutiewe waarde gestuur is, sou die cache-sleutel met die korrekte `size` parameter saamgestel word. Tog sou die agterkant die waarde in die URL-gecodeerde parameter verwerk. URL-kodering van die tweede `size` parameter het gelei tot sy weglating deur die cache, maar sy gebruik deur die agterkant. Om 'n waarde van 0 aan hierdie parameter toe te ken, het gelei tot 'n cachebare 400 Bad Request-fout. +Caches sluit dikwels spesifieke GET parameters in die cache sleutel in. Byvoorbeeld, Fastly se Varnish het die `size` parameter in versoeke gecache. As 'n URL-gecodeerde weergawe van die parameter (bv. `siz%65`) egter ook met 'n foute waarde gestuur is, sou die cache sleutel met die korrekte `size` parameter saamgestel word. Tog sou die agterkant die waarde in die URL-gecodeerde parameter verwerk. URL-kodering van die tweede `size` parameter het gelei tot sy weglating deur die cache, maar sy gebruik deur die agterkant. Om 'n waarde van 0 aan hierdie parameter toe te ken, het gelei tot 'n cachebare 400 Bad Request fout. ### User Agent Rules -Sommige ontwikkelaars blokkeer versoeke met gebruikers-agente wat ooreenstem met dié van hoë-verkeer gereedskap soos FFUF of Nuclei om bedienerlaai te bestuur. Ironies genoeg kan hierdie benadering kwesbaarhede soos cache vergiftiging en DoS inbring. +Sommige ontwikkelaars blokkeer versoeke met gebruikers-agente wat ooreenstem met dié van hoë-verkeer gereedskap soos FFUF of Nuclei om bedienerlaai te bestuur. Ironies, kan hierdie benadering kwesbaarhede soos cache vergiftiging en DoS inbring. ### Illegal Header Fields -Die [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) spesifiseer die aanvaarbare karakters in kopname. Koppe wat karakters buite die gespesifiseerde **tchar** reeks bevat, behoort idealiter 'n 400 Bad Request-antwoord te aktiveer. In praktyk hou bedieners nie altyd by hierdie standaard nie. 'n Opmerkelijke voorbeeld is Akamai, wat koppe met ongeldige karakters deurgee en enige 400-fout cache, solank die `cache-control` kop nie teenwoordig is nie. 'n Eksploiteerbare patroon is geïdentifiseer waar die stuur van 'n kop met 'n onwettige karakter, soos `\`, 'n cachebare 400 Bad Request-fout sou lewer. +Die [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) spesifiseer die aanvaarbare karakters in kopname. Koppe wat karakters buite die gespesifiseerde **tchar** reeks bevat, behoort idealiter 'n 400 Bad Request antwoord te aktiveer. In praktyk hou bedieners nie altyd by hierdie standaard nie. 'n Opmerkelijke voorbeeld is Akamai, wat koppe met ongeldige karakters deurgee en enige 400 fout cache, solank die `cache-control` kop nie teenwoordig is nie. 'n Eksploiteerbare patroon is geïdentifiseer waar die stuur van 'n kop met 'n onwettige karakter, soos `\`, 'n cachebare 400 Bad Request fout sou lewer. ### Finding new headers @@ -194,7 +202,7 @@ Die [RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) spesifiseer die aan Die doel van Cache Deception is om kliënte **hulpbronne te laat laai wat deur die cache met hul sensitiewe inligting gestoor gaan word**. -Eerstens, let daarop dat **uitbreidings** soos `.css`, `.js`, `.png` ens. gewoonlik **gekonfigureer** word om in die **cache** **gestoor** te word. Daarom, as jy toegang verkry tot `www.example.com/profile.php/nonexistent.js`, sal die cache waarskynlik die antwoord stoor omdat dit die `.js` **uitbreiding** sien. Maar, as die **toepassing** **herhaal** met die **sensitiewe** gebruikersinhoud wat in _www.example.com/profile.php_ gestoor is, kan jy daardie inhoud van ander gebruikers **steel**. +Eerstens, let daarop dat **uitbreidings** soos `.css`, `.js`, `.png` ens. gewoonlik **gekonfigureer** is om in die **cache** **gestoor** te word. Daarom, as jy toegang verkry tot `www.example.com/profile.php/nonexistent.js`, sal die cache waarskynlik die antwoord stoor omdat dit die `.js` **uitbreiding** sien. Maar, as die **toepassing** **herhaal** met die **sensitiewe** gebruikersinhoud wat in _www.example.com/profile.php_ gestoor is, kan jy daardie inhoud van ander gebruikers **steel**. Ander dinge om te toets: @@ -206,10 +214,10 @@ Ander dinge om te toets: - _Gebruik minder bekende uitbreidings soos_ `.avif` Nog 'n baie duidelike voorbeeld kan in hierdie skrywe gevind word: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\ -In die voorbeeld word verduidelik dat as jy 'n nie-bestaande bladsy soos _http://www.example.com/home.php/non-existent.css_ laai, die inhoud van _http://www.example.com/home.php_ (**met die gebruiker se sensitiewe inligting**) gaan teruggestuur word en die cache-bediener gaan die resultaat stoor.\ -Dan kan die **aanvaller** toegang verkry tot _http://www.example.com/home.php/non-existent.css_ in hul eie blaaiert en die **vertrouelijke inligting** van die gebruikers wat voorheen toegang verkry het, waarneem. +In die voorbeeld word verduidelik dat as jy 'n nie-bestaande bladsy soos _http://www.example.com/home.php/non-existent.css_ laai, die inhoud van _http://www.example.com/home.php_ (**met die gebruiker se sensitiewe inligting**) gaan teruggegee word en die cache bediener gaan die resultaat stoor.\ +Dan kan die **aanvaller** _http://www.example.com/home.php/non-existent.css_ in hul eie blaaiers toegang verkry en die **vertrouelijke inligting** van die gebruikers wat voorheen toegang verkry het, waarneem. -Let daarop dat die **cache proxy** moet wees **gekonfigureer** om **lêers** **te cache** gebaseer op die **uitbreiding** van die lêer (_.css_) en nie gebaseer op die content-type nie. In die voorbeeld _http://www.example.com/home.php/non-existent.css_ sal 'n `text/html` content-type hê in plaas van 'n `text/css` mime tipe (wat verwag word vir 'n _.css_ lêer). +Let daarop dat die **cache proxy** moet wees **gekonfigureer** om **cache** lêers **gebaseer** op die **uitbreiding** van die lêer (_.css_) en nie gebaseer op die content-type nie. In die voorbeeld _http://www.example.com/home.php/non-existent.css_ sal 'n `text/html` content-type hê in plaas van 'n `text/css` mime tipe (wat verwag word vir 'n _.css_ lêer). Leer hier oor hoe om [Cache Deceptions-aanvalle uit te voer wat HTTP Request Smuggling misbruik](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-deception). diff --git a/src/pentesting-web/hacking-with-cookies/cookie-tossing.md b/src/pentesting-web/hacking-with-cookies/cookie-tossing.md index 6e217b4c8..172100201 100644 --- a/src/pentesting-web/hacking-with-cookies/cookie-tossing.md +++ b/src/pentesting-web/hacking-with-cookies/cookie-tossing.md @@ -6,31 +6,32 @@ As 'n aanvaller **'n subdomein of die domein van 'n maatskappy kan beheer of 'n XSS in 'n subdomein vind**, sal hy in staat wees om hierdie aanval uit te voer. -Soos aangedui in die Koekie Hacking afdeling, wanneer 'n **koekie aan 'n domein (wat dit spesifiseer) gestel word, sal dit in die domein en subdomeine gebruik word.** +Soos aangedui in die Koekies Hacking afdeling, wanneer 'n **koekie aan 'n domein (wat dit spesifiseer) gestel word, sal dit in die domein en subdomeine gebruik word.** > [!CAUTION] > Daarom, **sal 'n aanvaller in staat wees om 'n spesifieke koekie aan die domein en subdomeine te stel deur iets soos** `document.cookie="session=1234; Path=/app/login; domain=.example.com"` Dit kan gevaarlik wees aangesien die aanvaller dalk in staat is om: -- **Die koekie van die slagoffer aan die aanvaller se rekening te fixe** sodat as die gebruiker nie oplet nie, **hy die aksies in die aanvaller se rekening sal uitvoer** en die aanvaller mag interessante inligting verkry (kyk na die geskiedenis van die gebruiker se soektogte op die platform, die slagoffer mag sy kredietkaart in die rekening stel...) +- **Die koekie van die slagoffer aan die aanvaller se rekening te fixe** sodat as die gebruiker nie opgemerk nie, **hy die aksies in die aanvaller se rekening sal uitvoer** en die aanvaller mag interessante inligting verkry (kyk na die geskiedenis van die soektogte van die gebruiker op die platform, die slagoffer mag sy kredietkaart in die rekening stel...) +- 'n Voorbeeld hiervan [kan hier gevind word](https://snyk.io/articles/hijacking-oauth-flows-via-cookie-tossing/) waar die aanvaller sy koekie in spesifieke afdelings stel wat 'n slagoffer sal gebruik om **toegang tot sy git repos te autoriseer, maar vanaf die aanvaller se rekening** aangesien hy sy koekies in die nodige eindpunte sal stel. - As die **koekie nie verander na aanmelding nie**, kan die aanvaller net **'n koekie fixe (sessie-fixasie)**, wag totdat die slagoffer aanmeld en dan **daardie koekie gebruik om as die slagoffer aan te meld**. -- Soms, selfs al verander die sessie koekies, gebruik die aanvaller die vorige een en sal hy ook die nuwe een ontvang. -- As die **koekie 'n aanvanklike waarde stel** (soos in flask waar die **koekie** die **CSRF-token** van die sessie kan **stel** en hierdie waarde sal gehandhaaf word nadat die slagoffer aanmeld), kan die **aanvaller hierdie bekende waarde stel en dit dan misbruik** (in daardie scenario kan die aanvaller dan die gebruiker dwing om 'n CSRF-versoek uit te voer aangesien hy die CSRF-token ken). -- Net soos om die waarde te stel, kan die aanvaller ook 'n nie-geverifieerde koekie wat deur die bediener gegenereer is, verkry, die CSRF-token daaruit haal en dit gebruik. +- Soms, selfs al verander die sessie koekies, gebruik die aanvaller die vorige een en hy sal ook die nuwe een ontvang. +- As die **koekie 'n aanvanklike waarde stel** (soos in flask waar die **koekie** die **CSRF token** van die sessie mag **stel** en hierdie waarde sal gehandhaaf word nadat die slagoffer aanmeld), kan die **aanvaller hierdie bekende waarde stel en dit dan misbruik** (in daardie scenario kan die aanvaller dan die gebruiker dwing om 'n CSRF versoek uit te voer aangesien hy die CSRF token ken). +- Net soos om die waarde te stel, kan die aanvaller ook 'n nie-geoutentiseerde koekie wat deur die bediener gegenereer is, verkry, die CSRF token daaruit verkry en dit gebruik. ### Koekie Bestelling -Wanneer 'n blaaier twee koekies met dieselfde naam ontvang wat **gedeeltelik die same scope** (domein, subdomeine en pad) beïnvloed, sal die **blaaier albei waardes van die koekie stuur** wanneer albei geldig is vir die versoek. +Wanneer 'n blaaier twee koekies met dieselfde naam **gedeeltelik die samelewing beïnvloed** (domein, subdomeine en pad), sal die **blaaier beide waardes van die koekie stuur** wanneer albei geldig is vir die versoek. Afhangende van wie **die mees spesifieke pad het** of watter een die **oudste een is**, sal die blaaier **eers die waarde van die koekie stel** en dan die waarde van die ander een soos in: `Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;` Meeste **webwerwe sal net die eerste waarde gebruik**. Dan, as 'n aanvaller 'n koekie wil stel, is dit beter om dit te stel voordat 'n ander een gestel word of dit met 'n meer spesifieke pad te stel. > [!WARNING] -> Boonop is die vermoë om **'n koekie in 'n meer spesifieke pad te stel** baie interessant aangesien jy die **slagoffer kan laat werk met sy koekie behalwe in die spesifieke pad waar die kwaadwillige koekie gestel sal word voordat**. +> Boonop is die vermoë om **'n koekie in 'n meer spesifieke pad te stel** baie interessant aangesien jy die **slagoffer kan laat werk met sy koekie behalwe in die spesifieke pad waar die kwaadwillige koekie gestel sal word**. -### Beskerming Omseiling +### Beskerming Bypass Mogelijke beskerming teen hierdie aanval sou wees dat die **webbediener nie versoeke met twee koekies met dieselfde naam maar twee verskillende waardes sal aanvaar nie**. @@ -40,7 +41,7 @@ Om die scenario te omseil waar die aanvaller 'n koekie stel nadat die slagoffer cookie-jar-overflow.md {{#endref}} -Nog 'n nuttige **omseiling** kan wees om die **naam van die koekie URL te kodeer** aangesien sommige beskermings vir 2 koekies met dieselfde naam in 'n versoek kyk en dan die bediener die name van die koekies sal dekodeer. +Nog 'n nuttige **bypass** kan wees om die **naam van die koekie URL te kodeer** aangesien sommige beskermings vir 2 koekies met dieselfde naam in 'n versoek kyk en dan die bediener die name van die koekies sal dekodeer. ### Koekie Bom @@ -54,8 +55,8 @@ cookie-bomb.md #### **Gebruik die voorvoegsel `__Host` in die koekie naam** -- As 'n koekie naam hierdie voorvoegsel het, **sal dit net aanvaar word** in 'n Set-Cookie riglyn as dit gemerk is as Veilig, van 'n veilige oorsprong gestuur is, nie 'n Domein attribuut insluit nie, en die Pad attribuut op / gestel is. -- **Dit voorkom dat subdomeine 'n koekie aan die apex domein kan afdwing aangesien hierdie koekies as "domein-geslote" beskou kan word.** +- As 'n koekie naam hierdie voorvoegsel het, **sal dit slegs aanvaar word** in 'n Set-Cookie riglyn as dit gemerk is as Veilig, van 'n veilige oorsprong gestuur is, nie 'n Domein attribuut insluit nie, en die Pad attribuut op / gestel is. +- **Dit voorkom dat subdomeine 'n koekie na die apex domein dwing aangesien hierdie koekies as "domein-gesluit" beskou kan word.** ### Verwysings diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md index 1a66fed68..5db03b52e 100644 --- a/src/pentesting-web/xss-cross-site-scripting/README.md +++ b/src/pentesting-web/xss-cross-site-scripting/README.md @@ -2,8 +2,8 @@ ## Metodologie -1. Kontroleer of **enige waarde wat jy beheer** (_parameters_, _pad_, _koptekste_?, _koekies_?) **reflekteer** in die HTML of **gebruik** word deur **JS** kode. -2. **Vind die konteks** waar dit reflekteer/gebruikt word. +1. Kontroleer of **enige waarde wat jy beheer** (_parameters_, _pad_, _koppe_?, _koekies_?) **reflekteer** in die HTML of **gebruik** word deur **JS** kode. +2. **Vind die konteks** waar dit reflekteer/gebruik word. 3. As dit **reflekteer** 1. Kontroleer **watter simbole jy kan gebruik** en berei die payload voor, afhangende daarvan: 1. In **rauwe HTML**: @@ -11,19 +11,19 @@ 2. Kan jy gebeurtenisse of eienskappe gebruik wat die `javascript:` protokol ondersteun? 3. Kan jy beskermings omseil? 4. Word die HTML-inhoud geïnterpreteer deur enige kliënt-kant JS-enjin (_AngularJS_, _VueJS_, _Mavo_...), jy kan 'n [**Kliëntkant Sjabloon Inspuiting**](../client-side-template-injection-csti.md) misbruik. -5. As jy nie HTML-tags kan skep wat JS-kode uitvoer nie, kan jy 'n [**Hangende Markup - HTML scriptless inspuiting**](../dangling-markup-html-scriptless-injection/index.html) misbruik? +5. As jy nie HTML-tags kan skep wat JS-kode uitvoer nie, kan jy 'n [**Hangende Merk - HTML sonder skrip inspuiting**](../dangling-markup-html-scriptless-injection/index.html) misbruik? 2. Binne 'n **HTML-tag**: 1. Kan jy na die rauwe HTML-konteks ontsnap? -2. Kan jy nuwe gebeurtenisse/eienskappe skep om JS-kode uit te voer? +2. Kan jy nuwe gebeurtenisse/eigenskappe skep om JS-kode uit te voer? 3. Ondersteun die eienskap waar jy vasgevang is JS-uitvoering? 4. Kan jy beskermings omseil? -3. Binne **JavaScript-kode**: +3. Binne **JavaScript kode**: 1. Kan jy die `` ingevoeg word, kan jy maklik die `` ingevoeg word, kan jy maklik die ` ``` -Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingstekens gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skripte te verstaan en uit te voer, word slegs daarna uitgevoer. +Let wel dat ons in hierdie voorbeeld **selfs nie die enkele aanhalingstekens gesluit het nie**. Dit is omdat **HTML-parsing eers deur die blaaier uitgevoer word**, wat behels dat bladsy-elemente geïdentifiseer word, insluitend blokke van skrip. Die parsing van JavaScript om die ingebedde skrips te verstaan en uit te voer, word slegs daarna uitgevoer. ### Binne JS-kode @@ -554,7 +554,7 @@ eval(8680439..toString(30))(983801..toString(36)) /**/ ``` -**JavaScript kommentaaren (van** [**JavaScript Kommentaaren**](#javascript-comments) **trik)** +**JavaScript kommentaar (van** [**JavaScript Kommentaar**](#javascript-comments) **trik)** ```javascript //This is a 1 line comment /* This is a multiline comment*/ @@ -746,14 +746,14 @@ Daar is **JS kode** wat **onveilige data wat deur 'n aanvaller beheer word** soo dom-xss.md {{#endref}} -Daar sal jy 'n gedetailleerde **verduideliking vind van wat DOM kwesbaarhede is, hoe dit veroorsaak word, en hoe om dit te benut**.\ +Daar sal jy 'n gedetailleerde **verduideliking vind van wat DOM kwesbaarhede is, hoe hulle veroorsaak word, en hoe om hulle te benut**.\ Moet ook nie vergeet nie dat **aan die einde van die genoemde pos** jy 'n verduideliking kan vind oor [**DOM Clobbering aanvalle**](dom-xss.md#dom-clobbering). ### Opgradering van Self-XSS ### Koekie XSS -As jy 'n XSS kan ontketen deur die payload binne 'n koekie te stuur, is dit gewoonlik 'n self-XSS. As jy egter 'n **kwesbare subdomein vir XSS** vind, kan jy hierdie XSS misbruik om 'n koekie in die hele domein in te voeg en sodoende die koekie XSS in die hoofdomein of ander subdomeine (diegene wat kwesbaar is vir koekie XSS) te ontketen. Hiervoor kan jy die koekie tossing aanval gebruik: +As jy 'n XSS kan aktiveer deur die payload binne 'n koekie te stuur, is dit gewoonlik 'n self-XSS. As jy egter 'n **kwesbare subdomein vir XSS** vind, kan jy hierdie XSS misbruik om 'n koekie in die hele domein in te voeg en sodoende die koekie XSS in die hoofdomein of ander subdomeine (diegene wat kwesbaar is vir koekie XSS) te aktiveer. Hiervoor kan jy die koekie tossing aanval gebruik: {{#ref}} ../hacking-with-cookies/cookie-tossing.md @@ -763,13 +763,13 @@ Jy kan 'n groot misbruik van hierdie tegniek vind in [**hierdie blogpos**](https ### Stuur jou sessie na die admin -Miskien kan 'n gebruiker sy profiel met die admin deel en as die self XSS binne die profiel van die gebruiker is en die admin dit toegang, sal hy die kwesbaarheid ontketen. +Miskien kan 'n gebruiker sy profiel met die admin deel en as die self XSS binne die profiel van die gebruiker is en die admin dit toegang, sal hy die kwesbaarheid aktiveer. ### Sessiemirrow As jy 'n paar self XSS vind en die webblad het 'n **sessiemirrow vir administrateurs**, byvoorbeeld, wat kliënte toelaat om hulp te vra, sal die admin sien wat jy in jou sessie sien, maar vanuit sy sessie. -Jy kan die **administrateur jou self XSS laat ontketen** en sy koekies/sessie steel. +Jy kan die **administrateur jou self XSS laat aktiveer** en sy koekies/sessie steel. ## Ander Bypasses @@ -783,7 +783,7 @@ Jy kan kyk of die **reflekteerde waardes** **unicode genormaliseer** word op die ``` ### Ruby-On-Rails omseiling -As gevolg van **RoR massa toewysing** word aanhalings in die HTML ingevoeg en dan word die aanhaling beperking omseil en addisionele velde (onfocus) kan binne die etiket bygevoeg word.\ +As gevolg van **RoR mass assignment** word aanhalings in die HTML ingevoeg en dan word die aanhalingbeperking omseil en addisionele velde (onfocus) kan binne die tag bygevoeg word.\ Formulier voorbeeld ([from this report](https://hackerone.com/reports/709336)), as jy die payload stuur: ``` contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa @@ -824,9 +824,9 @@ Dan sal die onfocus-attribuut ingevoeg word en XSS plaasvind. window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2) document['default'+'View'][`\u0061lert`](3) ``` -### XSS met header-inspuiting in 'n 302 antwoord +### XSS met header-inspuiting in 'n 302 respons -As jy vind dat jy **headers in 'n 302 Redirect antwoord kan inspuit**, kan jy probeer om die **blaaier te laat uitvoer arbitrêre JavaScript**. Dit is **nie triviaal nie** aangesien moderne blaaiers nie die HTTP-antwoordliggaam interpreteer as die HTTP-antwoordstatuskode 'n 302 is nie, so net 'n cross-site scripting payload is nutteloos. +As jy vind dat jy **headers in 'n 302 Redirect respons kan inspuit**, kan jy probeer om die **blaaier te laat uitvoer arbitrêre JavaScript**. Dit is **nie triviaal nie** aangesien moderne blaaiers nie die HTTP-responsliggaam interpreteer as die HTTP-responsstatuskode 'n 302 is nie, so net 'n cross-site scripting payload is nutteloos. In [**hierdie verslag**](https://www.gremwell.com/firefox-xss-302) en [**hierdie een**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) kan jy lees hoe jy verskeie protokolle binne die Location-header kan toets en kyk of enige van hulle die blaaier toelaat om die XSS-payload binne die liggaam te inspekteer en uit te voer.\ Verlede bekende protokolle: `mailto://`, `//x:1/`, `ws://`, `wss://`, _leë Location-header_, `resource://`. @@ -863,16 +863,16 @@ const char* const kSupportedJavascriptTypes[] = { }; ``` -### Script Tipes vir XSS +### Skriptipe vir XSS -(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) So, watter tipes kan aangedui word om 'n script te laai? +(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) So, watter tipes kan aangedui word om 'n skrip te laai? ```html ``` Die antwoord is: - **module** (verstek, niks om te verduidelik nie) -- [**webbundle**](https://web.dev/web-bundles/): Web Bundles is 'n kenmerk wat jy kan gebruik om 'n klomp data (HTML, CSS, JS…) saam te pak in 'n **`.wbn`** lêer. +- [**webbundle**](https://web.dev/web-bundles/): Web Bundles is 'n kenmerk wat jy 'n klomp data (HTML, CSS, JS…) saam in 'n **`.wbn`** lêer kan verpakk. ```html ``` -Hierdie gedrag is gebruik in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/master/solution) om 'n biblioteek te herverdeel na eval om dit te misbruik, dit kan XSS ontketen. +Hierdie gedrag is gebruik in [**hierdie skrywe**](https://github.com/zwade/yaca/tree/master/solution) om 'n biblioteek te herverdeel na eval om dit te misbruik, dit kan XSS onttrigger. -- [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Hierdie kenmerk is hoofsaaklik om 'n paar probleme wat deur voorvertoning veroorsaak word, op te los. Dit werk soos volg: +- [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Hierdie kenmerk is hoofsaaklik om 'n paar probleme wat deur vooraf-rendering veroorsaak word, op te los. Dit werk soos volg: ```html ``` -### Steel PostMessage-boodskappe +### Steel PostMessage boodskappe ```html