
Сервер и клиентская библиотека для сбора OOB-взаимодействий
Возможности • Использование • Клиент Interactsh • Сервер Interactsh • Интеграция Interactsh • Присоединиться к Discord
Interactsh — это инструмент с открытым исходным кодом для обнаружения out-of-band взаимодействий. Это инструмент, предназначенный для обнаружения уязвимостей, вызывающих внешние взаимодействия.
interactsh-client -h
Это отобразит справку по инструменту. Вот все поддерживаемые им параметры.```yaml
Usage:
./interactsh-client [flags]
Flags:
INPUT:
-s, -server string interactsh server(s) to use (default "oast.pro,oast.live,oast.site,oast.online,oast.fun,oast.me")
-fl, -file string[] local file(s) to upload and host on the interactsh server
CONFIG:
-config string flag configuration file (default "$HOME/.config/interactsh-client/config.yaml")
-auth configure projectdiscovery cloud (pdcp) api key (default true)
-n, -number int number of interactsh payload to generate (default 1)
-t, -token string authentication token to connect protected interactsh server
-pi, -poll-interval int poll interval in seconds to pull interaction data (default 5)
-nf, -no-http-fallback disable http fallback registration
-cidl, -correlation-id-length int length of the correlation id preamble (min 3, default 20) (default 20)
-cidn, -correlation-id-nonce-length int length of the correlation id nonce (min 3, default 13) (default 13)
-sf, -session-file string store/read from session file
-kai, -keep-alive-interval value keep alive interval (default 1m0s)
FILTER:
-m, -match string[] match interaction based on the specified pattern
-f, -filter string[] filter interaction based on the specified pattern
-dns-only display only dns interaction in CLI output
-http-only display only http interaction in CLI output
-smtp-only display only smtp interactions in CLI output
-asn include asn information of remote ip in json output
UPDATE:
-up, -update update interactsh-client to latest version
-duc, -disable-update-check disable automatic interactsh-client update check
OUTPUT:
-o string output file to write interaction data
-json write output in JSON Lines format
-ps, -payload-store write generated interactsh payload to file
-psf, -payload-store-file string store generated interactsh payloads to given file (default "interactsh_payload.txt")
-fsf, -file-store-file string store hosted file URLs to given file (requires -file)
-v display verbose interaction
DEBUG:
-version show version of the project
-health-check, -hc run diagnostic check up
Для успешной установки клиента Interactsh Cli требуется go1.20+. Выполните следующую команду, чтобы получить репозиторий -```sh go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest
### Настройка PDCP_API_KEY с помощью CLI-клиента Interactsh
> Получите бесплатный API-ключ, зарегистрировавшись на https://cloud.projectdiscovery.io
Вы можете настроить PDCP_API_KEY двумя способами:
1. Чтобы настроить API-ключ в интерактивном режиме, выполните следующую команду: ```sh
./interactsh-client -auth
Это создаст уникальную полезную нагрузку, которую можно использовать для OOB-тестирования с минимальной информацией о взаимодействии в выводе.```console $ interactsh-client
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // v0.0.5
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing [INF] c23b2la0kl1krjcrdj10cndmnioyyyyyn.oast.pro
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (A) from 172.253.226.100 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (AAAA) from 32.3.34.129 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received HTTP interaction from 43.22.22.50 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received HTTPS interaction from 43.22.22.50 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (MX) from 43.3.192.3 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (TXT) from 74.32.183.135 at 2021-26-26 12:26 [c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received SMTP interaction from 32.85.166.50 at 2021-26-26 12:26
### Файл сессии
`interactsh-client` с флагом `-sf, -session-file` может использоваться для сохранения/чтения информации о текущей сессии из заданного пользователем файла, что полезно для возобновления той же сессии и опроса взаимодействий даже после остановки или закрытия клиента.```console
$ interactsh-client -sf interact.session
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ 1.0.3
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing
[INF] c23b2la0kl1krjcrdj10cndmnioyyyyyn.oast.pro
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (A) from 172.253.226.100 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (AAAA) from 32.3.34.129 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received HTTP interaction from 43.22.22.50 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received HTTPS interaction from 43.22.22.50 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (MX) from 43.3.192.3 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received DNS interaction (TXT) from 74.32.183.135 at 2021-26-26 12:26
[c23b2la0kl1krjcrdj10cndmnioyyyyyn] Received SMTP interaction from 32.85.166.50 at 2021-26-26 12:26
Запуск interactsh-client в режиме подробного вывода (v) для просмотра всего запроса и ответа, а также файл вывода для последующего анализа.```console
$ interactsh-client -v -o interactsh-logs.txt
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // 1.0.3
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing [INF] c58bduhe008dovpvhvugcfemp9yyyyyyn.oast.pro
GET /favicon.ico HTTP/2.0 Host: c58bduhe008dovpvhvugcfemp9yyyyyyn.oast.pro Referer: https://c58bduhe008dovpvhvugcfemp9yyyyyyn.oast.pro User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
HTTP/1.1 200 OK Connection: close Content-Type: text/html; charset=utf-8 Server: oast.pro
С помощью флага server interactsh-client можно настроить для подключения к самостоятельно размещённому серверу Interactsh; этот флаг принимает один или несколько серверов, разделённых запятыми.```sh
interactsh-client -server hackwithautomation.com
Мы поддерживаем список серверов Interactsh по умолчанию для использования с `interactsh-client`:
- oast.pro
- oast.live
- oast.site
- oast.online
- oast.fun
- oast.me
Серверы по умолчанию могут быть изменены/ротированы/отключены в любое время, поэтому мы рекомендуем использовать самостоятельно размещённый сервер interactsh, если у вас возникают проблемы с сервером по умолчанию.
### Использование защищённого самостоятельно размещённого сервера
Используя флаг `token`, `interactsh-client` может подключаться к самостоятельно размещённому серверу Interactsh, защищённому аутентификацией.```sh
interactsh-client -server hackwithautomation.com -token XXX
Если вы находитесь вдали от терминала, вы можете использовать notify для отправки уведомления о взаимодействии в реальном времени на любую поддерживаемую платформу.```sh interactsh-client | notify

## Веб-клиент Interactsh
[Interactsh-web](https://github.com/projectdiscovery/interactsh-web) — это бесплатный веб-клиент с открытым исходным кодом, который отображает взаимодействия Interactsh в удобной панели управления в вашем браузере. Он использует локальное хранилище браузера для сохранения и отображения всех входящих взаимодействий. По умолчанию веб-клиент настроен на использование **oast.fun** в качестве сервера interactsh по умолчанию и также поддерживает другие самостоятельно размещённые публичные/аутентифицированные серверы interactsh.
Размещённый экземпляр клиента **interactsh-web** доступен по адресу https://app.interactsh.com
<img width="2032" alt="interactsh-web" src="https://assets.kitploit.com/production/public/readmes/402/9cef2252b8b90b021664a337626c9082f68e40f90a051dcafb18b497ceca8040.png">
## Docker-клиент Interactsh
Также предоставляется [Docker-образ](https://hub.docker.com/r/projectdiscovery/interactsh-client) с клиентом interactsh, готовый к запуску и может использоваться следующим образом:```sh
docker run projectdiscovery/interactsh-client:latest
| --no-color | Отключить цветной вывод |
| --debug | Включить отладочный вывод |
| --verbose | Включить подробный вывод |
| --silent | Включить тихий режим |
| --version | Показать версию программы и выход |
| --help | Показать справочное сообщение и выход |```console
$ docker run projectdiscovery/interactsh-client:latest
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // v1.0.0
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing [INF] c59e3crp82ke7bcnedq0cfjqdpeyyyyyn.oast.pro
## Оригинальное расширение для Burp Suite
[interactsh-collaborator](https://github.com/wdahlenburg/interactsh-collaborator) — это оригинальное расширение interactsh для Burp Suite, разработанное и поддерживаемое [@wdahlenb](https://twitter.com/wdahlenb)
- Скачайте последний JAR-файл со страницы [releases](https://github.com/wdahlenburg/interactsh-collaborator/releases).
- Откройте Burp Suite → Extender → Add → Java → Выберите JAR-файл → Next
- После успешной установки появится новая вкладка с названием **Interactsh**.
- Дополнительную информацию см. в проекте [interactsh-collaborator](https://github.com/wdahlenburg/interactsh-collaborator).
<img width="2032" alt="burp" src="https://assets.kitploit.com/production/public/readmes/402/9f961c02a61a56f18dacc6de581d29ba26153d6f2083df109c98cba57ff7a4f0.png">
## Переработанное расширение для Burp Suite
[interactsh-collaborator-rev](https://github.com/TheArqsz/interactsh-collaborator-rev) — это переработанная версия оригинального расширения interactsh для Burp Suite, разработанная и поддерживаемая [@Arqsz](https://arqsz.net/)
- Скачайте последний JAR-файл со страницы [releases](https://github.com/TheArqsz/interactsh-collaborator-rev/releases).
- Откройте Burp Suite → Extender → Add → Java → Выберите JAR-файл → Next
- После успешной установки появится новая вкладка с названием **Interactsh**.
- Дополнительную информацию см. в проекте [interactsh-collaborator-rev](https://github.com/TheArqsz/interactsh-collaborator-rev).
<img width="2032" alt="burp" src="https://raw.githubusercontent.com/TheArqsz/interactsh-collaborator-rev/master/assets/interactsh-extension.png?raw=true">
## Дополнение для ZAP
Interactsh можно использовать с ZAP через [дополнение OAST для ZAP](https://www.zaproxy.org/docs/desktop/addons/oast-support/). Благодаря возможностям скриптинга ZAP вы можете создавать мощные правила сканирования out-of-band, использующие функции Interactsh. В качестве примера предоставлен шаблон автономного скрипта (он добавляется автоматически при установке дополнения).
- Установите дополнение OAST из [ZAP Marketplace](https://www.zaproxy.org/addons/).
- Перейдите в Tools → Options → OAST и выберите **Interactsh**.
- Настройте [параметры](https://www.zaproxy.org/docs/desktop/addons/oast-support/services/interactsh/options/) для клиента и нажмите «New Payload», чтобы сгенерировать новую полезную нагрузку.
- OOB-взаимодействия появятся во [вкладке OAST](https://www.zaproxy.org/docs/desktop/addons/oast-support/tab/), и вы можете нажать на любое из них, чтобы просмотреть полный запрос и ответ.
- Вы можете установить Interactsh по умолчанию для ActiveScan в меню `Options` > `OAST` > `General`.
- При включении опции `Use Permanent Database` вы можете просматривать взаимодействия, произошедшие после завершения работы ZAP.
- Дополнительную информацию см. в [документации дополнения OAST](https://www.zaproxy.org/docs/desktop/addons/oast-support/).

*Interactsh в ZAP*
## Расширение для Caido
[quickssrf](https://github.com/caido-community/quickssrf) — это расширение для Caido, разработанное и поддерживаемое, которое позволяет использовать Interactsh из прокси Caido.
- Скачайте последний zip-файл со страницы [releases](https://github.com/caido-community/quickssrf/releases/).
- Откройте Caido → Plugins → Install Package → Выберите zip-файл → Next
- После успешной установки появится новая боковая панель с названием **QuickSSRF**.
- Дополнительную информацию см. в проекте [quickssrf](https://github.com/caido-community/quickssrf).

-------
# Сервер Interactsh
Сервер Interactsh запускает несколько сервисов и перехватывает все входящие запросы. Чтобы разместить экземпляр **interactsh-server**, вам необходимо настроить:
1. Доменное имя с пользовательскими **именами хостов** и **серверами имён**.
2. Базовый droplet, работающий круглосуточно в фоновом режиме.
# Использование```sh
interactsh-server -h
Это отобразит справку по инструменту. Вот все поддерживаемые им параметры.```yaml Usage: ./interactsh-server [flags]
Flags: INPUT: -d, -domain string[] single/multiple configured domain to use for server -i, -ip string[] public IP address(es) to use for interactsh server (comma-separated, supports both IPv4 & IPv6) -lip, -listen-ip string public ip address to listen on (default "0.0.0.0") -e, -eviction int number of days to persist interaction data in memory (default 30) -ne, -no-eviction disable periodic data eviction from memory -es, -eviction-strategy string eviction strategy for interactions (sliding, fixed) (default "sliding") -a, -auth enable authentication to server using random generated token -t, -token string enable authentication to server using given token -acao-url string origin url to send in acao header to use web-client) (default "*") -sa, -skip-acme skip acme registration (certificate checks/handshake + TLS protocols will be disabled) -se, -scan-everywhere scan canary token everywhere -cidl, -correlation-id-length int length of the correlation id preamble (min 3, default 20) (default 20) -cidn, -correlation-id-nonce-length int length of the correlation id nonce (min 3, default 13) (default 13) -cert string custom certificate path -privkey string custom private key path -oih, -origin-ip-header string HTTP header containing origin ip (interactsh behind a reverse proxy)
CONFIG: -r, -resolvers string[] list of resolvers to use (file or comma separated) -config string flag configuration file (default "$HOME/.config/interactsh-server/config.yaml") -dr, -dynamic-resp enable setting up arbitrary response data -cr, -custom-records string custom dns records YAML file for DNS server -hi, -http-index string custom index file for http server -hd, -http-directory string directory with files to serve with http server -dhr, -default-http-response string file to serve for all http requests (takes priority over other options) -ds, -disk disk based storage -dsp, -disk-path string disk storage path -ru, -redis-url string redis connection URL (enables shared state for multi-instance deployments) -rp, -redis-prefix string redis key prefix (default "interactsh:") -csh, -server-header string custom value of Server header in response -dv, -disable-version disable publishing interactsh version in response header
UPDATE: -up, -update update interactsh-server to latest version -duc, -disable-update-check disable automatic interactsh-server update check
SERVICES: -dns-port int port to use for dns service (default 53) -http-port int port to use for http service (default 80) -https-port int port to use for https service (default 443) -smtp-port int port to use for smtp service (default 25) -smtps-port int port to use for smtps service (default 587) -smtp-autotls-port int port to use for smtps autotls service (default 465) -ldap-port int port to use for ldap service (default 389) -ldap enable ldap server with full logging (authenticated) -wc, -wildcard enable wildcard interaction for interactsh domain (authenticated) -smb start in-process smb agent for NetNTLMv2 hash capture (authenticated) -responder start in-process responder agent (multi-port SMB NetNTLMv2 hash capture, authenticated) -ftp start ftp agent (authenticated) -smb-port int port to use for smb service (default 445) -ftp-port int port to use for ftp service (default 21) -ftps-port int port to use for ftps service (default 990) -ftp-dir string ftp directory - temporary if not specified
UPLOAD: -upload enable client file upload and hosting - self-hosted servers only (authenticated) -ud, -upload-directory string directory to host uploaded files from - temporary if not specified; interactsh creates and prunes .interactsh-user-uploads inside it -umfs, -upload-max-file-size value maximum size of a single uploaded file (default 1mb) -umf, -upload-max-files int maximum number of uploaded files per session (default 5) -umts, -upload-max-total-size value maximum total size of all uploaded files on the server (default 1gb) -ut, -upload-ttl value maximum lifetime of uploaded files (default 24h0m0s)
DEBUG: -version show version of the project -debug start interactsh server in debug mode -ep, -enable-pprof enable pprof debugging server -health-check, -hc run diagnostic check up -metrics enable metrics endpoint -v, -verbose display verbose interaction
Мы используем GoDaddy для доменного имени и DigitalOcean droplet для сервера; базового droplet за $5 должно быть достаточно для запуска самостоятельно размещённого сервера Interactsh. Если вы не используете GoDaddy, следуйте процедуре вашего регистратора для создания / обновления записей DNS.
<table>
<td>
## Настройка домена Interactsh
- Перейдите на `https://dcc.godaddy.com/control/portfolio/{{domain}}/settings?subtab=hostnames`
- Add → Submit `ns1`, `ns2` со значением вашего `SERVER_IP`
<img width="1288" alt="gdd-hostname" src="https://assets.kitploit.com/production/public/readmes/402/efca5443025a0d6d2ac6e8103985dce9bad2be94e68a07a203571b83ebb0449d.png">
- Перейдите на `https://dcc.godaddy.com/control/dnsmanagement?domainName={{domain}}&subtab=nameservers`
- Change Nameservers → I'll use my own nameservers → Submit `ns1.INTERACTSH_DOMAIN`, `ns2.INTERACTSH_DOMAIN`
<img width="1288" alt="gdd-ns" src="https://assets.kitploit.com/production/public/readmes/402/f8c7ab74be7598c9431a78f3c0b790d4b91072219e50d1981bc28e651abe8a9a.png">
</td>
</table>
<table>
<td>
## Настройка сервера Interactsh
Установите `interactsh-server` на ваш **VPS**```bash
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-server@latest
Учитывая, что настройка доменного имени завершена, выполните приведённую ниже команду для запуска `interactsh-server````bash interactsh-server -domain INTERACTSH_DOMAIN
Ниже приведён пример успешной установки и работы самостоятельно размещённого сервера:

Ряд необходимых флагов настраивается автоматически для запуска `interactsh-server` с настройками по умолчанию. Например, флаги `ip` и `listen-ip` устанавливаются в публичный IP-адрес системы, когда это возможно.
</td>
</table>
## Запуск Interactsh Server```console
$ interactsh-server -domain interact.sh
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ v1.0.0
projectdiscovery.io
[INF] Listening with the following services:
[HTTPS] Listening on TCP 46.101.25.250:443
[HTTP] Listening on TCP 46.101.25.250:80
[SMTPS] Listening on TCP 46.101.25.250:587
[LDAP] Listening on TCP 46.101.25.250:389
[SMTP] Listening on TCP 46.101.25.250:25
[DNS] Listening on TCP 46.101.25.250:53
[DNS] Listening on UDP 46.101.25.250:53
Несколько доменных имён можно указать так же, как описано выше, чтобы запустить один и тот же сервер interactsh на нескольких настроенных доменах.```console $ interactsh-server -d oast.pro,oast.me
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // 1.0.5
projectdiscovery.io
[INF] Loading existing SSL Certificate for: [.oast.pro, oast.pro] [INF] Loading existing SSL Certificate for: [.oast.me, oast.me] [INF] Listening with the following services: [HTTPS] Listening on TCP 46.101.25.250:443 [HTTP] Listening on TCP 46.101.25.250:80 [SMTPS] Listening on TCP 46.101.25.250:587 [LDAP] Listening on TCP 46.101.25.250:389 [SMTP] Listening on TCP 46.101.25.250:25 [DNS] Listening on TCP 46.101.25.250:53 [DNS] Listening on UDP 46.101.25.250:53
## Interactsh Server с IPv4 и IPv6
Interactsh server поддерживает как IPv4, так и IPv6 адреса. Вы можете указать несколько IP-адресов с помощью флага `-ip`, и сервер будет отвечать соответствующими записями A (IPv4) или AAAA (IPv6) в DNS-ответах.```console
$ interactsh-server -d oast.pro -ip 192.0.2.1,2001:db8::1
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ 1.0.5
projectdiscovery.io
[INF] Configured IP addresses: 192.0.2.1, 2001:db8::1
[INF] Listening with the following services:
[HTTPS] Listening on TCP 46.101.25.250:443
[HTTP] Listening on TCP 46.101.25.250:80
[SMTPS] Listening on TCP 46.101.25.250:587
[LDAP] Listening on TCP 46.101.25.250:389
[SMTP] Listening on TCP 46.101.25.250:25
[DNS] Listening on TCP 46.101.25.250:53
[DNS] Listening on UDP 46.101.25.250:53
Сервер автоматически обнаружит и классифицирует адреса IPv4 и IPv6, возвращая соответствующие DNS-записи в зависимости от типа запроса.
Когда выбранный сервер не публикует записи AAAA, клиент выводит предупреждение, чтобы взаимодействия от источников, использующих только IPv6, не были незаметно пропущены и ошибочно приняты за отсутствие уязвимости.
|
Примечание: При запуске сервера interactsh на облачных виртуальных машинах, таких как Amazon EC2, Google Cloud Platform (GCP), необходимо обновить правила безопасности, чтобы разрешить "весь трафик" для входящих подключений. |
interactsh-server поддерживает дополнительные полезные возможности, которые не включены по умолчанию и предназначены для использования только на самостоятельно размещённых серверах.
interactsh-server может требовать пользовательские порты для сервисов, если порты по умолчанию уже заняты. Если это так, но порты по умолчанию всё ещё требуются как часть полезной нагрузки, можно настроить interactsh-server за обратным прокси, перенаправив порты для сервисов на основе HTTP/TCP/UDP через директиву прокси http/stream (proxy_pass).
Предполагая, что основные сервисы interactsh-server работают на следующих портах:
Файл конфигурации nginx для перенаправления трафика будет выглядеть следующим образом:```conf
http { server { listen 443 ssl; server_name mysite.com; ssl_certificate /etc/nginx/interactsh.pem; ssl_certificate_key /etc/nginx/interactsh.key;
location / {
proxy_pass https://interachsh.mysite.com:80/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
} }
stream {
server { listen 25; proxy_pass interachsh.mysite.com:8025; }
server { listen 53; proxy_pass interachsh.mysite.com:8053; } server { listen 53 udp; proxy_pass interachsh.mysite.com:8053; } }
**Настроенные домены**```console
$ interactsh-server -d oast.pro,oast.me
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ 1.0.5
projectdiscovery.io
[INF] Loading existing SSL Certificate for: [*.oast.pro, oast.pro]
[INF] Loading existing SSL Certificate for: [*.oast.me, oast.me]
[INF] Listening with the following services:
[HTTPS] Listening on TCP 46.101.25.250:443
[HTTP] Listening on TCP 46.101.25.250:80
[SMTPS] Listening on TCP 46.101.25.250:587
[LDAP] Listening on TCP 46.101.25.250:389
[SMTP] Listening on TCP 46.101.25.250:25
[DNS] Listening on TCP 46.101.25.250:53
[DNS] Listening on UDP 46.101.25.250:53
Страницу индекса для http-сервера можно настроить при запуске пользовательского сервера interactsh с помощью флага -http-index.```bash
interactsh-server -d hackwithautomation.com -http-index banner.html
`{DOMAIN}` также поддерживается в индексном файле для замены на доменное имя сервера.

## Хостинг статических файлов
HTTP-сервер Interactsh опционально включает хостинг файлов для помощи в тестировании безопасности. Эта возможность может использоваться с самостоятельно размещённым сервером для раздачи файлов с распространёнными полезными нагрузками для **XSS, XXE, RCE** и других атак.
Чтобы использовать эту функцию, можно применить флаг `-http-directory`, который принимает каталог в качестве входных данных, и файлы раздаются по пути `/s/`.```bash
interactsh-server -d hackwithautomation.com -http-directory ./paylods

Там, где -http-directory размещает предоставленные оператором файлы глобально, -upload позволяет клиенту размещать файлы
в привязке к его собственному correlation ID. Это нацелено на out-of-band уязвимости второй стадии — XXE с
внешним DTD, включения XSLT, подготовку JNDI — где цель должна загрузить файл полезной нагрузки до того, как
сработает callback. Каждая загрузка фиксируется как взаимодействие, поэтому вторая стадия видна в выводе
клиента.
[!WARNING]
-uploadпредназначен только для самостоятельно размещённых серверов. Включение его на публичном экземпляре превращает его в анонимный файловый хостинг на домене с действительным wildcard-сертификатом, что является магнитом для размещения вредоносного ПО, а блок-листы действуют на регистрируемый домен — один злоупотребляющий образец затрагивает каждого пользователя этого домена. По умолчанию он отключён и при включении подразумевает аутентификацию.
Запустите сервер с включёнными загрузками:```bash interactsh-server -d hackwithautomation.com -upload -ftp
Затем направьте на него клиент с одним или несколькими файлами:```bash
interactsh-client -s https://hackwithautomation.com -t <token> -file evil.dtd
--no-verify — пропустить проверку TLS-сертификата (небезопасно)--timeout — таймаут запроса в секундах (по умолчанию: 10)--retries — количество повторных попыток при неудачных запросах (по умолчанию: 3)--proxy — прокси-URL для HTTP-запросов--user-agent — строка User-Agent для HTTP-запросов--headers — дополнительные HTTP-заголовки в формате Key: Value--cookies — cookies для HTTP-запросов в формате name=value--follow-redirects — следовать перенаправлениям HTTP--max-redirects — максимальное количество перенаправлений (по умолчанию: 5)--output — путь к выходному файлу для результатов--format — формат вывода (json, csv, table)--verbose — включить подробное логирование--quiet — подавить весь вывод, кроме результатов--debug — включить отладочный вывод--config — путь к файлу конфигурации--version — показать версию и выйти--help — показать справку и выйти# Базовое сканирование
python3 main.py -u https://example.com
# Сканирование со списком URL
python3 main.py -f urls.txt
# Сканирование с пользовательскими заголовками
python3 main.py -u https://example.com -H "Authorization: Bearer token"
# Сканирование с прокси
python3 main.py -u https://example.com --proxy http://127.0.0.1:8080
# Сканирование с выводом в JSON
python3 main.py -u https://example.com --format json --output results.json
# Сканирование с подробным логированием
python3 main.py -u https://example.com --verbose
# Сканирование с несколькими потоками
python3 main.py -u https://example.com -t 20
# Сканирование с задержкой между запросами
python3 main.py -u https://example.com --delay 1
# Сканирование с таймаутом
python3 main.py -u https://example.com --timeout 30
# Сканирование с повторными попытками
python3 main.py -u https://example.com --retries 5
Инструмент поддерживает несколько форматов вывода:
Пример вывода JSON:
{
"target": "https://example.com",
"timestamp": "2024-01-01T00:00:00Z",
"results": [
{
"url": "https://example.com",
"status": 200,
"length": 1234,
"type": "text/html"
}
]
}
Инструмент поддерживает файл конфигурации в формате YAML:
target: https://example.com
threads: 10
timeout: 30
retries: 3
proxy: http://127.0.0.1:8080
headers:
User-Agent: "Mozilla/5.0"
Authorization: "Bearer token"
Этот проект лицензирован под лицензией MIT — подробности см. в файле LICENSE.
Этот инструмент предназначен только для образовательных целей и тестирования на проникновение с разрешения. Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим программным обеспечением. Всегда получайте надлежащее разрешение перед тестированием любой системы.
Сделано с ❤️ для сообщества безопасности```console [INF] Listing 1 payload for OOB Testing [INF] c6rj61aciaeutn2ae680cndmnioyyyyyn.hackwithautomation.com [INF] Hosting 1 file(s) for OOB Testing [INF] https://c6rj61aciaeutn2ae680xk4tqy8pqhwmi.hackwithautomation.com/f/evil.dtd [INF] ftp://c6rj61aciaeutn2ae680xk4tqy8pqhwmi.hackwithautomation.com/.interactsh-user-uploads/c6rj61aciaeutn2ae680/evil.dtd
Файлы отдаются по HTTP(S), а также по FTP(S), когда включён `-ftp`. Ответы всегда имеют
`Content-Type: application/octet-stream` с `Content-Disposition: attachment`, поэтому сервер никогда
не отображает предоставленный клиентом HTML или SVG на своём домене; потребители DTD, XSLT и JNDI игнорируют тип содержимого,
так что для предполагаемого использования это ничего не стоит.
Когда цель забирает файл, этот запрос поступает в клиент как любое другое взаимодействие — в этом и
суть: это доказательство того, что первая стадия полезной нагрузки действительно выполнилась. Тело ответа
заменяется дайджестом, чтобы большая полезная нагрузка не копировалась обратно в поток взаимодействий при каждом
запросе:```console
[c6rj61aciaeutn2ae680xk4tqy8pqhwmi] Received HTTP interaction from 203.0.113.7 at 2026-08-05 15:47:19
------------
HTTP Request
------------
GET /f/evil.dtd HTTP/1.1
Host: c6rj61aciaeutn2ae680xk4tqy8pqhwmi.hackwithautomation.com
Accept: */*
User-Agent: curl/8.18.0
-------------
HTTP Response
-------------
HTTP/1.1 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="evil.dtd"
Content-Length: 144
[body elided: 144 of 144 bytes of uploaded file "evil.dtd", sha256 0c1b960b076cdff8666f1f302dddd8f3ff0e6ed4b6c09002fbe6d1cdbb5d68f8]
Два счётчика — это «доставлено из размещённых»: условный запрос, получивший ответ 304, записывает 0 из 144, а запрос с диапазоном записывает байты, которые диапазон фактически перенёс, поэтому запись не может заявить о доставке, которой не было.
Какой бы callback второй стадии ни вызвал payload, он приходит как дополнительное взаимодействие с тем же correlation ID, поэтому обе стадии попадают в один клиент.
Клиент, которому предложено разместить файлы на сервере, запущенном без -upload, сообщает об этом и останавливается, вместо того чтобы молча продолжать без payload:```console
$ interactsh-client -s https://hackwithautomation.com -t -file evil.dtd
[FTL] Server https://hackwithautomation.com does not accept file uploads; it must be started with -upload
Отказ сервера назван, потому что клиент регистрируется только на одном из серверов в `-s`. Когда
указано несколько, также сообщается, как был сделан выбор, поскольку результат может отличаться между запусками:```console
$ interactsh-client -s https://a.example,https://b.example -t <token> -file evil.dtd
[FTL] Server https://a.example does not accept file uploads; it must be started with -upload (chosen at random from the 2 servers in -s, so this may differ between runs; pass a single server with -file)
Параметры на стороне сервера:
| Флаг | По умолчанию | Описание |
|---|---|---|
-upload | выкл. | включить загрузку и хостинг файлов клиента |
-ud, -upload-directory | временный каталог | каталог для хостинга загруженных файлов; interactsh владеет .interactsh-user-uploads внутри него |
-umfs, -upload-max-file-size | 1mb | максимальный размер одного файла |
-umf, -upload-max-files | 5 | максимальное количество файлов на сессию |
-umts, -upload-max-total-size | 1gb | максимальный суммарный объём в байтах по всем сессиям |
-ut, -upload-ttl | 24h | максимальное время жизни загруженных файлов |
Файлы удаляются, когда клиент снимает регистрацию, когда его сессия покидает кэш, и в любом случае по истечении
-upload-ttl с момента последней загрузки для этой сессии.
Что стоит знать перед включением:
-s перечисляет
несколько, файлы размещаются только на выбранном; именно его URL-адреса payload выводятся. Передавайте
один сервер с -file: клиент выбирает один случайным образом из -s и не может учесть поддержку
загрузки, поскольку узнаёт о ней только после регистрации — поэтому список, смешивающий серверы с
поддержкой загрузки и без неё, даёт случайные сбои.-upload нельзя комбинировать с -redis-url. Размещённые байты записываются в локальную файловую
систему одного экземпляра, поэтому при бэкенде хранилища, общего для нескольких экземпляров, другие
экземпляры объявляли бы файлы, которых у них нет. Сервер отказывается запускаться с такой комбинацией: ```console
$ interactsh-server -d hackwithautomation.com -upload -redis-url redis://127.0.0.1:6379/0
[FTL] -upload cannot be used with -redis-url: hosted files are stored on a single instance's local filesystem
https://.-upload-directory при реальном развёртывании.<root>/.interactsh-user-uploads/<correlation-id>/<filename>, и всё, что находится под
.interactsh-user-uploads, удаляется по завершении сессии, по истечении -upload-ttl и при
запуске — метаданные загрузок хранятся только в памяти, поэтому ничего там не переживает перезапуск. Остальная часть
корня никогда не затрагивается, что и делает безопасным указание -upload-directory на каталог, который вы
уже используете, или его совместное использование с -ftp-dir.-ftp без -ftp-dir корень FTP устанавливается в корень загрузок, чтобы размещённые файлы были
доступны по FTP без дополнительной настройки. Если вы задаёте оба флага, они должны указывать на один и тот же
каталог, иначе FTP не увидит загрузки: сервер сообщает о несоответствии при запуске и перестаёт
предлагать клиентам URL ftp://, так что хостинг деградирует до HTTP-only вместо выдачи FTP-URL,
которые никуда не ведут. Каталог загрузок скрыт из листингов FTP — LIST / показывает ваш собственный контент, но
не .interactsh-user-uploads, и этот каталог отказывается перечислять своё содержимое, поэтому анонимный
клиент не может перечислить correlation ID, для которых в данный момент есть размещённые файлы. RETR по известному пути
работает, на что и опирается URL полезной нагрузки.HTTP-сервер Interactsh опционально позволяет отвечать динамическим HTTP-ответом с помощью параметров запроса. Эту функцию можно включить с помощью флага -dr или -dynamic-resp.
Поддерживаются следующие имена параметров запроса — body, header, status и delay. Можно указать несколько параметров header для установки нескольких заголовков.
HTTP/2 307 header1: value1 header1: value12 server: hackwithautomation.com x-interactsh-version: 1.0.7 content-type: text/plain; charset=utf-8 content-length: 20 date: Tue, 13 Sep 2022 12:31:05 GMT
this is example body
> **Примечание**:
- Функция Dynamic HTTP Response отключена по умолчанию.
- По замыслу эта функция позволяет любому запускать клиентский код / перенаправления, используя ваш домен / сервер interactsh
- Использование этой опции с изолированным доменом рекомендуется для **избежания влияния на безопасность** связанных корневых/поддоменов.
## Wildcard Interaction
Чтобы включить `wildcard` взаимодействие для настроенного домена Interactsh, можно использовать флаг `wildcard` с неявной защитой аутентификации через флаг `auth`, если флаг `token` опущен.```console
$ interactsh-server -domain hackwithautomation.com -wildcard
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ v1.0.0
projectdiscovery.io
[INF] Client Token: 699c55544ce1604c63edb769e51190acaad1f239589a35671ccabd664385cfc7
[INF] Listening with the following services:
[HTTPS] Listening on TCP 157.230.223.165:443
[HTTP] Listening on TCP 157.230.223.165:80
[SMTPS] Listening on TCP 157.230.223.165:587
[LDAP] Listening on TCP 157.230.223.165:389
[SMTP] Listening on TCP 157.230.223.165:25
[DNS] Listening on TCP 157.230.223.165:53
[DNS] Listening on UDP 157.230.223.165:53
В режиме wildcard каждый подключённый клиент независимо получает все взаимодействия для общего домена. Сервер хранит буфер последних взаимодействий, чтобы несколько клиентов могли опрашивать без потери данных. По умолчанию буфер вмещает до 10 000 взаимодействий на общий ключ. Это можно настроить с помощью переменной окружения INTERACTSH_MAX_SHARED_INTERACTIONS:```console
$ export INTERACTSH_MAX_SHARED_INTERACTIONS=50000
$ interactsh-server -domain hackwithautomation.com -wildcard
## Взаимодействие с LDAP
По умолчанию сервер Interactsh поддерживает взаимодействие с LDAP для полезной нагрузки, включённой в [поисковый запрос](https://ldapwiki.com/wiki/LDAP%20Query%20Examples), дополнительно для полного логирования можно использовать флаг `ldap`.```console
$ interactsh-server -domain hackwithautomation.com -sa -ldap
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ v1.0.0
projectdiscovery.io
[INF] Client Token: deb58fc151e6f0e53d448be3eb14cd7a11590d8950d142b9cd1abac3c2e3e7bc
[INF] Listening with the following services:
[DNS] Listening on UDP 157.230.223.165:53
[LDAP] Listening on TCP 157.230.223.165:389
[HTTP] Listening on TCP 157.230.223.165:80
[SMTP] Listening on TCP 157.230.223.165:25
[DNS] Listening on TCP 157.230.223.165:53
Длина полезной нагрузки interactsh по умолчанию составляет 33, состоящую из 20 (уникальный correlation-id) + 13 (токен nonce), которую можно настроить с помощью флагов cidl и cidn, чтобы сделать её короче при необходимости с самостоятельно размещённым сервером interactsh.```console
$ interactsh-server -d hackwithautomation.com -cidl 4 -cidn 6
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // v1.0.2
projectdiscovery.io
[INF] Loading existing SSL Certificate for: [*.hackwithautomation.com, hackwithautomation.com] [INF] Listening with the following services: [HTTPS] Listening on TCP 157.230.223.165:443 [SMTPS] Listening on TCP 157.230.223.165:587 [DNS] Listening on UDP 157.230.223.165:53 [HTTP] Listening on TCP 157.230.223.165:80 [LDAP] Listening on TCP 157.230.223.165:389 [SMTP] Listening on TCP 157.230.223.165:25 [DNS] Listening on TCP 157.230.223.165:53
**Примечание:** Важно и обязательно использовать одинаковую длину с обеих сторон (**клиент** и **сервер**), иначе корреляция не будет работать.```console
$ interactsh-client -s hackwithautomation.com -cidl 4 -cidn 6
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ v1.0.2
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing
[INF] c8rf4e8xm4.hackwithautomation.com
По умолчанию сервер interactsh использует библиотеку certmagic для автоматического создания wildcard-сертификатов для запрошенного домена. Чтобы использовать собственный SSL-сертификат с самостоятельно размещённым сервером interactsh, можно применить флаги cert и privkey для указания необходимых файлов сертификата.
Примечание: Для использования всех возможностей протокола SSL обязателен wildcard-сертификат.```console $ interactsh-server -d hackwithautomation.com -cert hackwithautomation.com.crt -privkey hackwithautomation.com.key
_ __ __ __
()__ / /____ _________ / // /_
/ / __ / / _ / / __ '/ / __/ __/ __
/ / / / / // __/ / / // / // /( ) / / /
/// //_/_// _,/___/_/__// // v1.0.2
projectdiscovery.io
[INF] Listening with the following services: [HTTPS] Listening on TCP 157.230.223.165:443 [SMTP] Listening on TCP 157.230.223.165:25 [HTTP] Listening on TCP 157.230.223.165:80 [LDAP] Listening on TCP 157.230.223.165:389 [DNS] Listening on TCP 157.230.223.165:53 [SMTPS] Listening on TCP 157.230.223.165:587 [DNS] Listening on UDP 157.230.223.165:53
## Поддерживаемые протоколы
### FTP
Поддержка FTP может быть включена с помощью флага `-ftp` и рекомендуется только для самостоятельно размещённых экземпляров. FTP-агент имитирует полнофункциональный FTP-серверный агент с аутентификацией, которая фиксирует данные аутентификации при каждой файловой операции. По умолчанию агент прослушивает открытый текстовый FTP на порту 21 (это можно изменить с помощью флага `-ftp-port`) и TLS FTP на порту 990 (это можно изменить с помощью флага `-ftps-port`) и отображает в режиме только для чтения содержимое временного каталога ОС по умолчанию (настраивается с помощью опции `-ftp-dir`). FTP-движок использует пользовательский сертификат и закрытый ключ, если они предоставлены, или извлекает сертификат и закрытый ключ из первого домена acme, если он предоставлен.
Пример запуска демона FTP и захвата взаимодействия при входе:```console
$ sudo go run . -ftp -skip-acme -debug -domain localhost
...
[INF] Outbound IP: 192.168.1.16
[INF] Client Token: 6dc07e4a76c3d5e58e4bea13ce073dc403499b128c62397aff7b934a6e4822e3
[INF] Listening with the following services:
[DNS] Listening on TCP 192.168.1.16:53
[SMTP] Listening on TCP 192.168.1.16:25
[HTTP] Listening on TCP 192.168.1.16:80
[FTP] Listening on TCP 192.168.1.16:21
[DNS] Listening on UDP 192.168.1.16:53
[LDAP] Listening on TCP 192.168.1.16:389
[DBG] FTP Interaction:
{"protocol":"ftp","unique-id":"","full-id":"","raw-request":"USER test\ntest logging in","remote-address":"127.0.0.1:51564","timestamp":"2022-09-29T00:49:42.212323+02:00"}
Флаг -smb включает внутрипроцессный сервер захвата хешей SMB2 NetNTLMv2 (только для самостоятельно размещённых экземпляров). Он реализован на чистом Go поверх goimpacket и прослушивает порт 445, если не изменён флагом -smb-port. Зависимости от Python, impacket или docker не требуются.
Захваченные хеши сохраняются как взаимодействия smb в стандартном формате hashcat NetNTLMv2 (-m 5600):```
USER::DOMAIN:serverChallenge:NTProofStr:NTLMv2Blob
Пример включения сервера samba:```console
$ sudo interactsh-server -smb -skip-acme -debug -domain localhost
Флаг -responder включает сервер захвата хешей NTLMv2, эквивалентный Responder, также основанный на goimpacket. Он привязывается к TCP-портам, поддерживающим SMB (139 и значение -smb-port, по умолчанию 445), и сохраняет любую захваченную аутентификацию как взаимодействие responder в том же формате hashcat NetNTLMv2, описанном выше. Зависимости от docker или Python не требуются.```bash
sudo interactsh-server -responder -d localhost
> Примечание: устаревшие широковещательные отравители LLMNR / NBT-NS / MDNS, поставляемые с проектом Python Responder, **не** включены. Это техники на стороне LAN, выходящие за рамки сервера OOB-обратных вызовов, доступного через публичный интернет, и они не являются частью библиотеки goimpacket.
## Интеграция с Interactsh
### Использование в качестве библиотеки
[Примеры](https://github.com/projectdiscovery/interactsh/blob/main/examples) используют клиентскую библиотеку interactsh для получения внешних взаимодействий по сгенерированному URL путём выполнения http-запроса к этому URL, а также для размещения файла в рамках той же сессии для проверки на втором этапе.
Размещение файлов — это опциональная возможность сервера, поэтому потребитель библиотеки ведёт переговоры, а не делает предположений: `Capabilities()` сообщает, что сервер объявил при регистрации, `UploadFiles` возвращает `ErrUploadUnsupported`, когда сервер не может размещать файлы, и `ErrUploadNotAdvertised`, когда он предшествует этой функции, а `FileURL`/`FTPFileURL` составляют URL-адреса, которые должна запросить цель. Публичные серверы `oast.*` не предлагают хостинг, поэтому пример пропускает его, а не завершается с ошибкой.
### Nuclei - OAST
Сканер уязвимостей [Nuclei](https://github.com/projectdiscovery/nuclei) использует **Interactsh** для автоматической генерации полезной нагрузки и обнаружения уязвимостей безопасности на основе out-of-band взаимодействий.
См. блог об интеграции [Nuclei + Interactsh](https://blog.projectdiscovery.io/nuclei-interactsh-integration/) и [руководство](https://nuclei.projectdiscovery.io/templating-guide/interactsh/) для получения дополнительной информации.
# Метаданные облака
Сервер Interactsh поддерживает DNS-записи для сервисов метаданных облака, что полезно для тестирования уязвимостей, связанных с SSRF.
В настоящее время поддерживаемые сервисы метаданных:
- [AWS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
- [Alibaba](https://www.alibabacloud.com/blog/alibaba-cloud-ecs-metadata-user-data-and-dynamic-data_594351)
Пример:
* **aws.oast.fun** указывает на 169.254.169.254
* **alibaba.oast.fun** указывает на 100.100.100.200
-----
### Благодарности
Interactsh вдохновлён [Burp Collaborator](https://portswigger.net/burp/documentation/collaborator).
### Лицензия
Interactsh распространяется под [лицензией MIT](https://github.com/projectdiscovery/interactsh/blob/master/LICENSE.md) и создан с 🖤 командой [projectdiscovery](https://projectdiscovery.io).