From 3e6131cf0fc494f3c61582a8067aa34902663558 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 19 Aug 2025 22:04:44 +0000 Subject: [PATCH] Translated ['src/pentesting-web/deserialization/nodejs-proto-prototype-p --- .../README.md | 64 +++++++++---------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md b/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md index 6f0b8886d..08c861e66 100644 --- a/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md +++ b/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md @@ -33,15 +33,15 @@ employee1.__proto__ ``` ### Prototypes in JavaScript -JavaScript stel die wysiging, toevoeging of verwydering van prototipe-attribuutte in staat tydens uitvoering. Hierdie buigsaamheid stel die dinamiese uitbreiding van klasfunksies in staat. +JavaScript laat die wijziging, toevoeging of verwydering van prototipe-attribuutte tydens uitvoering toe. Hierdie buigsaamheid stel die dinamiese uitbreiding van klasfunksies in staat. -Funksies soos `toString` en `valueOf` kan verander word om hul gedrag te verander, wat die aanpasbare aard van JavaScript se prototipe-stelsel demonstreer. +Funksies soos `toString` en `valueOf` kan verander word om hul gedrag te verander, wat die aanpasbare aard van JavaScript se prototipesisteem demonstreer. ## Inheritance In prototipe-gebaseerde programmering word eienskappe/metodes geërf deur voorwerpe van klasse. Hierdie klasse word geskep deur eienskappe/metodes by 'n instansie van 'n ander klas of by 'n leë voorwerp te voeg. -Daar moet op gelet word dat wanneer 'n eienskap by 'n voorwerp gevoeg word wat as die prototipe vir ander voorwerpe dien (soos `myPersonObj`), die geërfde voorwerpe toegang tot hierdie nuwe eienskap verkry. Hierdie eienskap word egter nie outomaties vertoon nie, tensy dit eksplisiet aangeroep word. +Dit moet opgemerk word dat wanneer 'n eienskap by 'n voorwerp gevoeg word wat as die prototipe vir ander voorwerpe dien (soos `myPersonObj`), die erflike voorwerpe toegang tot hierdie nuwe eienskap verkry. Hierdie eienskap word egter nie outomaties vertoon nie, tensy dit eksplisiet aangeroep word. ## \_\_proto\_\_ pollution @@ -76,7 +76,7 @@ car1.announce() // Outputs "Beep beep!" car1.__proto__.__proto__.isVehicle = true console.log(car1.isVehicle) // Outputs true ``` -## prototype besoedeling +## prototype pollution Vir 'n scenario waar `__proto__` gebruik beperk is, is die aanpassing van 'n funksie se prototipe 'n alternatief: ```javascript @@ -100,7 +100,7 @@ car1.constructor.prototype.isElectric = true ``` Dit raak slegs voorwerpe wat van die `Vehicle` konstruktors gemaak is, en gee hulle die `beep`, `hasWheels`, `honk`, en `isElectric` eienskappe. -Twee metodes om JavaScript voorwerpe globaal te beïnvloed deur prototype besoedeling sluit in: +Twee metodes om JavaScript voorwerpe globaal te beïnvloed deur middel van prototipe besoedeling sluit in: 1. Besoedeling van die `Object.prototype` direk: ```javascript @@ -117,11 +117,11 @@ console.log("Hello!") ``` Na hierdie operasies kan elke JavaScript-objek `goodbye` en `greet` metodes uitvoer. -## Besoedeling van ander objek +## Besmetting van ander objek ### Van 'n klas na Object.prototype -In 'n scenario waar jy 'n **spesifieke objek kan besoedel** en jy moet **by `Object.prototype` kom**, kan jy daarna soek met iets soos die volgende kode: +In 'n scenario waar jy **'n spesifieke objek kan besmet** en jy moet **by `Object.prototype` kom**, kan jy daarna soek met iets soos die volgende kode: ```javascript // From https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/ @@ -144,7 +144,7 @@ console.log(key1 + "." + key2) ``` ### Array elements pollution -Let daarop dat soos jy die eienskappe van voorwerpe in JS kan besoedel, as jy toegang het om 'n array te besoedel, kan jy ook **waardes van die array** besoedel wat **deur indekse** toeganklik is (let daarop dat jy nie waardes kan oorskryf nie, so jy moet indekse besoedel wat op een of ander manier gebruik word maar nie geskryf word nie). +Let wel dat soos jy eienskappe van voorwerpe in JS kan besoedel, as jy toegang het om 'n array te besoedel, kan jy ook **waardes van die array** besoedel wat **deur indekse** toeganklik is (let wel dat jy nie waardes kan oorskryf nie, so jy moet indekse besoedel wat op een of ander manier gebruik word maar nie geskryf word nie). ```javascript c = [1, 2] a = [] @@ -154,9 +154,9 @@ b[0] //undefined b[1] //"yolo" c[1] // 2 -- not ``` -### Html element besoedeling +### Html elements pollution -Wanneer 'n HTML-element via JS gegenereer word, is dit moontlik om die **`innerHTML`** attribuut te **oorskryf** om **arbitraire HTML-kode** te skryf. [Idea en voorbeeld van hierdie skrywe](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/). +Wanneer 'n HTML-element via JS gegenereer word, is dit moontlik om die **`innerHTML`** attribuut te **oorskryf** om **arbitraire HTML-kode** te laat skryf. [Idea and example from this writeup](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/). ```javascript // Create element devSettings["root"] = document.createElement('main') @@ -171,9 +171,9 @@ settings[root][ownerDocument][body][innerHTML]="