
Сервер и клиентская библиотека для сбора 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")
CONFIG:
-config string flag configuration file (default "$HOME/.config/interactsh-client/config.yaml")
-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)
-cidn, -correlation-id-nonce-length int length of the correlation id nonce (min 3, default 13)
-sf, -session-file string store/read from session file
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
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 JSONL(ines) format
-ps, -payload-store enable storing generated interactsh payload to file
-psf, -payload-store-file string store generated interactsh payloads to given file (default "interactsh_payload.txt")
-v display verbose interaction
DEBUG:
-version show version of the project
-health-check, -hc run diagnostic check up
Interactsh Cli client требует 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
Это сгенерирует уникальный payload, который может быть использован для 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 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 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 Web Client
[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">
## Interactsh Docker Client
Также предоставляется [образ Docker](https://hub.docker.com/r/projectdiscovery/interactsh-client) с клиентом interactsh, который готов к запуску и может быть использован следующим образом:```sh
docker run projectdiscovery/interactsh-client:latest
ВВОД:```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-файл со страницы [релизов](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-файл со страницы [релизов](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 Proxy.
- Загрузите последний ZIP-файл со страницы [релизов](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. Базовый VPS-сервер, работающий 24/7 в фоновом режиме.
# Использование```sh
interactsh-server -h
Это отобразит справку по инструменту. Вот все ключи, которые он поддерживает.```yaml Usage: ./interactsh-server [flags]
Flags: INPUT: -d, -domain string[] single/multiple configured domain to use for server -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) -cidn, -correlation-id-nonce-length int length of the correlation id nonce (min 3, 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 -dhr, -default-http-response string file to serve for all http requests (takes priority over other options) -hd, -http-directory string directory with files to serve with http server -ds, -disk disk based storage -dsp, -disk-path string disk storage path -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 smb agent - impacket and python 3 must be installed (authenticated) -responder start responder agent - docker must be installed (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
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`
- Добавьте → Отправьте `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`
- Измените серверы имен → Я буду использовать свои собственные серверы имен → Отправьте `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 с поддержкой IPv4 и IPv6
Сервер Interactsh поддерживает как 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-записи в зависимости от типа запроса.
|
Примечание: При запуске interactsh server на облачных ВМ, таких как 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-сервер 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
> **Примечание**:
- Функция динамического HTTP-ответа отключена по умолчанию.
- По задумке, эта функция позволяет любому запускать клиентский код / перенаправления с использованием вашего домена / сервера interactsh.
- Рекомендуется использовать эту опцию с изолированным доменом, чтобы **избежать влияния на безопасность** связанных корневых/поддоменов.
## Взаимодействие с подстановочными знаками
Для включения взаимодействия с подстановочными знаками для настроенного домена 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 token), которую можно настроить с помощью флагов cidl и cidn, чтобы сделать короче при необходимости с собственным сервером interacsh.```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
Библиотека certmagic по умолчанию используется сервером interactsh для автоматического создания 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`) и FTP через TLS на порту 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 включает протокол Samba (только для самостоятельно размещенных экземпляров). Протокол Samba использует класс smbserver из impacket для имитации общего ресурса демона Samba, прослушивающего порт 445, если не изменено флагом -smb-port. При включении interactsh выполняет под капотом скрипт smb_server.py. Следовательно, требуются Python3 и зависимости impacket.
Пример включения сервера Samba:```console
$ sudo interactsh-server -smb -skip-acme -debug -domain localhost
### Responder
[Responder](https://github.com/lgandx/Responder) упакован в контейнер Docker, который открывает различные порты сервисов через проброс портов Docker. Взаимодействия извлекаются путем мониторинга общего файла журнала `Responder-Session.log` в папке временных файлов. Для использования на самостоятельно размещенном экземпляре необходимо сначала собрать контейнер Docker и пометить его как `interactsh`(демон Docker должен быть правильно настроен и иметь возможности проброса портов):```bash
docker build . -t interactsh
Затем запустите сервис с помощью:```bash sudo interactsh-server -responder -d localhost
По умолчанию демон прослушивает следующие порты:
- UDP: 137, 138, 1434
+ TCP: 21 (может конфликтовать с FTP-демоном, если он используется), 110, 135, 139, 389, 445, 1433, 3141, 3128
## Интеграция Interactsh
### Использование в качестве библиотеки
В [примерах](https://github.com/projectdiscovery/interactsh/blob/main/examples) используется клиентская библиотека interactsh для получения внешних взаимодействий по сгенерированному URL путём выполнения HTTP-запроса к этому URL.
### 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).