
Um servidor e biblioteca cliente para coleta de interações OOB
<h1 align="center">
<br>
<img src="https://assets.kitploit.com/production/public/readmes/402/42cea13705e01c5e573c174584d11fcb32d4f5ecce0bb3a95a95c585796e6897.png" width="200px" alt="Interactsh"></a>
</h1>
<h4 align="center">Um servidor de coleta de interações OOB e biblioteca cliente</h4>
<p align="center">
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-_red.svg"></a>
<a href="https://github.com/projectdiscovery/interactsh/issues"><img src="https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat"></a>
<a href="https://goreportcard.com/badge/github.com/projectdiscovery/interactsh"><img src="https://goreportcard.com/badge/github.com/projectdiscovery/interactsh"></a>
<a href="https://twitter.com/pdiscoveryio"><img src="https://img.shields.io/twitter/follow/pdiscoveryio.svg?logo=twitter"></a>
<a href="https://discord.gg/projectdiscovery"><img src="https://img.shields.io/discord/695645237418131507.svg?logo=discord"></a>
</p>
<p align="center">
<a href="#features">Recursos</a> •
<a href="#usage">Uso</a> •
<a href="#interactsh-client">Cliente Interactsh</a> •
<a href="#interactsh-server">Servidor Interactsh</a> •
<a href="#interactsh-integration">Integração Interactsh</a> •
<a href="https://discord.gg/projectdiscovery">Entrar no Discord</a>
</p>
---
**Interactsh** é uma ferramenta de código aberto para detectar interações fora de banda. É uma ferramenta projetada para detectar vulnerabilidades que causam interações externas.
# Recursos
- Interação DNS/HTTP(S)/SMTP(S)/LDAP
- Suporte a IPv4 e IPv6
- Cliente CLI / Web / Burp / ZAP / Docker
- Criptografia AES com zero registro
- TLS curinga automático baseado em ACME com renovação automática
- Entradas DNS para serviço de metadados em nuvem
- Controle dinâmico de resposta HTTP
- Servidor Interactsh auto-hospedado
- Suporte a múltiplos domínios **(auto-hospedado)**
- Listener NTLM/SMB/FTP(S)/RESPONDER **(auto-hospedado)**
- Interações curinga / protegidas **(auto-hospedado)**
- Hospedagem de índice / arquivo personalizável **(auto-hospedado)**
- Hospedagem de arquivo do cliente para payloads OOB de segundo estágio **(auto-hospedado)**
- Comprimento de payload personalizável **(auto-hospedado)**
- Certificado SSL personalizado **(auto-hospedado)**
# Cliente Interactsh
## Uso```sh
interactsh-client -h
```
Isso exibirá a ajuda para a ferramenta. Aqui estão todas as opções que ela suporta.```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
```
## Cliente CLI Interactsh
O cliente CLI Interactsh requer **go1.20+** para ser instalado com sucesso. Execute o seguinte comando para obter o repositório -```sh
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest
```
### Configurar PDCP_API_KEY com o cliente CLI do Interactsh
> Obtenha sua chave de API gratuita registrando-se em https://cloud.projectdiscovery.io
Você pode configurar sua PDCP_API_KEY de duas maneiras:
1. Para configurar a chave de API de forma interativa, execute o seguinte comando: ```sh
./interactsh-client -auth
```
2. Se preferir passar a chave de API diretamente, use a opção -auth seguida da sua chave de API: ```sh
./interactsh-client -auth=<pdcp-api-key>
````
### Execução Padrão
Isso irá gerar um payload único que pode ser usado para testes OOB com informações mínimas de interação na saída.```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
```
### Arquivo de Sessão
O `interactsh-client` com a flag `-sf, -session-file` pode ser usado para armazenar/ler as informações da sessão atual a partir de um arquivo definido pelo usuário, o que é útil para retomar a mesma sessão para consultar as interações mesmo depois que o cliente for interrompido ou fechado.```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
```
### Modo Verbose
Executando o `interactsh-client` em **modo verbose** (v) para ver toda a requisição e resposta, juntamente com um arquivo de saída para analisar posteriormente.```console
$ interactsh-client -v -o interactsh-logs.txt
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ 1.0.3
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing
[INF] c58bduhe008dovpvhvugcfemp9yyyyyyn.oast.pro
[c58bduhe008dovpvhvugcfemp9yyyyyyn] Received HTTPS interaction from 103.22.142.211 at 2021-09-26 18:08:07
------------
HTTP Request
------------
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 Response
-------------
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html; charset=utf-8
Server: oast.pro
<html><head></head><body>nyyyyyy9pmefcguvhvpvod800ehudb85c</body></html>
```
### Usando servidor auto-hospedado
Usando a flag `server`, o `interactsh-client` pode ser configurado para se conectar a um servidor Interactsh auto-hospedado; essa flag aceita um ou vários servidores separados por vírgula.```sh
interactsh-client -server hackwithautomation.com
```
Mantemos uma lista de servidores Interactsh padrão para usar com o `interactsh-client`:
- oast.pro
- oast.live
- oast.site
- oast.online
- oast.fun
- oast.me
Os servidores padrão estão sujeitos a alterações/rotação/indisponibilidade a qualquer momento, portanto recomendamos usar um servidor interactsh auto-hospedado se você estiver enfrentando problemas com o servidor padrão.
### Usando servidor auto-hospedado protegido
Usando a flag `token`, o `interactsh-client` pode se conectar a um servidor Interactsh auto-hospedado que está protegido com autenticação.```sh
interactsh-client -server hackwithautomation.com -token XXX
```
### Usando com Notify
Se você estiver longe do seu terminal, você pode usar o [notify](https://github.com/projectdiscovery/notify) para enviar uma notificação de interação em tempo real para qualquer plataforma suportada.```sh
interactsh-client | notify
```

## Cliente Web Interactsh
[Interactsh-web](https://github.com/projectdiscovery/interactsh-web) é um cliente web gratuito e de código aberto que exibe interações do Interactsh em um painel bem gerenciado no seu navegador. Ele usa o armazenamento local do navegador para armazenar e exibir todas as interações recebidas. Por padrão, o cliente web é configurado para usar **oast.fun** como servidor interactsh padrão, e também suporta outros servidores interactsh públicos/autenticados auto-hospedados.
Uma instância hospedada do cliente **interactsh-web** está disponível em https://app.interactsh.com
<img width="2032" alt="interactsh-web" src="https://assets.kitploit.com/production/public/readmes/402/9cef2252b8b90b021664a337626c9082f68e40f90a051dcafb18b497ceca8040.png">
## Cliente Docker Interactsh
Uma [imagem Docker](https://hub.docker.com/r/projectdiscovery/interactsh-client) também é fornecida com o cliente interactsh, pronta para execução e pode ser usada da seguinte forma:```sh
docker run projectdiscovery/interactsh-client:latest
```
| `--no-color` | Desativa a saída colorida |
| `--debug` | Ativa a saída de depuração |
| `--verbose` | Ativa a saída detalhada |
| `--version` | Exibe a versão do programa |
| `--help` | Exibe a mensagem de ajuda |
### Exemplos
```bash
# Verifica um único domínio
python3 cspm.py -d example.com
# Verifica vários domínios a partir de um arquivo
python3 cspm.py -f domains.txt
# Verifica com threads e saída JSON
python3 cspm.py -f domains.txt -t 20 -o json
# Verifica com um arquivo de saída personalizado
python3 cspm.py -d example.com -o json -O results.json
# Verifica com um proxy
python3 cspm.py -d example.com -p http://127.0.0.1:8080
# Verifica com um cookie personalizado
python3 cspm.py -d example.com -c "session=abc123"
# Verifica com um user agent personalizado
python3 cspm.py -d example.com -u "Mozilla/5.0"
# Verifica com um tempo limite personalizado
python3 cspm.py -d example.com -T 30
# Verifica com redirecionamentos desativados
python3 cspm.py -d example.com --no-redirect
# Verifica com verificação de certificado desativada
python3 cspm.py -d example.com --no-verify
# Verifica com saída silenciosa
python3 cspm.py -d example.com -q
# Verifica com saída colorida desativada
python3 cspm.py -d example.com --no-color
# Verifica com saída de depuração
python3 cspm.py -d example.com --debug
# Verifica com saída detalhada
python3 cspm.py -d example.com --verbose
# Exibe a versão do programa
python3 cspm.py --version
# Exibe a mensagem de ajuda
python3 cspm.py --help
```
### Saída
```json
{
"domain": "example.com",
"csp": {
"present": true,
"policy": "default-src 'self'; script-src 'self' 'unsafe-inline'",
"directives": {
"default-src": ["'self'"],
"script-src": ["'self'", "'unsafe-inline'"]
},
"issues": [
{
"directive": "script-src",
"issue": "unsafe-inline",
"severity": "high",
"description": "Permitir 'unsafe-inline' em script-src permite a execução de scripts inline, o que pode levar a ataques de XSS."
}
]
}
}
```
### Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo [LICENSE](https://github.com/projectdiscovery/interactsh/blob/main/LICENSE) para obter detalhes.
### Agradecimentos
- [OWASP](https://owasp.org/)
- [MDN Web Docs](https://developer.mozilla.org/)
- [Content Security Policy](https://content-security-policy.com/)```console
$ docker run projectdiscovery/interactsh-client:latest
_ __ __ __
(_)___ / /____ _________ ______/ /______/ /_
/ / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
/ / / / / /_/ __/ / / /_/ / /__/ /_(__ ) / / /
/_/_/ /_/\__/\___/_/ \__,_/\___/\__/____/_/ /_/ v1.0.0
projectdiscovery.io
[INF] Listing 1 payload for OOB Testing
[INF] c59e3crp82ke7bcnedq0cfjqdpeyyyyyn.oast.pro
```
## Extensão Original do Burp Suite
[interactsh-collaborator](https://github.com/wdahlenburg/interactsh-collaborator) é uma extensão interactsh original do Burp Suite desenvolvida e mantida por [@wdahlenb](https://twitter.com/wdahlenb)
- Baixe o arquivo JAR mais recente na página de [releases](https://github.com/wdahlenburg/interactsh-collaborator/releases).
- Abra o Burp Suite → Extender → Add → Java → Selecione o arquivo JAR → Next
- Uma nova aba chamada **Interactsh** aparecerá após a instalação bem-sucedida.
- Consulte o projeto [interactsh-collaborator](https://github.com/wdahlenburg/interactsh-collaborator) para mais informações.
<img width="2032" alt="burp" src="https://assets.kitploit.com/production/public/readmes/402/9f961c02a61a56f18dacc6de581d29ba26153d6f2083df109c98cba57ff7a4f0.png">
## Extensão Revisada do Burp Suite
[interactsh-collaborator-rev](https://github.com/TheArqsz/interactsh-collaborator-rev) é uma versão revisada da extensão interactsh original do Burp Suite e é desenvolvida e mantida por [@Arqsz](https://arqsz.net/)
- Baixe o arquivo JAR mais recente na página de [releases](https://github.com/TheArqsz/interactsh-collaborator-rev/releases).
- Abra o Burp Suite → Extender → Add → Java → Selecione o arquivo JAR → Next
- Uma nova aba chamada **Interactsh** aparecerá após a instalação bem-sucedida.
- Consulte o projeto [interactsh-collaborator-rev](https://github.com/TheArqsz/interactsh-collaborator-rev) para mais informações.
<img width="2032" alt="burp" src="https://raw.githubusercontent.com/TheArqsz/interactsh-collaborator-rev/master/assets/interactsh-extension.png?raw=true">
## Add-On do ZAP
O Interactsh pode ser usado com o ZAP através do [add-on OAST para ZAP](https://www.zaproxy.org/docs/desktop/addons/oast-support/). Com os recursos de script do ZAP, você pode criar regras de varredura out-of-band poderosas que aproveitam os recursos do Interactsh. Um modelo de script autônomo foi fornecido como exemplo (ele é adicionado automaticamente quando você instala o add-on).
- Instale o add-on OAST no [ZAP Marketplace](https://www.zaproxy.org/addons/).
- Vá em Tools → Options → OAST e selecione **Interactsh**.
- Configure [as opções](https://www.zaproxy.org/docs/desktop/addons/oast-support/services/interactsh/options/) para o cliente e clique em "New Payload" para gerar um novo payload.
- As interações OOB aparecerão na [Aba OAST](https://www.zaproxy.org/docs/desktop/addons/oast-support/tab/) e você pode clicar em qualquer uma delas para visualizar a requisição e a resposta completas.
- Você pode definir o Interactsh como padrão para o ActiveScan no menu `Options` > `OAST` > `General`.
- Ao marcar a opção `Use Permanent Database`, você pode revisar interações que ocorreram após o ZAP ter sido encerrado.
- Consulte a [documentação do add-on OAST](https://www.zaproxy.org/docs/desktop/addons/oast-support/) para mais informações.

*Interactsh no ZAP*
## Extensão Caido
[quickssrf](https://github.com/caido-community/quickssrf) é uma extensão Caido desenvolvida e mantida que permite usar o Interactsh de dentro do Caido Proxy.
- Baixe o arquivo zip mais recente na página de [releases](https://github.com/caido-community/quickssrf/releases/).
- Abra o Caido → Plugins → Install Package → Selecione o arquivo zip → Next
- Uma nova barra lateral chamada **QuickSSRF** aparecerá após a instalação bem-sucedida.
- Consulte o projeto [quickssrf](https://github.com/caido-community/quickssrf) para mais informações.

-------
# Servidor Interactsh
O servidor Interactsh executa múltiplos serviços e captura todas as requisições recebidas. Para hospedar uma instância do **interactsh-server**, você precisa configurar:
1. Nome de domínio com **host names** e **nameservers** personalizados.
2. Um droplet básico rodando 24/7 em segundo plano.
# Uso```sh
interactsh-server -h
```
Isso exibirá a ajuda para a ferramenta. Aqui estão todas as opções que ela suporta.```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
```
Estamos usando GoDaddy para o nome de domínio e um droplet da DigitalOcean para o servidor; um droplet básico de $5 deve ser suficiente para executar um servidor Interactsh auto-hospedado. Se você não estiver usando a GoDaddy, siga o processo do seu registrador para criar / atualizar entradas DNS.
<table>
<td>
## Configurando o domínio Interactsh
- Navegue até `https://dcc.godaddy.com/control/portfolio/{{domain}}/settings?subtab=hostnames`
- Add → Submit `ns1`, `ns2` com seu `SERVER_IP` como valor
<img width="1288" alt="gdd-hostname" src="https://assets.kitploit.com/production/public/readmes/402/efca5443025a0d6d2ac6e8103985dce9bad2be94e68a07a203571b83ebb0449d.png">
- Navegue até `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>
## Configurando o servidor Interactsh
Instale o `interactsh-server` na sua **VPS**```bash
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-server@latest
```
Considerando que a configuração do nome de domínio está **concluída**, execute o comando abaixo para iniciar o `interactsh-server````bash
interactsh-server -domain INTERACTSH_DOMAIN
```
A seguir está um exemplo de uma instalação e operação bem-sucedidas de um servidor auto-hospedado:

Uma série de flags necessárias são configuradas automaticamente para executar o `interactsh-server` com as configurações padrão. Por exemplo, as flags `ip` e `listen-ip` são definidas com o endereço IP público do sistema quando possível.
</td>
</table>
## Executando o 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
```
## Servidor Interactsh com Múltiplos Domínios
Vários nomes de domínio podem ser fornecidos da mesma forma que acima para executar o mesmo servidor interactsh em múltiplos **domínios configurados**.```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
```
## Servidor Interactsh com IPv4 e IPv6
O servidor Interactsh suporta endereços IPv4 e IPv6. Você pode especificar vários endereços IP usando a flag `-ip`, e o servidor responderá com os registros A (IPv4) ou AAAA (IPv6) apropriados nas respostas 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
```
O servidor detectará e categorizará automaticamente endereços IPv4 e IPv6, retornando registros DNS apropriados com base no tipo de consulta.
Quando o servidor selecionado não publica registros AAAA, o cliente imprime um aviso para que interações provenientes apenas de fontes IPv6 não sejam silenciosamente ignoradas e confundidas com a ausência de uma vulnerabilidade.
<table>
<td>
**Nota:**
Ao executar o servidor interactsh em **Cloud VM**s como Amazon EC2, Google Cloud Platform (GCP), é necessário atualizar as regras de segurança para permitir **"todo o tráfego"** para conexões de entrada.
</td>
</table>
Existem mais capacidades úteis suportadas pelo `interactsh-server` que não são habilitadas por padrão e destinam-se a ser usadas apenas por servidores **auto-hospedados**.
## Interactsh Server atrás de um proxy reverso
O `interactsh-server` pode exigir portas personalizadas para serviços se as portas padrão já estiverem ocupadas. Se for este o caso, mas as portas padrão ainda forem necessárias como parte do payload, é possível configurar o `interactsh-server` atrás de um proxy reverso, encaminhando portas de serviços baseados em HTTP/TCP/UDP através da diretiva de proxy `http/stream` (`proxy_pass`).
## Nginx
Assumindo que os serviços essenciais do `interactsh-server` são executados nas seguintes portas:
- HTTP: 8080/TCP
- HTTPS: 8440/TCP
- SMTP: 8025/TCP
- DNS: 8053/UDP
- DNS: 8053/TCP
O arquivo de configuração do nginx para encaminhar o tráfego seria semelhante ao seguinte:```conf
# http/https
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 {
# smtp
server {
listen 25;
proxy_pass interachsh.mysite.com:8025;
}
# dns
server {
listen 53;
proxy_pass interachsh.mysite.com:8053;
}
server {
listen 53 udp;
proxy_pass interachsh.mysite.com:8053;
}
}
```
**Domínios Configurados**```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
```
## Índice de Servidor Personalizado
A página de índice para o servidor http pode ser personalizada enquanto executa um servidor interactsh personalizado usando a flag `-http-index`.```bash
interactsh-server -d hackwithautomation.com -http-index banner.html
```
O placeholder `{DOMAIN}` também é suportado no arquivo de índice para substituição pelo nome de domínio do servidor.

## Hospedagem de Arquivos Estáticos
O servidor http do Interactsh opcionalmente habilita a hospedagem de arquivos para auxiliar em testes de segurança. Esta capacidade pode ser usada com um servidor auto-hospedado para servir arquivos para payloads comuns para **XSS, XXE, RCE** e outros ataques.
Para usar este recurso, a flag `-http-directory` pode ser usada, a qual aceita um diretório como entrada e os arquivos são servidos sob o diretório `/s/`.```bash
interactsh-server -d hackwithautomation.com -http-directory ./paylods
```

## Hospedagem de Arquivos pelo Cliente
Enquanto `-http-directory` hospeda arquivos fornecidos pelo operador globalmente, `-upload` permite que um **cliente** hospede arquivos
associados ao seu próprio ID de correlação. Isso é voltado para vulnerabilidades out-of-band de segundo estágio — XXE com uma
DTD externa, includes de XSLT, staging de JNDI — onde o alvo precisa buscar um arquivo de payload antes que o
callback seja disparado. Cada busca é registrada como uma interação, então o segundo estágio fica visível na saída do cliente.
> [!WARNING]
> `-upload` é destinado apenas a **servidores auto-hospedados**. Habilitá-lo em uma instância pública a transforma em
> hospedagem de arquivos anônima em um domínio com um certificado wildcard válido, o que é um ímã para staging de malware,
> e as blocklists agem sobre o domínio registrável — uma amostra abusiva afeta todos os usuários daquele
> domínio. Ele fica desativado por padrão e implica autenticação quando habilitado.
Inicie um servidor com uploads habilitados:```bash
interactsh-server -d hackwithautomation.com -upload -ftp
```
Em seguida, aponte um cliente para ele com um ou mais arquivos:```bash
interactsh-client -s https://hackwithautomation.com -t <token> -file evil.dtd
```
| `-s` | `--server` | `string` | `http://localhost:8080` | URL do servidor |
| `-t` | `--token` | `string` | | Token de autenticação |
| `-o` | `--output` | `string` | `json` | Formato de saída (`json`, `yaml`, `table`) |
| `-v` | `--verbose` | `bool` | `false` | Ativa a saída detalhada |
| `-q` | `--quiet` | `bool` | `false` | Suprime toda a saída |
| `-c` | `--config` | `string` | `~/.config/tool/config.yaml` | Caminho do arquivo de configuração |
| `-n` | `--no-color` | `bool` | `false` | Desativa a saída colorida |
| `-d` | `--debug` | `bool` | `false` | Ativa a saída de depuração |
| `-h` | `--help` | `bool` | `false` | Exibe a ajuda |
| `-V` | `--version` | `bool` | `false` | Exibe a versão |
### Exemplos
```bash
# Iniciar o servidor na porta padrão
tool server start
# Iniciar o servidor em uma porta específica
tool server start --port 9090
# Executar uma verificação com saída detalhada
tool scan --target example.com --verbose
# Exportar resultados para um arquivo JSON
tool scan --target example.com --output json > results.json
# Usar um arquivo de configuração personalizado
tool scan --config /path/to/config.yaml
```
### Arquivo de Configuração
O arquivo de configuração usa o formato YAML:
```yaml
server:
host: localhost
port: 8080
timeout: 30s
auth:
token: ""
enabled: false
output:
format: json
color: true
verbose: false
scan:
threads: 10
timeout: 60s
retries: 3
```
### Variáveis de Ambiente
| Variável | Descrição | Padrão |
|----------|-----------|--------|
| `TOOL_SERVER_URL` | URL do servidor | `http://localhost:8080` |
| `TOOL_TOKEN` | Token de autenticação | |
| `TOOL_OUTPUT` | Formato de saída | `json` |
| `TOOL_VERBOSE` | Ativa a saída detalhada | `false` |
| `TOOL_CONFIG` | Caminho do arquivo de configuração | `~/.config/tool/config.yaml` |
| `TOOL_NO_COLOR` | Desativa a saída colorida | `false` |
| `TOOL_DEBUG` | Ativa a saída de depuração | `false` |
### Códigos de Saída
| Código | Descrição |
|--------|-----------|
| `0` | Sucesso |
| `1` | Erro geral |
| `2` | Uso incorreto do comando |
| `3` | Erro de configuração |
| `4` | Erro de autenticação |
| `5` | Erro de rede |
| `6` | Erro de tempo limite |
| `7` | Permissão negada |
| `8` | Recurso não encontrado |
| `9` | Recurso já existe |
| `10` | Operação cancelada |
### Solução de Problemas
#### O servidor não inicia
Verifique se a porta já está em uso:
```bash
# Verificar se a porta está em uso
lsof -i :8080
# Ou usar netstat
netstat -tulpn | grep 8080
```
#### Erros de autenticação
Verifique se o token está configurado corretamente:
```bash
# Verificar o token atual
tool config get auth.token
# Definir um novo token
tool config set auth.token "your-token-here"
```
#### Problemas de conexão
Verifique a conectividade de rede:
```bash
# Testar a conexão com o servidor
curl -v http://localhost:8080/health
# Verificar as configurações de proxy
echo $HTTP_PROXY
echo $HTTPS_PROXY
```
### Contribuindo
1. Faça um fork do repositório
2. Crie uma branch de funcionalidade (`git checkout -b feature/amazing-feature`)
3. Faça commit das suas alterações (`git commit -m 'Add some amazing feature'`)
4. Faça push para a branch (`git push origin feature/amazing-feature`)
5. Abra um Pull Request
### Licença
Este projeto está licenciado sob a Licença MIT - consulte o arquivo [LICENSE](https://github.com/projectdiscovery/interactsh/blob/main/LICENSE) para obter detalhes.
### Agradecimentos
- [Contribuidor 1](https://github.com/contributor1)
- [Contribuidor 2](https://github.com/contributor2)
- [Contribuidor 3](https://github.com/contributor3)
### Suporte
- Documentação: [https://docs.example.com](https://docs.example.com)
- Issues: [https://github.com/user/repo/issues](https://github.com/user/repo/issues)
- Discord: [https://discord.gg/invite](https://discord.gg/invite)
---
**Aviso Legal**: Esta ferramenta é destinada apenas para testes de segurança autorizados e fins educacionais. Os usuários são responsáveis por garantir que têm permissão para testar os sistemas de destino. Os autores não se responsabilizam por qualquer uso indevido ou danos causados por esta ferramenta.```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
```
Os arquivos são servidos via HTTP(S) e também via FTP(S) quando `-ftp` está habilitado. As respostas são sempre
`Content-Type: application/octet-stream` com `Content-Disposition: attachment`, de modo que o servidor nunca
renderiza HTML ou SVG fornecido pelo cliente em seu próprio domínio; consumidores de DTD, XSLT e JNDI ignoram o content type,
então isso não custa nada para o uso pretendido.
Quando o alvo busca o arquivo, a busca chega ao cliente como qualquer outra interação — que é
o ponto: é a evidência de que o primeiro estágio do payload realmente executou. O corpo da resposta
é substituído por um digest para que um payload grande não seja copiado de volta para o fluxo de interações a cada
busca:```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]
```
As duas contagens são "delivered of hosted": uma busca condicional respondida com `304` registra `0 of 144`, e uma com range registra os bytes que o range realmente transportou, de modo que o registro não pode alegar uma entrega que não aconteceu.
Qualquer callback de segundo estágio que o payload então dispare chega como uma interação adicional no mesmo correlation ID, de modo que ambos os estágios chegam a um único cliente.
Um cliente solicitado a hospedar arquivos contra um servidor que não foi iniciado com `-upload` informa isso e para, em vez de continuar silenciosamente sem o payload:```console
$ interactsh-client -s https://hackwithautomation.com -t <token> -file evil.dtd
[FTL] Server https://hackwithautomation.com does not accept file uploads; it must be started with -upload
```
O servidor que falhou é nomeado porque o cliente se registra com apenas um dos servidores em `-s`. Quando vários são listados, também indica como a escolha foi feita, já que o resultado pode diferir entre execuções:```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)
```
Opções do lado do servidor:
| Flag | Padrão | Descrição |
| --- | --- | --- |
| `-upload` | desativado | ativa o upload e hospedagem de arquivos do cliente |
| `-ud, -upload-directory` | diretório temporário | diretório a partir do qual hospedar os arquivos enviados; o interactsh é dono de `.interactsh-user-uploads` dentro dele |
| `-umfs, -upload-max-file-size` | `1mb` | tamanho máximo de um único arquivo |
| `-umf, -upload-max-files` | `5` | máximo de arquivos por sessão |
| `-umts, -upload-max-total-size` | `1gb` | máximo total de bytes em todas as sessões |
| `-ut, -upload-ttl` | `24h` | tempo de vida máximo dos arquivos enviados |
Os arquivos são removidos quando o cliente se desregistra, quando sua sessão sai do cache e, em qualquer caso, assim que
`-upload-ttl` tiver decorrido desde o último upload daquela sessão.
Coisas que vale a pena saber antes de ativá-lo:
- **Os arquivos hospedados são legíveis por qualquer pessoa que descubra o correlation ID.** Esse ID é deliberadamente vazado
para o alvo — ele aparece em toda consulta DNS que o resolver do alvo faz, e portanto em seus logs DNS, seu
WAF e agregadores de DNS passivo. Um alvo pode buscar seu payload para fingerprintar seu ferramental, e
essa busca aparecerá no seu fluxo de interações. Não envie nada que você se importaria que um alvo
lesse.
- Os uploads são autenticados com o correlation ID e a chave secreta da sessão, então apenas o cliente que
possui uma sessão pode anexar arquivos a ela.
- O cliente envia para o **único servidor com o qual se registrou**. Se `-s` listar vários, os arquivos são hospedados
apenas no eleito; suas URLs de payload são as que são impressas. **Passe um único servidor com `-file`:**
o cliente escolhe um aleatoriamente de `-s` e não consegue levar em conta o suporte a upload, já que só
descobre isso após se registrar — então uma lista misturando servidores com e sem upload falha aleatoriamente.
- `-upload` não pode ser combinado com `-redis-url`. Os bytes hospedados são gravados no sistema de arquivos local
de uma única instância, então com um backend de armazenamento compartilhado entre instâncias as outras instâncias
anunciariam arquivos que não possuem. O servidor se recusa a iniciar com essa combinação: ```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
```
- Uploads se recusam a trafegar por HTTP em texto simples para um servidor remoto, já que a requisição carrega tanto o
arquivo quanto a chave secreta da sessão. Use uma URL de servidor `https://`.
- O diretório de upload padrão é um diretório temporário, que em muitas distribuições Linux é
respaldado por memória. Defina `-upload-directory` explicitamente em uma implantação real.
- **O Interactsh cria e remove um diretório dentro da raiz de upload.** Os arquivos hospedados são organizados como
`<root>/.interactsh-user-uploads/<correlation-id>/<filename>`, e tudo sob
`.interactsh-user-uploads` é excluído quando sua sessão termina, quando `-upload-ttl` expira, e na
inicialização — os metadados de upload vivem apenas na memória, então nada ali sobrevive a um reinício. O restante da
raiz nunca é tocado, o que torna seguro apontar `-upload-directory` para um diretório que você
já usa, ou compartilhá-lo com `-ftp-dir`.
- Com `-ftp` e sem `-ftp-dir`, a raiz do FTP é definida como a raiz de upload para que os arquivos hospedados sejam
acessíveis via FTP sem configuração extra. Se você definir ambas as flags, elas devem nomear o mesmo
diretório, caso contrário o FTP não consegue ver os uploads: o servidor relata a incompatibilidade na inicialização e para
de oferecer URLs `ftp://` aos clientes, então a hospedagem degrada para apenas HTTP em vez de entregar URLs FTP
que não resolvem para nada. O diretório de uploads fica oculto das listagens FTP — `LIST /` mostra seu próprio conteúdo mas
não `.interactsh-user-uploads`, e esse diretório se recusa a listar seu próprio conteúdo, então um cliente
anônimo não pode enumerar os correlation IDs que atualmente têm arquivos hospedados. O `RETR` de um caminho conhecido
funciona, que é no que a URL do payload se baseia.
## Resposta HTTP Dinâmica
O servidor http do Interactsh opcionalmente permite responder com resposta HTTP dinâmica usando parâmetros de consulta. Este recurso pode ser habilitado usando a flag `-dr` ou `-dynamic-resp`.
Os seguintes nomes de parâmetros de consulta são suportados - `body`, `header`, `status` e `delay`. Múltiplos parâmetros `header` podem ser especificados para definir múltiplos cabeçalhos.
- **body** (corpo da resposta)
- **header** (cabeçalho da resposta)
- **status** (código de status da resposta)
- **delay** (tempo de resposta)```console
$ curl -i 'https://hackwithautomation.com/x?status=307&body=this+is+example+body&delay=1&header=header1:value1&header=header1:value12'
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
```
> **Nota**:
- O recurso de Resposta HTTP Dinâmica está desativado por padrão.
- Por design, este recurso permite que qualquer pessoa execute código do lado do cliente / redirecionamentos usando seu domínio / servidor interactsh
- O uso desta opção com um domínio isolado é recomendado para **evitar impacto de segurança** nos root/subdomínios associados.
## Interação Wildcard
Para habilitar a interação `wildcard` para o domínio Interactsh configurado, a flag `wildcard` pode ser usada com proteção de autenticação implícita via a flag `auth` se a flag `token` for omitida.```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
```
No modo wildcard, cada cliente conectado recebe independentemente todas as interações para o domínio compartilhado. O servidor mantém um buffer de interações recentes para que vários clientes possam fazer polling sem perder dados. Por padrão, o buffer armazena até **10.000** interações por chave compartilhada. Isso pode ser ajustado através da variável de ambiente `INTERACTSH_MAX_SHARED_INTERACTIONS`:```console
$ export INTERACTSH_MAX_SHARED_INTERACTIONS=50000
$ interactsh-server -domain hackwithautomation.com -wildcard
```
## Interação LDAP
Por padrão, o servidor Interactsh suporta interação LDAP para o payload incluído na [consulta de pesquisa](https://ldapwiki.com/wiki/LDAP%20Query%20Examples), adicionalmente a flag `ldap` pode ser usada para registro completo.```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
```
## Comprimento de Payload Personalizado
O comprimento do payload do interactsh é **33** por padrão, consistindo em **20** (correlation-id único) + **13** (token nonce), que pode ser personalizado usando as flags `cidl` e `cidn` para torná-lo mais curto quando necessário com um servidor interacsh auto-hospedado.```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
```
**Nota:** É importante e obrigatório usar o mesmo comprimento em ambos os lados (**cliente** e **servidor**), caso contrário a correlação não funcionará.```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
```
## Certificado SSL Personalizado
A biblioteca [certmagic](https://github.com/caddyserver/certmagic) é usada por padrão pelo servidor interactsh para produzir certificados wildcard para o domínio solicitado de forma automática. Para usar seu próprio certificado SSL com um servidor interactsh auto-hospedado, as flags `cert` e `privkey` podem ser usadas para fornecer os arquivos de certificado necessários.
**Nota:** Para utilizar toda a funcionalidade do protocolo SSL, um certificado wildcard é obrigatório.```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
```
## Protocolos Suportados
### FTP
O suporte a FTP pode ser ativado com a flag `-ftp` e é recomendado apenas para instâncias auto-hospedadas. O agente FTP simula um agente de servidor FTP totalmente funcional com autenticação que captura autenticações em cada operação de arquivo. Por padrão, o agente escuta FTP em texto claro na porta 21 (isso pode ser alterado com a flag `-ftp-port`) e FTP com TLS na porta 990 (isso pode ser alterado com a flag `-ftps-port`) e lista em modo somente leitura o conteúdo do diretório temporário padrão do sistema operacional (personalizável com a opção `-ftp-dir`). O mecanismo FTP usa o certificado e a chave privada personalizados, se fornecidos, ou extrairá o certificado e a chave privada do primeiro domínio acme, se fornecido.
Exemplo de inicialização do daemon FTP e captura de uma interação de login:```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"}
```
## Protocolos Externos Suportados
### SMB
A flag `-smb` habilita um servidor de captura de hash SMB2 NetNTLMv2 em processo (apenas para instâncias auto-hospedadas). É implementado em Go puro sobre o [goimpacket](https://github.com/Mzack9999/goimpacket) e escuta na porta `445`, a menos que seja alterada pela flag `-smb-port`. Nenhuma dependência de Python, impacket ou docker é necessária.
Os hashes capturados são armazenados como interações `smb` no formato padrão hashcat NetNTLMv2 (`-m 5600`):```
USER::DOMAIN:serverChallenge:NTProofStr:NTLMv2Blob
```
Exemplo de ativação do servidor samba:```console
$ sudo interactsh-server -smb -skip-acme -debug -domain localhost
```
### Responder
A flag `-responder` habilita um servidor de captura de hash NTLMv2 equivalente ao Responder, também suportado pelo [goimpacket](https://github.com/Mzack9999/goimpacket). Ele vincula as portas TCP compatíveis com SMB (`139` e o valor de `-smb-port`, padrão `445`) e armazena qualquer autenticação capturada como uma interação `responder` no mesmo formato hashcat NetNTLMv2 descrito acima. Nenhuma dependência de docker ou Python é necessária.```bash
sudo interactsh-server -responder -d localhost
```
> Nota: os poisoners de broadcast LLMNR / NBT-NS / MDNS legados que acompanham o projeto Python Responder **não** estão incluídos. São técnicas do lado da LAN que estão fora do escopo de um servidor de callback OOB acessível pela internet pública, e não fazem parte da biblioteca goimpacket.
## Integração com Interactsh
### Usar como biblioteca
Os [exemplos](https://github.com/projectdiscovery/interactsh/blob/main/examples) usam a biblioteca cliente interactsh para obter interações externas para uma URL gerada, fazendo uma requisição http à URL, e para hospedar um arquivo na mesma sessão para verificação de segundo estágio.
A hospedagem de arquivos é uma capacidade opcional do servidor, então um consumidor da biblioteca negocia em vez de assumir: `Capabilities()` reporta o que o servidor anunciou no registro, `UploadFiles` retorna `ErrUploadUnsupported` quando um servidor não pode hospedar arquivos e `ErrUploadNotAdvertised` quando é anterior ao recurso, e `FileURL`/`FTPFileURL` compõem as URLs que um alvo deve buscar. Os servidores públicos `oast.*` não oferecem hospedagem, então o exemplo a ignora em vez de falhar.
### Nuclei - OAST
O scanner de vulnerabilidades [Nuclei](https://github.com/projectdiscovery/nuclei) utiliza o **Interactsh** para geração automatizada de payloads e detecção de vulnerabilidades de segurança baseadas em out of band.
Consulte o blog de integração [Nuclei + Interactsh](https://blog.projectdiscovery.io/nuclei-interactsh-integration/) e o [documento guia](https://nuclei.projectdiscovery.io/templating-guide/interactsh/) para mais informações.
# Cloud Metadata
O servidor Interactsh suporta registros DNS para serviços de metadados de nuvem, o que é útil para testar vulnerabilidades relacionadas a SSRF.
Serviços de metadados atualmente suportados:
- [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)
Exemplo:
* **aws.oast.fun** aponta para 169.254.169.254
* **alibaba.oast.fun** aponta para 100.100.100.200
-----
### Agradecimentos
O Interactsh é inspirado no [Burp Collaborator](https://portswigger.net/burp/documentation/collaborator).
### Licença
O Interactsh é distribuído sob a [Licença MIT](https://github.com/projectdiscovery/interactsh/blob/master/LICENSE.md) e feito com 🖤 pela equipe [projectdiscovery](https://projectdiscovery.io).