Goshs — достойная альтернатива стандартному Python-модулю SimpleHTTPServer (см. HTTP-сервер с шифрованием TLS на Kali Linux), которая позволяет загружать и скачивать файлы через HTTP или HTTPS с возможностью использования как самоподписанных, так и предоставленных пользователем сертификатов. Кроме того, она поддерживает базовую HTTP-аутентификацию. Этот инструмент был добавлен в последнюю версию Kali Linux. Давайте рассмотрим его внимательнее.
Еще по теме: Как открыть доступ к серверу используя Ngrok
Возможности
Основное назначение goshs — это обеспечение удобного обмена файлами через веб-интерфейс. Также программа поддерживает ряд дополнительных возможностей, которые делают ее более гибкой и удобной в использовании.
Вот список возможностей goshs:
- Загрузка и просмотр файлов, включая массовую загрузку в виде архива (.zip).
- Загрузка файлов с поддержкой перетаскивания (Drag & Drop).
- Удаление файлов, как по одному, так и массово.
- Аутентификация через базовую HTTP-аутентификацию и клиентские сертификаты.
- Безопасность передачи данных с поддержкой самоподписанных сертификатов, Let’s Encrypt, а также пользовательских сертификатов.
- Непостоянный буфер обмена с возможностью скачивания его содержимого в виде файла (.json).
- Поддержка WebDAV.
- Режимы только для чтения или только для загрузки.
- Тихий режим для отключения вывода работы веб-сервера.
- Работа с JSON через командную строку (CLI).
- Снижение привилегий пользователя перед выполнением (только для Unix), например, запуск на порту 80 от имени процесса «www-data».
- Темные и светлые темы интерфейса.
- Командная строка для выполнения команд на системе, которая хостит goshs.
- Управление доступом на основе файлов (ACL), возможность настройки прав доступа с помощью файла .goshs, настройка базовой аутентификации для папок, а также полное ограничение доступа к отдельным файлам.
- Встраивание файлов на этапе компиляции.

Установка
Goshs уже добавлен в последний релиз Kali Linux. Если вы используете другой дистрибутив, вот как его установить
Чтобы установить goshs с использованием Go, выполните команду:
1 |
go get -u github.com/patrickhener/goshs go install github.com/patrickhener/goshs@latest |
Для ручной сборки вам понадобятся пакеты uglify-js и sass. После их установки можно легко собрать программу:
1 |
git clone https://github.com/patrickhener/goshs.git cd goshs make build-all |
Использование
Параметры веб-сервера:
1 2 3 4 5 6 7 8 9 10 |
-i, --ip — ip-адрес или имя интерфейса для прослушивания (по умолчанию: 0.0.0.0) -p, --port — порт для прослушивания (по умолчанию: 8000) -d, --dir — корневая директория веб-сервера (по умолчанию: текущая рабочая директория) -w, --webdav — включить поддержку протокола webdav (по умолчанию: false) -wp, --webdav-port — порт для прослушивания webdav (по умолчанию: 8001) -ro, --read-only — режим только для чтения, загрузка невозможна (по умолчанию: false) -uo, --upload-only — режим только для загрузки, скачивание невозможно (по умолчанию: false) -si, --silent — режим без отображения списка директорий (по умолчанию: false) -c, --cli — включить командную строку (доступно только при включенной аутентификации и tls) (по умолчанию: false) -e, --embedded — показать встроенные файлы в интерфейсе (по умолчанию: false) |
Параметры TLS:
1 2 3 4 5 6 7 8 9 10 |
-s, --ssl — использовать tls -ss, --self-signed — использовать самоподписанный сертификат -sk, --server-key — путь к серверному ключу -sc, --server-cert — путь к серверному сертификату -p12, --pkcs12 — путь к серверному файлу p12 -sl, --lets-encrypt — использовать Let's Encrypt как сервис сертификации -sld, --le-domains — домены для запроса сертификата у Let's Encrypt (список через запятую) -sle, --le-email — email для Let's Encrypt -slh, --le-http — порт для использования Let's Encrypt HTTP Challenge (по умолчанию: 80) -slt, --le-tls — порт для использования Let's Encrypt TLS ALPN Challenge (по умолчанию: 443) |
Параметры аутентификации:
1 2 3 4 |
-b, --basic-auth — использовать базовую аутентификацию (пара user — имя пользователя может быть пустым) -ca, --cert-auth — использовать аутентификацию на основе сертификата — необходимо предоставить сертификат ca -H, --hash — захешировать пароль для использования в ACL на основе файлов |
Прочие опции:
1 2 3 |
-u --user — снизить привилегии до указанного пользователя (только для unix) (по умолчанию: текущий пользователь) -V --verbose — активировать подробный вывод журнала (по умолчанию: false) -v — вывести текущую версию goshs |
Примеры использования:
Запуск с настройками по умолчанию:
1 |
./goshs |
Запуск с поддержкой webdav:
1 |
./goshs -w |
Запуск на другом порту:
1 |
./goshs -p 8080 |
Запуск с самоподписанным сертификатом:
1 |
./goshs -s -ss |
Запуск с Let’s Encrypt:
1 |
./goshs -s -sl -sle your@mail.com -sld your.domain.com,your.seconddomain.com |
Запуск с пользовательским сертификатом:
1 |
./goshs -s -sk <path to key> -sc <path to cert> |
Запуск с базовой аутентификацией:
1 |
./goshs -b secret-user:$up3r$3cur3 |
Запуск с пустым именем пользователя для базовой аутентификации:
1 |
./goshs -b :$up3r$3cur3 |
Запуск с включенной командной строкой:
1 |
./goshs -b secret-user:$up3r$3cur3 -s -ss -c |
Goshs предлагает множество функций для обмена файлами и их защиты, делая его хорошей альтернативой простому HTTP-серверу на Python.
ПОЛЕЗНЫЕ ССЫЛКИ: