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 80393fdc9..badbcb755 100644
--- a/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md
+++ b/src/pentesting-web/deserialization/nodejs-proto-prototype-pollution/README.md
@@ -1,15 +1,15 @@
-# NodeJS - \_\_proto\_\_ та забруднення прототипу
+# NodeJS - \_\_proto\_\_ & prototype Pollution
 
 {{#include ../../../banners/hacktricks-training.md}}
 
 ## Об'єкти в JavaScript 
 
-Об'єкти в JavaScript по суті є колекціями пар ключ-значення, відомими як властивості. Об'єкт можна створити за допомогою `Object.create` з `null` як аргументом, щоб отримати порожній об'єкт. Цей метод дозволяє створити об'єкт без будь-яких успадкованих властивостей.
+Об'єкти в JavaScript є, по суті, колекціями пар ключ-значення, відомими як властивості. Об'єкт можна створити за допомогою `Object.create` з `null` як аргументом, щоб отримати порожній об'єкт. Цей метод дозволяє створити об'єкт без будь-яких успадкованих властивостей.
 ```javascript
 // Run this in the developers tools console
 console.log(Object.create(null)) // This will output an empty object.
 ```
-Порожній об'єкт подібний до порожнього словника, який представлений як `{}`.
+Порожній об'єкт подібний до порожнього словника, представлений як `{}`.
 
 ### Функції та класи в JavaScript
 
@@ -41,7 +41,7 @@ JavaScript дозволяє модифікацію, додавання або в
 
 У програмуванні на основі прототипів властивості/методи успадковуються об'єктами від класів. Ці класи створюються шляхом додавання властивостей/методів або до екземпляра іншого класу, або до порожнього об'єкта.
 
-Слід зазначити, що коли властивість додається до об'єкта, який слугує прототипом для інших об'єктів (таких як `myPersonObj`), успадковуючі об'єкти отримують доступ до цієї нової властивості. Однак ця властивість не відображається автоматично, якщо її не викликати явно.
+Слід зазначити, що коли властивість додається до об'єкта, що служить прототипом для інших об'єктів (таких як `myPersonObj`), успадковуючі об'єкти отримують доступ до цієї нової властивості. Однак ця властивість не відображається автоматично, якщо її не викликати явно.
 
 ## \_\_proto\_\_ забруднення 
 
@@ -56,7 +56,7 @@ this.model = model
 }
 var car1 = new Vehicle("Tesla Model S")
 ```
-Доступ до прототипу об'єкта можливий через:
+Доступ до прототипу Object можливий через:
 ```javascript
 car1.__proto__.__proto__
 Vehicle.__proto__.__proto__
@@ -78,7 +78,7 @@ console.log(car1.isVehicle) // Outputs true
 ```
 ## prototype pollution
 
-У сценарії, де використання `__proto__` обмежене, модифікація прототипу функції є альтернативою:
+У сценарії, де використання `__proto__` обмежено, модифікація прототипу функції є альтернативою:
 ```javascript
 function Vehicle(model) {
 this.model = model
@@ -121,7 +121,7 @@ console.log("Hello!")
 
 ### Від класу до Object.prototype
 
-У сценарії, де ви можете **забруднити конкретний об'єкт** і вам потрібно **достукатися до `Object.prototype`**, ви можете шукати його за допомогою чогось на кшталт наступного коду:
+У сценарії, де ви можете **забруднити конкретний об'єкт** і вам потрібно **достукатися до `Object.prototype`**, ви можете шукати його за допомогою чогось на зразок наступного коду:
 ```javascript
 // From https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
 
@@ -144,7 +144,7 @@ console.log(key1 + "." + key2)
 ```
 ### Забруднення елементів масиву
 
-Зверніть увагу, що оскільки ви можете забруднювати атрибути об'єктів у JS, якщо у вас є доступ до забруднення масиву, ви також можете **забруднювати значення масиву**, доступні **за індексами** (зверніть увагу, що ви не можете перезаписувати значення, тому вам потрібно забруднити індекси, які якимось чином використовуються, але не записуються).
+Зверніть увагу, що оскільки ви можете забруднювати атрибути об'єктів у JS, якщо у вас є доступ до забруднення масиву, ви також можете **забруднювати значення масиву**, доступні **за індексами** (зверніть увагу, що ви не можете перезаписувати значення, тому вам потрібно забруднювати індекси, які якимось чином використовуються, але не записуються).
 ```javascript
 c = [1, 2]
 a = []
@@ -154,9 +154,9 @@ b[0] //undefined
 b[1] //"yolo"
 c[1] // 2 -- not
 ```
-### Забруднення HTML елементів
+### Html elements pollution
 
-Коли генерується HTML елемент за допомогою JS, можливо **перезаписати** атрибут **`innerHTML`**, щоб він записував **произвольний HTML код.** [Idea and example from this writeup](https://blog.huli.tw/2022/04/25/en/intigriti-0422-xss-challenge-author-writeup/).
+Коли генерується HTML-елемент за допомогою JS, можливо **перезаписати** атрибут **`innerHTML`**, щоб він записував **произвольний HTML-код.** [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')
@@ -183,7 +183,7 @@ Object.prototype.isAdmin = true
 let user = {}
 user.isAdmin // true
 ```
-Механізм, що стоїть за цим, полягає в маніпулюванні властивостями так, що якщо зловмисник контролює певні вхідні дані, він може змінити прототип усіх об'єктів в додатку. Ця маніпуляція зазвичай включає встановлення властивості `__proto__`, яка в JavaScript є синонімом безпосередньої зміни прототипу об'єкта.
+Механізм, що стоїть за цим, полягає в маніпуляції властивостями так, що якщо зловмисник має контроль над певними вхідними даними, він може змінити прототип усіх об'єктів в додатку. Ця маніпуляція зазвичай включає встановлення властивості `__proto__`, яка в JavaScript є синонімом безпосередньої зміни прототипу об'єкта.
 
 Умови, за яких ця атака може бути успішно виконана, як зазначено в конкретному [дослідженні](https://github.com/HoLyVieR/prototype-pollution-nsec18/blob/master/paper/JavaScript_prototype_pollution_attack_in_NodeJS.pdf), включають:
 
@@ -195,42 +195,42 @@ user.isAdmin // true
 ```python
 customer.__proto__.toString = ()=>{alert("polluted")}
 ```
-### Proto Pollution to RCE
+### Прототипне забруднення до RCE
 
 {{#ref}}
 prototype-pollution-to-rce.md
 {{#endref}}
 
-Інші payloads:
+Інші пейлоади:
 
 - [https://github.com/KTH-LangSec/server-side-prototype-pollution](https://github.com/KTH-LangSec/server-side-prototype-pollution)
 
-## Client-side prototype pollution to XSS
+## Забруднення прототипу на стороні клієнта до XSS
 
 {{#ref}}
 client-side-prototype-pollution.md
 {{#endref}}
 
-### CVE-2019–11358: Атака на прототипне забруднення через jQuery $ .extend
+### CVE-2019–11358: Атака прототипного забруднення через jQuery $ .extend
 
 [Для отримання додаткової інформації перегляньте цю статтю](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7) У jQuery функція `$ .extend` може призвести до прототипного забруднення, якщо функцію глибокого копіювання використовувати неправильно. Ця функція зазвичай використовується для клонування об'єктів або об'єднання властивостей з об'єкта за замовчуванням. Однак, при неправильній конфігурації, властивості, призначені для нового об'єкта, можуть бути призначені прототипу замість цього. Наприклад:
 ```javascript
 $.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}'))
 console.log({}.devMode) // Outputs: true
 ```
-Ця вразливість, ідентифікована як CVE-2019–11358, ілюструє, як глибоке копіювання може ненавмисно змінити прототип, що призводить до потенційних ризиків безпеки, таких як несанкціонований доступ адміністратора, якщо такі властивості, як `isAdmin`, перевіряються без належної перевірки існування.
+Ця вразливість, ідентифікована як CVE-2019–11358, ілюструє, як глибоке копіювання може ненавмисно змінити прототип, що призводить до потенційних ризиків безпеки, таких як несанкціонований доступ адміністратора, якщо властивості, такі як `isAdmin`, перевіряються без належної перевірки існування.
 
 ### CVE-2018–3721, CVE-2019–10744: Атака на забруднення прототипу через lodash
 
-[Для отримання додаткової інформації перегляньте цю статтю](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
+[Для отримання додаткових деталей перегляньте цю статтю](https://itnext.io/prototype-pollution-attack-on-nodejs-applications-94a8582373e7)
 
 [Lodash](https://www.npmjs.com/package/lodash) зіткнувся з подібними вразливостями забруднення прототипу (CVE-2018–3721, CVE-2019–10744). Ці проблеми були вирішені в версії 4.17.11.
 
 ### Інший посібник з CVE
 
-{{#ref}}
-https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2
-{{#endref}}
+
+- [https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2](https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-and-exploitation-f97284333b2)
+
 
 ### Інструменти для виявлення забруднення прототипу
 
@@ -239,15 +239,15 @@ https://infosecwriteups.com/javascript-prototype-pollution-practice-of-finding-a
 
 ### AST Забруднення прототипу в NodeJS
 
-NodeJS широко використовує абстрактні синтаксичні дерева (AST) в JavaScript для функцій, таких як шаблонні двигуни та TypeScript. Цей розділ досліджує вразливості, пов'язані із забрудненням прототипу в шаблонних двигунах, зокрема Handlebars і Pug.
+NodeJS широко використовує Абстрактні Синтаксичні Дерева (AST) в JavaScript для функціональностей, таких як шаблонні двигуни та TypeScript. Цей розділ досліджує вразливості, пов'язані із забрудненням прототипу в шаблонних двигунах, зокрема Handlebars і Pug.
 
 #### Аналіз вразливості Handlebars
 
-Шаблонний двигун Handlebars вразливий до атаки на забруднення прототипу. Ця вразливість виникає через специфічні функції в файлі `javascript-compiler.js`. Функція `appendContent`, наприклад, конкатенує `pendingContent`, якщо він присутній, тоді як функція `pushSource` скидає `pendingContent` на `undefined` після додавання джерела.
+Шаблонний двигун Handlebars вразливий до атаки забруднення прототипу. Ця вразливість виникає з конкретних функцій у файлі `javascript-compiler.js`. Функція `appendContent`, наприклад, конкатенує `pendingContent`, якщо він присутній, тоді як функція `pushSource` скидає `pendingContent` на `undefined` після додавання джерела.
 
 **Процес експлуатації**
 
-Експлуатація використовує AST (абстрактне синтаксичне дерево), створене Handlebars, дотримуючись цих кроків:
+Експлуатація використовує AST (Абстрактне Синтаксичне Дерево), створене Handlebars, дотримуючись цих кроків:
 
 1. **Маніпуляція парсером**: Спочатку парсер, через вузол `NumberLiteral`, вимагає, щоб значення були числовими. Забруднення прототипу може обійти це, дозволяючи вставку нечислових рядків.
 2. **Обробка компілятором**: Компілятор може обробляти об'єкт AST або шаблон рядка. Якщо `input.type` дорівнює `Program`, вхідні дані обробляються як попередньо розібрані, що може бути використано в експлуатації.
@@ -315,7 +315,7 @@ requests.get(TARGET_URL)
 ```
 #### Уразливість Pug
 
-Pug, ще один движок шаблонів, стикається з подібним ризиком забруднення прототипу. Детальна інформація доступна в обговоренні про [AST Injection in Pug](https://blog.p6.is/AST-Injection/#Pug).
+Pug, ще один движок шаблонів, стикається з подібним ризиком забруднення прототипу. Детальна інформація доступна в обговоренні на тему [AST Injection in Pug](https://blog.p6.is/AST-Injection/#Pug).
 
 Приклад забруднення прототипу в Pug:
 ```python
@@ -343,10 +343,10 @@ requests.get(TARGET_URL)
 3. **Безпечні функції злиття**: Слід уникати небезпечного використання рекурсивних функцій злиття.
 4. **Об'єкти без прототипу**: Об'єкти без властивостей прототипу можна створити за допомогою `Object.create(null)`.
 5. **Використання Map**: Замість `Object` слід використовувати `Map` для зберігання пар ключ-значення.
-6. **Оновлення бібліотек**: Безпекові патчі можна впроваджувати шляхом регулярного оновлення бібліотек.
-7. **Інструменти лінтингу та статичного аналізу**: Використовуйте інструменти, такі як ESLint з відповідними плагінами, для виявлення та запобігання вразливостям, пов'язаним із забрудненням прототипу.
-8. **Огляди коду**: Реалізуйте ретельні огляди коду для виявлення та усунення потенційних ризиків, пов'язаних із забрудненням прототипу.
-9. **Навчання з безпеки**: Освіжайте розробників про ризики забруднення прототипу та найкращі практики написання безпечного коду.
+6. **Оновлення бібліотек**: Безпекові патчі можна впроваджувати, регулярно оновлюючи бібліотеки.
+7. **Інструменти для лінтингу та статичного аналізу**: Використовуйте інструменти, такі як ESLint з відповідними плагінами, для виявлення та запобігання вразливостям, пов'язаним із забрудненням прототипу.
+8. **Огляди коду**: Реалізуйте ретельні огляди коду, щоб виявити та усунути потенційні ризики, пов'язані із забрудненням прототипу.
+9. **Навчання з безпеки**: Освітіть розробників про ризики забруднення прототипу та найкращі практики написання безпечного коду.
 10. **Обережне використання бібліотек**: Будьте обережні при використанні сторонніх бібліотек. Оцініть їх безпекову позицію та перегляньте їх код, особливо ті, що маніпулюють об'єктами.
 11. **Захист під час виконання**: Використовуйте механізми захисту під час виконання, такі як безпеково орієнтовані npm-пакети, які можуть виявляти та запобігати атакам забруднення прототипу.