
Саморазвертываемый сервис хостинга файлов для red teamers, позволяющий легко загружать и обмениваться полезными нагрузками через HTTP и WebDAV.
pwndrop — это самостоятельно развёртываемый сервис хостинга файлов для отправки полезных нагрузок для red team или безопасного обмена вашими личными файлами через HTTP и WebDAV.
Если вам когда-либо приходилось быстро настраивать nginx/apache веб-сервер для хостинга файлов, и вы никогда не были довольны ограничениями python -m SimpleHTTPServer, то pwndrop определённо для вас!
С помощью pwndrop вы можете:
Его главная цель — сделать обмен файлами максимально простым и интуитивным, одновременно реализуя дополнительные функции для помощи в оценках red team.
Фронтенд pwndrop разработан на чистом Vue.js + Bootstrap без зависимостей npm или webpack. Бэкенд обслуживает REST API и управляет локальной базой данных, написанной на GO.
Если вы хотите узнать, как использовать pwndrop, или хотите узнать, какие новые функции были реализованы в последних версиях, обязательно загляните в сообщения в моём блоге:
Посмотрите фантастическое видео, сделанное Luke Turvey (@TurvSec), которое полностью объясняет, как начать использовать pwndrop.
Если у вас ещё нет сервера для развёртывания, я настоятельно рекомендую Digital Ocean. Самый дешёвый сервер Debian 9 за $5/мес с 25 ГБ дискового пространства отлично подойдёт. Вы можете использовать мою реферальную ссылку, чтобы получить дополнительные $100 на свои серверы на 60 дней бесплатно.
Зарегистрируйте новый домен и укажите его DNS A-записи на IP вашего VPS. Вы также можете зарегистрировать домен и указать его серверы имён ns1 и ns2 на IP экземпляра pwndrop — он будет автоматически отвечать валидными DNS A-ответами.
Если вы хотите настроить pwndrop без домена, смотрите ниже, как настроить локальный экземпляр, который не будет автоматически генерировать HTTPS-сертификаты.
Убедитесь, что на сервере не запущены DNS или HTTP(S) серверы, прежде чем пытаться установить pwndrop.
Я не рекомендую запускать однострочники, не скачав и не проверив код скрипта, но если вы очень спешите, вот он:
curl https://raw.githubusercontent.com/kgretzky/pwndrop/master/install_linux.sh | sudo bash
Это скачает последний amd64 бинарник релиза и полностью установит демона, работающего в фоне.
Сначала нужно скачать пакет релиза, который вы хотите, с: https://github.com/kgretzky/pwndrop/releases
Затем сделайте следующее (это выполняет те же действия, что и однострочник):
tar zxvf pwndrop-linux-amd64.tar.gz
./pwndrop stop
./pwndrop install
./pwndrop start
./pwndrop status
Прежде всего убедитесь, что у вас установлен GO версии не ниже 1.13: https://golang.org/doc/install
Затем сделайте следующее:
sudo apt-get -y install git make
git clone https://github.com/kgretzky/pwndrop
cd pwndrop
make
make install
Убедитесь, что pwndrop запущен.
https://yourdomain.com/pwndrop (это значение по умолчанию; обязательно используйте секретный путь, который вы предварительно настроили).https://yourdomain.com/ (после авторизации браузера вы увидите страницу входа в панель администратора)./pwndrop.Готово!
Вам не обязательно устанавливать pwndrop как демона; вы можете запустить его прямо из консоли.
usage: pwndrop [start|stop|install|remove|status] [-config <config_path>] [-debug] [-no-autocert] [-no-dns] [-h]
daemon management:
start : start the daemon
stop : stop the daemon
install : install the daemon using the available system manager (systemd, systemv and upstart supported)
remove : uninstall the daemon
status : check status of the installed daemon
parameters:
-config : specify a custom path to a config file (def. 'pwndrop.ini' in same directory as the executable)
-debug : enable debug output
-no-autocert : disable automatic TLS certificate retrieval from LetsEncrypt; useful when you want to connect over IP or/and in a local network
-no-dns : do not run a DNS server on port 53 UDP; use this if you don't want to use pwndrop as a nameserver
-h : usage help
При первом запуске pwndrop по умолчанию создаёт файл конфигурации pwndrop.ini в той же директории, что и исполняемый файл. Вы можете изменить его позже или предоставить свой собственный, например, чтобы предварительно настроить pwndrop перед установкой для ещё более автоматизированного развёртывания инструмента.
Вот пример файла конфигурации со всеми доступными переменными конфигурации и комментариями:
[pwndrop]
listen_ip = "190.33.86.22" # внешний IP вашего экземпляра pwndrop (должен быть указан, если вы хотите использовать функцию сервера имён)
http_port = 80 # порт для прослушивания HTTP и WebDAV
https_port = 443 # порт для прослушивания HTTPS
data_dir = "./data" # путь к каталогу, где будет размещаться хранилище данных (относительные пути — от директории исполняемого файла)
admin_dir = "./admin" # путь к каталогу, где находятся файлы панели администратора (относительные пути — от директории исполняемого файла)
[setup] # необязательно: укажите, если хотите предварительно настроить pwndrop (раздел будет удалён из конфигурационного файла при первом запуске)
username = "admin" # имя пользователя учётной записи администратора
password = "secretpassword" # пароль учётной записи администратора
redirect_url = "https://www.somedomain.com" # URL, на который будут перенаправляться посетители, если они укажут путь, не указывающий ни на один общий файл (оставьте пустым, если хотите возвращать 404)
secret_path = "/pwndrop" # секретный URL-путь, при посещении которого ваш браузер получит доступ к странице входа в панель администратора (обязательно измените значение по умолчанию)
Если вы хотите предварительно настроить ваш экземпляр pwndrop перед развёртыванием с помощью любого из установочных скриптов, поместите ваш конфигурационный файл в /usr/local/pwndrop/pwndrop.ini, и он будет проанализирован в момент первого запуска демона pwndrop.
Огромное спасибо @jaredhaight за вдохновение на изучение Vue с его фреймворком Faction C2!
Также большое спасибо всем людям, которые дали обратную связь до релиза и поддерживали меня своими мнениями об инструменте!
pwndrop создан Kuba Gretzky (@mrgretzky) и выпущен под лицензией GPL3.