- linux-notes.org
- Установка ngrok в Unix/Linux
- One thought on “ Делаем локальный сервер доступным в интернете с ngrok в Unix/Linux ”
- Добавить комментарий Отменить ответ
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Как без белого IP локальный веб-сервер сделать доступным из Интернета
- Как установить ngrok
- Установка ngrok в Kali Linux и в любой другой дистрибутив Linux
- Установка в ngrok BlackArch
- Установка ngrok в Windows
- Как получить токен аутентификации ngrok (authtoken)
- Как узнать чужой IP
- Как отправить файл без файлообменников и почты
- Прокси с ngrok
- Команды и опции ngrok
- Заключение
- Ngrok kali linux ��� ������������
- About
linux-notes.org
Например у вас имеется на виртуальной машине веб сервер и вы с ним работаете. Но заказчик требует показать уже наработки сайта который вы ему делаете. У него еще нет хостинга, а код имеется только на локалке. Возможно варианты:
- Снять все на видео
- Использовать бесплатный хостинг
Но нет! Не стоит этого делать! С этим справиться ngrok — простая программа которая создает туннель к localhost.
Установка ngrok в Unix/Linux
ИЛИ (Linux 32-bit):
Идем далее, мы ее скачали, теперь нужно распаковать:
Я скопирую данную утилиту в:
Чтобы вывести помощь, используйте:
и так, создаем туннель:
Где 80 — это порт с которым работает nginx/apache на виртуальной машине. При запуске команды выше, получите что-то типа:
Где http://7cb0094e.ngrok.io — это адрес в интернете. Можно в hosts файл прописать домен, например, captain.local, после чего запускаем:
Где, captain.local — локальное доменное имя. Статья «Делаем локальный сервер доступным в интернете с ngrok в Unix/Linux» завершена.
One thought on “ Делаем локальный сервер доступным в интернете с ngrok в Unix/Linux ”
как-то не хочется проприетарную программу под рутом запускать…
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как без белого IP локальный веб-сервер сделать доступным из Интернета
Выполнение атак социальной инженерии требует наличие веб-сервера, на котором запущен сайт или размещена страница, которая пытается перехитрить пользователя и сделать так, чтобы он ввёл определённые данные или совершил какое-либо действие.
Это фишинговый веб-сервер должен быть доступен из Интернета, а для этого требуется публичный IP. Многие клиенты Интернет-провайдеров выходят в Интернет через NAT, а это означает, что они никак не могут сделать свой веб-сервер публичным.
- арендовать хостинг
- арендовать внешний IP у своего Интернет-провайдера
В данной статье я покажу, как с помощью программы ngrok можно обойтись без внешнего IP адреса.
Программа ngrok работает следующим образом:
- её нужно запустить на своём компьютере где установлен веб-сервер и указать порт, на который она должна перенаправлять трафик (например, 80й порт)
- ngrok связывается с облачным сервисом и генерирует вам субдомен третьего уровня
- при поступлении подключения к этому субдомену, программа перенаправляет трафик на ваш локальный компьютер, например, на ваш локальный веб-сервр
Чтобы было понятно, посмотрим как работает ngrok на конкретном примере:
У меня на компьютере с Windows установлен веб-сервер. Кстати, программа ngrok работает на Windows, Linux, Linux ARM и некоторые других операционных системах. Мой компьютер находится как минимум на одним NAT’ом — в моём роутере не настроена проброска портов на компьютер. Но, скорее всего, мой Интернет-провайдер также использует NAT, чтобы сразу большое количество пользователей могли выходить в Интернет через 1 IP адрес. В таких условиях я никак не смогу сделать свой веб-сервер публичным, даже если настрою форвардинг портов от роутера.
Так вот, в такой безвыходной ситуации и поможет ngrok. Чтобы мой веб-сервер стал доступным из Интернета, мне достаточно запустить такую команду:
На экране следующая информация:
Интересующие меня данные заключается в строках:
Она означает, что подключение к http://4b348924.ngrok.io и https://4b348924.ngrok.io (протоколы HTTP и HTTPS соответственно) будет перенаправлено на http://localhost:80. Проверим это: с другого компьютера (Linux), я открою ссылку https://4b348924.ngrok.io. Выведен список файлов в корневой директории веб сервера Windows:
Отрою файл i.php (у меня он имеет адрес https://4b348924.ngrok.io/i.php):
Как видим, файл выполнился на локальном сервере и показаны результаты его работы.
Вернёмся на компьютер Windows где запущены ngrok и веб-сервер:
После «HTTP Requests» показаны строки, которые запрашивал удалённый пользователь. Более подробную информацию можно просмотреть по ссылке http://127.0.0.1:4040 на которой запущен веб-интерфейс ngrok. Там можно анализировать отдельные запросы:
Или просматривать статус ngrok в целом:
Как установить ngrok
Установка ngrok в Kali Linux и в любой другой дистрибутив Linux
Установка в ngrok BlackArch
Установка ngrok в Windows
Перейдите на страницу официального сайта и скачайте ngrok для Windows: https://ngrok.com/download
Распакуйте скаченный архив, отройте командную строку и перейдите в папку с исполнимым файлом с помощью cd, например, у меня программа помещена в папку C:\Users\MiAl\Downloads\:
Для проверки выведите справку командой:
Как получить токен аутентификации ngrok (authtoken)
Программа ngrok является бесплатной, но предусматривает платные тарифы. Бесплатных состояний может быть два:
- без регистрации
- с регистрации
Без регистрации вы можете использовать ngrok сразу после скачивания исполнимого файла. Без регистрации вы сможете выполнить только простейшие действия, например, как приведённое выше — создать тоннель от домена третьего уровня до своего локального сервера. На самом деле, для многих этого достаточно.
С регистрацией открываются дополнительные возможности, например, можно перенаправлять трафик на 443 порт (используется протоколом HTTPS) локального или удалённого сервера.
После регистрации на странице https://dashboard.ngrok.com/auth вы найдёте свой токен аутентификации. Этот токен можно указывать при каждом запуске ngrok, но намного удобнее сохранить его в системе командой вида:
После этого токен ngrok будет сохранён в файле, и ngrok будет автоматически считывать его оттуда при каждом запуске.
Как узнать чужой IP
В качестве демонстрации применения ngrok рассмотрим пару примеров. Предположим, мне нужно узнать IP адрес пользователя, с которым я общаюсь, например, по чату или через email. Для этого мне достаточно, чтобы он зашёл на любую страницу моего веб-сервера.
На веб-сервере я делаю следующую подготовку:
1. Создаю папку hacked-accounts (допустим, предлог — ссылка в Интернете на базу данных утёкших учётных данных).
2. Создаю файл index.php с примерно следующим содержимым:
Суть работы скрипта очень проста — берутся все значения массива $_SERVER и сохраняются в файл со сгенерированным именем. Массив $_SERVER содержи HTTP заголовки и IP клиента, сделавшего запрос.
3. Дальше я просто отсылаю ссылку https://4b348924.ngrok.io/hacked-accounts/, можно добавить разные финтифлюшки в виде значений параметров https://4b348924.ngrok.io/hacked-accounts/?users=admin&sort=newest (эти «шашечки» ни на что не влияют).
При открытии этой ссылки пользователь увидит что-то вроде такого:
Но при каждой попытке открыть ссылку на веб-сервере будут создаваться новые файлы с информацией:
Пример содержимого файла:
Особый интерес представляют следующие строки:
- HTTP_USER_AGENT (User Agent, программа, с помощью который была открыта ссылка)
- HTTP_REFERER (с какой страницы пришёл пользователь)
- HTTP_ACCEPT_LANGUAGE (языки, которые предпочитает User Agent пользователя)
- HTTP_X_FORWARDED_FOR (самое важное — IP адрес здесь!)
- QUERY_STRING (строка запроса — можно указать разные значения для разных людей, чтобы различать пришедшие запросы)
Что касается REMOTE_ADDR, то значением там всегда будет примерно «::1». В REMOTE_ADDR содержится IP адрес программы, сделавшей запрос, в данном случае запрос сделала программа ngrok, которая запущена на том же самом компьютере поэтому её IP адресом является loopback.
Как отправить файл без файлообменников и почты
Предположим, нужно переслать другому пользователю файл, но при этом не использовать файлообменники, почту или аналогичные сервисы. Это можно сделать с помощью ngrok.
Теперь выдуманная ситуация следующая — мне действительно нужно быстро и без файлообменников передать пользователю другой файл. Для этого на локальном компьютере даже не нужен веб-сервер — функции простого веб-сервера будет выполнять сам ngrok.
Для выполнения задуманного, мне нужно предоставить доступ к папке hacked-accounts-real, расположенной по пути C:\Server\data\htdocs\hacked-accounts-real\, тогда достаточно запустить следующую команду:
Обратите внимание, что перед папкой стоит строка «file:///».
При открытии вновь сгенерированной ссылки будет получен доступ ко всем файлам в указанной папке:
Прокси с ngrok
ngrok может создавать туннели не только до локальных сетевых служб, но и до любых других адресов в Интернете. При этом получается прокси.
Если нужно создать туннель до веб-сайта, то если на одном IP адресе работают много сайтов, то нужно заменять присылаемый заголовок на правильный, это можно сделать опцией -host-header. В следующем примере будет создана ссылка, при переходе на которую будет открываться сайт HackWare.ru:
Команды и опции ngrok
У ngrok много других примеров использования, в том числе на бесплатном пакете. Дополнительную информацию о командах и опциях вы найдёте на странице https://kali.tools/?p=5489.
Заключение
Итак, ngrok может использоваться как замена хостингу для разовых задач. Например, если на удалённом сервере обнаружена уязвимость Удалённое выполнение кода и есть возможность запустить команду для скачивания шелла, то этот шелл нужно где-то разместить на доступном публично сервере. В качестве очень быстрого решения можно использовать ngrok + ОС, настроенная для работы через Tor.
В следующей статье будет показан более интересный пример использования ngrok в социальной инженерии.
Источник
Ngrok kali linux ��� ������������
Install the package with npm:
Then use ngrok.connect() to start ngrok and open a tunnel.
This module uses node>=10.19.0 with async/await. For a callback-based version use 2.3.0.
For global install on Linux, you might need to run sudo npm install —unsafe-perm -g ngrok due to the nature of npm postinstall script.
You can create basic http-https-tcp tunnel without an authtoken. For custom subdomains and more you should obtain an authtoken by signing up at ngrok.com. Once you set the authtoken, it is stored in ngrok config and used for all tunnels. You can set the authtoken directly:
Or pass the authtoken to the connect method like so:
There are a number of ways to create a tunnel with ngrok using the connect method.
By default, connect will open an HTTP tunnel to port 80
You can pass the port number to connect to specify that port:
Or you can pass an object of options, for example:
There are many options that you can pass to connect , here are some examples:
See the ngrok documentation for all of the tunnel definition options including: name, inspect, host_header, bind_tls, hostname, crt, key, client_cas, remote_addr .
Note on regions: the region used in the first tunnel will be used for all the following tunnels.
The ngrok process and all tunnels will be killed when node process is complete. To stop the tunnels manually use:
Note on HTTP tunnels: by default bind_tls is true, so whenever you use HTTP proto two tunnels are created — HTTP and HTTPS. If you disconnect the HTTPS tunnel, the HTTP tunnel remains open. You might want to close them both by passing the HTTP-version url, or simply by disconnecting all in one go ngrok.disconnect() .
You can use ngrok’s configurations files, and pass name option when making a tunnel. Configuration files allow to store tunnel options. Ngrok looks for them here:
You can specify a custom configPath when making a tunnel.
When a tunnel is established you can use the ngrok interface hosted at http://127.0.0.1:4040 to inspect the webhooks made via ngrok.
The same URL hosts the internal client api. This package exposes an API client that wraps the API which you can use to manage tunnels yourself.
You can also get the URL of the internal API:
The API wrapper gives access to all the ngrok client API methods:
- If you are behind a corporate proxy and have issues installing ngrok, you can set HTTPS_PROXY env var to fix it. ngrok’s postinstall scripts uses the got module to fetch the binary and the hpagent module to support HTTPS proxies. You will need to install the hpagent module as a dependency
- If you are using a CA file, set the path in the environment variable NGROK_ROOT_CA_PATH . The path is needed for downloading the ngrok binary in the postinstall script
npm install downloads the ngrok binary for your platform from the official ngrok hosting. To host binaries yourself set the NGROK_CDN_URL environment variable before installing ngrok. To force specific platform set NGROK_ARCH , eg NGROK_ARCH=freebsdia32 .
The first time you create a tunnel the ngrok process is spawned and runs until you disconnect or when the parent process is killed. All further tunnels are connected or disconnected through the internal ngrok API which usually runs on http://127.0.0.1:4040.
ngrok binary update
If you would like to force an update of the ngrok binary directly from your software, you can require the ngrok/download module and call the downloadNgrok function directly:
Using with nodemon
If you want your application to restart as you make changes to it, you may use nodemon. This blog post shows how to use nodemon and ngrok together so your server restarts but your tunnel doesn’t.
Please run git update-index —assume-unchanged bin/ngrok to not override ngrok stub in your PR. Unfortunately it can’t be gitignored.
The test suite covers the basic usage without an authtoken, as well as features available for free and paid authtokens. You can supply your own tokens as environment variables, otherwise a warning is given and some specs are ignored (locally and in PR builds). GitHub Actions supplies real tokens to master branch and runs all specs always.
Upgrading to version 4
The main impetus to update the package was to remove the dependency on the deprecated request module. request was replaced with got . Calls to the main ngrok functions, connect , authtoken , disconnect , kill , getVersion and getUrl respond the same as in version 3.
Updating the HTTP library, meant that the wrapped API would change, so a client class was created with methods for the available API calls. See the documentation above for how to use the API client.
The upside is that you no longer have to know the path to the API method you need. For example, to list the active tunnels in version 3 you would do:
Now you can call the listTunnels function:
From version 3 to version 4 the bundled types were also overhauled. Most types live within the Ngrok namespace, particularly Ngrok.Options which replaces INgrokOptions .
About
Expose your localhost to the web. Node wrapper for ngrok.
Источник