Иногда бывает так, что нужно быстро развернуть FTP-сервер для того чтобы туда что-нибудь быстро залить. Например, кейс — во время пентеста, у меня есть скрипт для слива базы Active Directory, данный скрипт исполняется на уязвимой машине при логоне Domain Admin учётки 😏 (да-да и такое бывает, постоянно). При логоне, отрабатывает скрипт, который стандартными средствами Windows с помощью FTP-клиента передаёт слитую базу на FTP-сервер взломщика.
Можно конечно поднять что-нибудь из серии vsFTPd, proFTPd, pure-FTPd, etc, но во-первых — это установка лишнего пакета в систему, во-вторых — это конфигурирование FTP-сервера, а конфиги некоторых бывают довольно упоротыми, в итоге ты можешь потратить то самое драгоценное время на ковыряние в конфигах FTP-сервера, что при пентесте является непозволительной роскошью.

Оказывается, есть очень интересный модуль на питоне — pyftpdlib, у которого очень богатые возможности.
Если мы хотим по-быстрому развернуть FTP-сервер с помощью pyftpdlib, то выполняем следующее:

# pip install pyftpdlib

Если нет pip, то:

# apt install python2.7-pyftpdlib

*админы могут автоматически отслеживать несанкционированную установку пакетов в системе

# python -m pyftpdlib -p 21 —directory=/srv/ftp/incoming -w -D

-p — TCP-порт к которому привязываем FTP-сервер (можно и 8080 под обычным юзером)
-w — разрешаем записывать в директорию, которую указали (не забываем проверить права на запись)
-D — режим дебага, чтобы наблюдать за процессом и проще отловить какие-либо ошибки

Различные примеры использования можно посмотреть тут

screenshot2bfrom2b2017-04-192b11-58-59

А может случиться так, что нет ни рута, не пипа, ничего вообще нет 😕, а только юзер с очень ограниченными правами, но которому доступен интерпретатор питона, и хочется запустить FTP-сервер, то можно пойти более хардкорным пентестерским путём:
— упаковать в zip-архив модуль pyftpdlib (в системе находится в /usr/local/lib/python2.7/dist-packages/pyftpdlib) и доставить его на сервер (например в /tmp)
— распаковать в /tmp
— выполнить:
$ python -c ‘import sys; sys.path.insert(0, «/tmp/pyftplib»)’
$ python -m pyftpdlib -p 8080 —directory=/srv/ftp/incoming -w -D
Вот таким нехитрым способом, можно поднять FTP-сервер из под любого юзера у кого есть доступ к питон-интерпретатору, без установки модулей или пакетов под привилигированным пользователем.
Ещё из плюшек можно отметить производительность данного FTP-сервера в сравнении с другими серверами написанными на Си, по некоторым показателям данный сервер даже уделывает серевера написанные на Си, но немного проигрывает в скорости (0.2%). Бенчмарки можно глянуть здесь.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.