160.00K
Категория: ИнтернетИнтернет

FTP & SSRF

1.

FTP & SSRF
Some information about File transmit protocol
and Server side request forgery
@rive_n, 09.10.2021

2.

FTP
File Transfer Protocol
@rive_n, 09.10.2021

3.

File transmit protocol
Что это и зачем нужно.
• FTP - File transmit protocol, протокол работающий на основе tcp/ip.
• У FTP обычно 2 порта - 20 и 21. Отличие заключается в режиме работы FTP. Есть 2 режима:
активны и пассивный
• Активный режим: клиент отсылает серверу «Привет» и указывает на какой порт серверу
следует подключиться для передачи данных. Сервер подключается к порту клиента,
используя со своей стороны 20 порт.
• Пассивный режим: клиент отсылает серверу «Привет», на что сервер отвечает ему номером
порта.
• Получить доступ к FTP серверу можно с помощью одноименной утилиты ftp.
• Сниффинг трафика при общении с FTP сервером:
https://www.omnisecu.com/tcpip/how-ftp-works.php

4.

Активный режим работы
1. Клиент с временного порта X посылает SYN запрос на 21 порт сервера
2. Сервер с 21 порта отвечает SYN ACK на временный порт X клиента
3. Клиент подтверждает создание соединения отправкой ACK флага.
4. Клиент отправляет команду PORT, для перехода в активный режим, указывает IP адрес клиента для передачи
(чаще всего свой) и клиентский порт Y, с которым собственно и будет создано соединение для передачи данных.
5. Режим подтверждается со стороны сервера.
6. Передача команд для работы с FTP, таких как список каталогов, инициации передачи или приема информации,
удаления файла и остальные.
7. Для создания соединения для передачи данных, сервер с 20 порта отправляет SYN запрос клиенту на временный
порт Y, который был указан, вместе с командой PORT.
8. Клиент отвечает SYN ACK.
9. Сервер подтверждает создания соединения — передачей флага ACK.
10. Происходит передача данных.
11. Если надо закрыть соединение, то после 10 шага, клиент отправляет флаг FIN, сервер его подтверждает и
соединение закрывается.

5.

Пассивный режим
1. Клиент с временного порта X посылает SYN запрос на 21 порт сервера
2. Сервер с 21 порта отвечает SYN ACK на временный порт 1024 клиента
3. Клиент подтверждает создание соединения отправкой ACK флага.
4. Клиент отправляет команду PASV, для перехода в пассивный режим.
5. Сервер подтверждает переход в пассивный режим, отправляет PASV ACK, свой IP адрес и временный порт Z,
для передачи данных.
6. Клиент с порта Y отправляет SYN запрос на создание соединения на серверный порт Z, который был указан,
вместе с подтверждением PASV ACK.
7. Сервер подтверждает создание соединения SYN ACK.
8. Клиент создает соединение и отправляет флаг ACK.
9. Передача команд для работы с FTP, таких как список каталогов, инициация передачи или приема данных и
остальные.
10. Происходит передача данных.

6.

Логинимся на FTP серваке и читаем файлики
2 способа залогиниться на сервере и считать содержимое файлов.
• Используя одноименную утилиту (обычно установлена на многих дистрибутивах):
# ftp <username>:<password>@<host>
• Используя браузер (не делайте так, прошу…):
URL - Universal Resource locator - состоит из 3 частей:
<protocol>://<hostname>/<path>
FTP - протокол, соответственно:
ftp://<hostname>/<path> или file://<hostname>/<path> будет работать.
• Пример:
ftp://riven:[email protected]:21//etc/passwd
• ftp://user:[email protected]:21//etc/passwd

7.

Вопросы?

8.

SSRF
Server Sire Request Forgery
@rive_n, 09.10.2021

9.

10.

SSRF - Что это и как работает?
Server Side Request Forgery
• SSRF - уязвимость, позволяющая атакующему исполнять запросы от
имени сервера на произвольный домен.
Пример нормального запроса:
User
Web-application
backend
Another
Web-application
Web response

11.

• Принцип работы:
1. Атакующий делает запрос на удаленный сервер
2. На удаленном сервере присутствует функциональность, позволяющая
атакующему управлять запросом (обычно такое происходит тогда, когда
пользователь волен указывать откуда, к примеру, скачивать тот или иной
файл)
3. Атакующий указывает любой другой ресурс, на который будет
перенаправлен запрос (К примеру - burl collaborator)
Hacker
Web-application
backend
Hackers web app
Web response

12.

В чем профит такой атаки?
Выглядит бесполезно…
• Атакующий может заставить сервер сделать запрос на ресурс, к которому
нету доступа из внешней сети (filtered port).
• Атакующий может произвести DoS/DDoS атаки, используя SSRF (т.к в
данном случае запросы будут идти непосредственно с уязвимого хоста, а
не с хоста атакующего)
• Атакующий может (в очень редких случаях) удаленно выполнить код в
следствии того, что в заголовке Host/XFF указан localhost (127.0.0.1),
получив доступ к админке. (Зачастую доступ к админке работает
непосредственно с локалхоста)

13.

Защита (?) от SSRF
• Обычно используют blaclists / whitelists
blacklists - листы, в которых указаны запрещенные адреса (к примеру - 127.0.0.1)
whitelists - листы, в которых указаны разрешенные адреса
• Проверка с использованием regex (подобная штука есть в oauth госуслуг)
• Firewall / dns resolve names (dns pinning bypass)
• Не давать пользователям влиять на запросы
• Не использовать уязвимые либы (url parsers abuse)
(к примеру в одной из библиотек python’a есть возможность скачивать удаленные файлы и
сохранять их с tmp именем)
Порешать задания на ssrf можно тут - https://portswigger.net/web-security/ssrf
Почитать про защиту подробнее можно тут https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Shee
t.html

14.

Панацея ли Блэк и Вайт листы?
• Это мы сегодня и узнаем :)

15.

Вопросы?
English     Русский Правила