
Ein Server und eine Client-Bibliothek zum Sammeln von OOB-Interaktionen
<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">Ein Server und eine Client-Bibliothek zum Sammeln von OOB-Interaktionen</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">Funktionen</a> •
<a href="#usage">Verwendung</a> •
<a href="#interactsh-client">Interactsh Client</a> •
<a href="#interactsh-server">Interactsh Server</a> •
<a href="#interactsh-integration">Interactsh Integration</a> •
<a href="https://discord.gg/projectdiscovery">Discord beitreten</a>
</p>
---
**Interactsh** ist ein Open-Source-Tool zur Erkennung von Out-of-Band-Interaktionen. Es ist ein Tool, das entwickelt wurde, um Schwachstellen zu erkennen, die externe Interaktionen verursachen.
# Funktionen
- DNS/HTTP(S)/SMTP(S)/LDAP-Interaktion
- IPv4- und IPv6-Unterstützung
- CLI / Web / Burp / ZAP / Docker Client
- AES-Verschlüsselung ohne Protokollierung
- Automatisches ACME-basiertes Wildcard-TLS mit automatischer Erneuerung
- DNS-Einträge für den Cloud-Metadata-Dienst
- Dynamische HTTP-Antwortsteuerung
- Selbstgehosteter Interactsh-Server
- Unterstützung mehrerer Domains **(selbstgehostet)**
- NTLM/SMB/FTP(S)/RESPONDER-Listener **(selbstgehostet)**
- Wildcard- / geschützte Interaktionen **(selbstgehostet)**
- Anpassbarer Index / Dateihosting **(selbstgehostet)**
- Client-Dateihosting für OOB-Payloads der zweiten Stufe **(selbstgehostet)**
- Anpassbare Payload-Länge **(selbstgehostet)**
- Anpassbares SSL-Zertifikat **(selbstgehostet)**
# Interactsh Client
## Verwendung```sh
interactsh-client -h
```
Dies zeigt die Hilfe für das Tool an. Hier sind alle unterstützten Schalter.```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-Client
Der Interactsh-CLI-Client erfordert **go1.20+**, um erfolgreich installiert zu werden. Führen Sie den folgenden Befehl aus, um das Repository zu erhalten –```sh
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-client@latest
```
### PDCP_API_KEY mit dem Interactsh CLI-Client konfigurieren
> Holen Sie sich Ihren kostenlosen API-Schlüssel, indem Sie sich unter https://cloud.projectdiscovery.io registrieren
Sie können Ihren PDCP_API_KEY auf zwei Arten konfigurieren:
1. Um den API-Schlüssel interaktiv zu konfigurieren, führen Sie den folgenden Befehl aus: ```sh
./interactsh-client -auth
```
2. Wenn Sie den API-Schlüssel lieber direkt übergeben möchten, verwenden Sie die Option -auth gefolgt von Ihrem API-Schlüssel: ```sh
./interactsh-client -auth=<pdcp-api-key>
````
### Standardausführung
Dies erzeugt eine eindeutige Payload, die für OOB-Tests mit minimalen Interaktionsinformationen in der Ausgabe verwendet werden kann.```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
```
### Sitzungsdatei
`interactsh-client` mit dem `-sf, -session-file`-Flag kann verwendet werden, um die aktuellen Sitzungsinformationen in einer benutzerdefinierten Datei zu speichern/auszulesen, was nützlich ist, um dieselbe Sitzung fortzusetzen und die Interaktionen abzufragen, selbst nachdem der Client beendet oder geschlossen wurde.```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
```
### Ausführlicher Modus
Führen Sie den `interactsh-client` im **ausführlichen Modus** (v) aus, um die gesamte Anfrage und Antwort zu sehen, zusammen mit einer Ausgabedatei zur späteren Analyse.```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>
```
### Verwendung eines selbst gehosteten Servers
Mit dem `server`-Flag kann `interactsh-client` so konfiguriert werden, dass er sich mit einem selbst gehosteten Interactsh-Server verbindet. Dieses Flag akzeptiert einen einzelnen oder mehrere durch Komma getrennte Server.```sh
interactsh-client -server hackwithautomation.com
```
Wir führen eine Liste von Standard-Interactsh-Servern, die mit `interactsh-client` verwendet werden können:
- oast.pro
- oast.live
- oast.site
- oast.online
- oast.fun
- oast.me
Standard-Server können jederzeit geändert/rotiert/abgeschaltet werden. Daher empfehlen wir die Verwendung eines selbst gehosteten Interactsh-Servers, wenn Probleme mit dem Standard-Server auftreten.
### Verwendung eines geschützten selbst gehosteten Servers
Mit dem `token`-Flag kann `interactsh-client` eine Verbindung zu einem selbst gehosteten Interactsh-Server herstellen, der durch Authentifizierung geschützt ist.```sh
interactsh-client -server hackwithautomation.com -token XXX
```
### Verwendung mit Notify
Wenn Sie nicht an Ihrem Terminal sind, können Sie [notify](https://github.com/projectdiscovery/notify) verwenden, um eine Echtzeit-Interaktionsbenachrichtigung an jede unterstützte Plattform zu senden.```sh
interactsh-client | notify
```

## Interactsh Web Client
[Interactsh-web](https://github.com/projectdiscovery/interactsh-web) ist ein kostenloser und quelloffener Web-Client, der Interactsh-Interaktionen in einem gut verwalteten Dashboard in Ihrem Browser anzeigt. Er verwendet den lokalen Speicher des Browsers, um alle eingehenden Interaktionen zu speichern und anzuzeigen. Standardmäßig ist der Web-Client so konfiguriert, dass **oast.fun** als Standard-Interactsh-Server verwendet wird, und unterstützt auch andere selbst gehostete öffentliche/authentifizierte Interactsh-Server.
Eine gehostete Instanz des **interactsh-web**-Clients ist unter https://app.interactsh.com verfügbar
<img width="2032" alt="interactsh-web" src="https://assets.kitploit.com/production/public/readmes/402/9cef2252b8b90b021664a337626c9082f68e40f90a051dcafb18b497ceca8040.png">
## Interactsh Docker Client
Ein [Docker-Image](https://hub.docker.com/r/projectdiscovery/interactsh-client) wird ebenfalls mit dem Interactsh-Client bereitgestellt, das sofort einsatzbereit ist und auf folgende Weise verwendet werden kann:```sh
docker run projectdiscovery/interactsh-client:latest
```
| `-s` | `--server` | `SERVER` | `http://localhost:8080` | Server URL |
| `-t` | `--token` | `TOKEN` | – | API token |
| `-o` | `--output` | `FILE` | – | Output file |
| `-v` | `--verbose` | – | `false` | Enable verbose output |
| `-q` | `--quiet` | – | `false` | Suppress non-essential output |
| `-f` | `--format` | `FORMAT` | `json` | Output format (json, yaml, table) |
| `-c` | `--config` | `FILE` | `~/.config/tool/config.yaml` | Config file path |
| `-n` | `--no-color` | – | `false` | Disable colored output |
| `-d` | `--debug` | – | `false` | Enable debug mode |
| `-h` | `--help` | – | – | Show help message |
| `-V` | `--version` | – | – | Show version |
### Examples
```bash
# Basic usage
tool scan --target example.com
# With authentication
tool scan --target example.com --token $API_TOKEN
# Output to file
tool scan --target example.com --output results.json
# Verbose mode with custom config
tool scan --target example.com --verbose --config ./config.yaml
```
### Configuration File
The configuration file uses YAML format:
```yaml
server: http://localhost:8080
token: your-api-token
output: results.json
format: json
verbose: false
timeout: 30
retries: 3
```
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `TOOL_SERVER` | Server URL | `http://localhost:8080` |
| `TOOL_TOKEN` | API token | – |
| `TOOL_CONFIG` | Config file path | `~/.config/tool/config.yaml` |
| `TOOL_DEBUG` | Enable debug mode | `false` |
| `TOOL_TIMEOUT` | Request timeout in seconds | `30` |
### Exit Codes
| Code | Description |
|------|-------------|
| `0` | Success |
| `1` | General error |
| `2` | Invalid arguments |
| `3` | Authentication failed |
| `4` | Network error |
| `5` | Target not found |
### Troubleshooting
**Connection refused**
If you see a "connection refused" error, ensure the server is running:
```bash
# Check if server is running
curl http://localhost:8080/health
# Start the server
tool server start
```
**Authentication failed**
Verify your API token is correct:
```bash
# Test authentication
tool auth test --token $API_TOKEN
```
**Timeout errors**
Increase the timeout value:
```bash
tool scan --target example.com --timeout 60
```
### Contributing
We welcome contributions! Please follow these guidelines:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
### License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/projectdiscovery/interactsh/blob/main/LICENSE) file for details.
### Acknowledgments
- Thanks to all contributors
- Inspired by similar projects
- Built with open-source tools```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 Original-Erweiterung
[interactsh-collaborator](https://github.com/wdahlenburg/interactsh-collaborator) ist eine originale Burp Suite interactsh-Erweiterung, die von [@wdahlenb](https://twitter.com/wdahlenb) entwickelt und gepflegt wird
- Laden Sie die neueste JAR-Datei von der [releases](https://github.com/wdahlenburg/interactsh-collaborator/releases)-Seite herunter.
- Öffnen Sie Burp Suite → Extender → Add → Java → JAR-Datei auswählen → Next
- Ein neuer Tab namens **Interactsh** erscheint nach erfolgreicher Installation.
- Weitere Informationen finden Sie im Projekt [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 Überarbeitete Erweiterung
[interactsh-collaborator-rev](https://github.com/TheArqsz/interactsh-collaborator-rev) ist eine überarbeitete Version der originalen Burp Suite interactsh-Erweiterung und wird von [@Arqsz](https://arqsz.net/) entwickelt und gepflegt
- Laden Sie die neueste JAR-Datei von der [releases](https://github.com/TheArqsz/interactsh-collaborator-rev/releases)-Seite herunter.
- Öffnen Sie Burp Suite → Extender → Add → Java → JAR-Datei auswählen → Next
- Ein neuer Tab namens **Interactsh** erscheint nach erfolgreicher Installation.
- Weitere Informationen finden Sie im Projekt [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 Add-On
Interactsh kann mit ZAP über das [OAST add-on for ZAP](https://www.zaproxy.org/docs/desktop/addons/oast-support/) verwendet werden. Mit den Skripting-Fähigkeiten von ZAP können Sie leistungsstarke Out-of-Band-Scan-Regeln erstellen, die die Funktionen von Interactsh nutzen. Eine eigenständige Skriptvorlage wurde als Beispiel bereitgestellt (sie wird automatisch hinzugefügt, wenn Sie das Add-On installieren).
- Installieren Sie das OAST-Add-On aus dem [ZAP Marketplace](https://www.zaproxy.org/addons/).
- Gehen Sie zu Tools → Options → OAST und wählen Sie **Interactsh**.
- Konfigurieren Sie [die Optionen](https://www.zaproxy.org/docs/desktop/addons/oast-support/services/interactsh/options/) für den Client und klicken Sie auf "New Payload", um eine neue Payload zu generieren.
- OOB-Interaktionen erscheinen im [OAST Tab](https://www.zaproxy.org/docs/desktop/addons/oast-support/tab/) und Sie können auf eine davon klicken, um die vollständige Anfrage und Antwort anzuzeigen.
- Sie können Interactsh als Standard für ActiveScan im Menü `Options` > `OAST` > `General` festlegen.
- Wenn Sie die Option `Use Permanent Database` aktivieren, können Sie Interaktionen überprüfen, die nach der Beendigung von ZAP aufgetreten sind.
- Weitere Informationen finden Sie in der [OAST add-on documentation](https://www.zaproxy.org/docs/desktop/addons/oast-support/).

*Interactsh in ZAP*
## Caido-Erweiterung
[quickssrf](https://github.com/caido-community/quickssrf) ist eine Caido-Erweiterung, die entwickelt und gepflegt wird und die Verwendung von Interactsh innerhalb des Caido Proxy ermöglicht.
- Laden Sie die neueste Zip-Datei von der [releases](https://github.com/caido-community/quickssrf/releases/)-Seite herunter.
- Öffnen Sie Caido → Plugins → Install Package → Zip-Datei auswählen → Next
- Eine neue Seitenleiste namens **QuickSSRF** erscheint nach erfolgreicher Installation.
- Weitere Informationen finden Sie im Projekt [quickssrf](https://github.com/caido-community/quickssrf).

-------
# Interactsh Server
Der Interactsh-Server betreibt mehrere Dienste und erfasst alle eingehenden Anfragen. Um eine Instanz von **interactsh-server** zu hosten, müssen Sie Folgendes einrichten:
1. Domainname mit benutzerdefinierten **Hostnamen** und **Nameservern**.
2. Ein einfaches Droplet, das 24/7 im Hintergrund läuft.
# Verwendung```sh
interactsh-server -h
```
Dies zeigt die Hilfe für das Tool an. Hier sind alle unterstützten Schalter.```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
```
Wir verwenden GoDaddy für den Domainnamen und ein DigitalOcean-Droplet für den Server. Ein einfaches 5-Dollar-Droplet sollte ausreichen, um einen selbst gehosteten Interactsh-Server zu betreiben. Wenn Sie GoDaddy nicht verwenden, folgen Sie dem Verfahren Ihres Registrars zum Erstellen/Aktualisieren von DNS-Einträgen.
<table>
<td>
## Konfigurieren der Interactsh-Domain
- Navigieren Sie zu `https://dcc.godaddy.com/control/portfolio/{{domain}}/settings?subtab=hostnames`
- Hinzufügen → Senden Sie `ns1`, `ns2` mit Ihrer `SERVER_IP` als Wert
<img width="1288" alt="gdd-hostname" src="https://assets.kitploit.com/production/public/readmes/402/efca5443025a0d6d2ac6e8103985dce9bad2be94e68a07a203571b83ebb0449d.png">
- Navigieren Sie zu `https://dcc.godaddy.com/control/dnsmanagement?domainName={{domain}}&subtab=nameservers`
- Nameserver ändern → Ich verwende meine eigenen Nameserver → Senden Sie `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>
## Konfigurieren des Interactsh-Servers
Installieren Sie `interactsh-server` auf Ihrem **VPS**```bash
go install -v github.com/projectdiscovery/interactsh/cmd/interactsh-server@latest
```
Da die Domainnamen-Einrichtung **abgeschlossen** ist, führen Sie den folgenden Befehl aus, um `interactsh-server` zu starten```bash
interactsh-server -domain INTERACTSH_DOMAIN
```
Following is an example of a successful installation and operation of a self-hosted server:

A number of needed flags are configured automatically to run `interactsh-server` with default settings. For example, `ip` and `listen-ip` flags set with the Public IP address of the system when possible.
</td>
</table>
## Running 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-Server mit mehreren Domains
Mehrere Domainnamen können auf dieselbe Weise wie oben angegeben werden, um denselben Interactsh-Server über mehrere **konfigurierte Domains** hinweg zu betreiben.```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 mit IPv4 und IPv6
Der Interactsh-Server unterstützt sowohl IPv4- als auch IPv6-Adressen. Sie können mehrere IP-Adressen mit dem `-ip`-Flag angeben, und der Server antwortet mit den entsprechenden A- (IPv4) oder AAAA- (IPv6) Records in DNS-Antworten.```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
```
Der Server erkennt und kategorisiert IPv4- und IPv6-Adressen automatisch und gibt je nach Abfragetyp entsprechende DNS-Einträge zurück.
Wenn der ausgewählte Server keine AAAA-Einträge veröffentlicht, gibt der Client eine Warnung aus, damit Interaktionen von reinen IPv6-Quellen nicht stillschweigend übersehen und fälschlicherweise als Fehlen einer Schwachstelle interpretiert werden.
<table>
<td>
**Hinweis:**
Beim Betrieb des interactsh-Servers auf **Cloud-VM**s wie Amazon EC2, Google Cloud Platform (GCP) ist es erforderlich, die Sicherheitsregeln zu aktualisieren, um **"all traffic"** für eingehende Verbindungen zuzulassen.
</td>
</table>
Es gibt weitere nützliche Funktionen, die von `interactsh-server` unterstützt werden, aber standardmäßig nicht aktiviert sind und nur für **selbst gehostete** Server vorgesehen sind.
## Interactsh-Server hinter einem Reverse-Proxy
`interactsh-server` benötigt möglicherweise benutzerdefinierte Ports für Dienste, wenn die Standardports bereits belegt sind. Wenn dies der Fall ist, aber dennoch Standardports als Teil der Payload erforderlich sind, ist es möglich, `interactsh-server` hinter einem Reverse-Proxy zu konfigurieren, indem HTTP/TCP/UDP-basierte Dienste über die `http/stream`-Proxy-Direktive (`proxy_pass`) weitergeleitet werden.
## Nginx
Angenommen, die wesentlichen Dienste von `interactsh-server` laufen auf den folgenden Ports:
- HTTP: 8080/TCP
- HTTPS: 8440/TCP
- SMTP: 8025/TCP
- DNS: 8053/UDP
- DNS: 8053/TCP
Die nginx-Konfigurationsdatei zur Weiterleitung des Datenverkehrs würde wie folgt aussehen:```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;
}
}
```
**Konfigurierte Domains**```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
```
## Benutzerdefinierter Server-Index
Die Indexseite für den HTTP-Server kann während der Ausführung eines benutzerdefinierten interactsh-Servers mit dem Flag `-http-index` angepasst werden.```bash
interactsh-server -d hackwithautomation.com -http-index banner.html
```
`{DOMAIN}` Platzhalter wird auch in der Indexdatei unterstützt, um durch den Server-Domainnamen ersetzt zu werden.

## Statisches Datei-Hosting
Der Interactsh-HTTP-Server ermöglicht optional Datei-Hosting, um bei Sicherheitstests zu helfen. Diese Funktion kann mit einem selbst gehosteten Server verwendet werden, um Dateien für gängige Payloads für **XSS, XXE, RCE** und andere Angriffe bereitzustellen.
Um diese Funktion zu nutzen, kann das Flag `-http-directory` verwendet werden, das ein Verzeichnis als Eingabe akzeptiert, und Dateien werden unter dem Verzeichnis `/s/` bereitgestellt.```bash
interactsh-server -d hackwithautomation.com -http-directory ./paylods
```

## Client-Datei-Hosting
Während `-http-directory` operatorseitig bereitgestellte Dateien global hostet, ermöglicht `-upload` einem **Client**, Dateien unter seiner eigenen Correlation-ID zu hosten. Dies ist auf Out-of-Band-Schwachstellen in der zweiten Stufe ausgerichtet — XXE mit einer externen DTD, XSLT-Includes, JNDI-Staging — bei denen das Ziel eine Payload-Datei abrufen muss, bevor der Callback ausgelöst wird. Jeder Abruf wird als Interaktion aufgezeichnet, sodass die zweite Stufe in der Client-Ausgabe sichtbar ist.
> [!WARNING]
> `-upload` ist ausschließlich für **selbst gehostete Server** gedacht. Wenn es auf einer öffentlichen Instanz aktiviert wird, verwandelt es diese in anonymes Datei-Hosting auf einer Domain mit einem gültigen Wildcard-Zertifikat, was ein Magnet für Malware-Staging ist, und Blocklisten wirken auf die registrierbare Domain — ein missbräuchliches Sample betrifft jeden Nutzer dieser Domain. Es ist standardmäßig deaktiviert und impliziert bei Aktivierung eine Authentifizierung.
Starten Sie einen Server mit aktivierten Uploads:```bash
interactsh-server -d hackwithautomation.com -upload -ftp
```
Dann richte einen Client darauf mit einer oder mehreren Dateien:```bash
interactsh-client -s https://hackwithautomation.com -t <token> -file evil.dtd
```
| `--no-color` | Deaktiviert farbige Ausgabe |
| `--debug` | Aktiviert Debug-Protokollierung |
| `--quiet` | Unterdrückt nicht wesentliche Ausgabe |
| `--config` | Pfad zur Konfigurationsdatei |
| `--timeout` | Timeout in Sekunden |
| `--retry` | Anzahl der Wiederholungsversuche |
| `--proxy` | Proxy-URL |
| `--user-agent` | Benutzerdefinierter User-Agent |
| `--header` | Benutzerdefinierter HTTP-Header |
| `--cookie` | Benutzerdefinierter Cookie |
| `--output` | Ausgabedatei |
| `--format` | Ausgabeformat |
| `--verbose` | Ausführliche Ausgabe |
| `--version` | Versionsinformationen anzeigen |
| `--help` | Hilfeinformationen anzeigen |```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
```
Dateien werden über HTTP(S) und, wenn `-ftp` aktiviert ist, auch über FTP(S) bereitgestellt. Antworten sind immer
`Content-Type: application/octet-stream` mit `Content-Disposition: attachment`, sodass der Server niemals
vom Client geliefertes HTML oder SVG auf seiner eigenen Domain rendert; DTD-, XSLT- und JNDI-Konsumenten ignorieren den Content-Type,
daher kostet dies nichts für den beabsichtigten Verwendungszweck.
Wenn das Ziel die Datei abruft, erscheint der Abruf im Client wie jede andere Interaktion — was
der Punkt ist: Er ist der Beweis, dass die erste Stufe der Payload tatsächlich ausgeführt wurde. Der Response-Body
wird durch einen Digest ersetzt, damit eine große Payload nicht bei jedem
Abruf zurück in den Interaktionsstrom kopiert wird:```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]
```
Die beiden Zählungen sind „delivered of hosted“: Ein bedingter Abruf, der mit `304` beantwortet wird, verzeichnet `0 of 144`, und ein Bereichsabruf verzeichnet die Bytes, die der Bereich tatsächlich übertragen hat, sodass der Datensatz keine Lieferung beanspruchen kann, die nicht stattgefunden hat.
Welcher Callback der zweiten Stufe auch immer vom Payload ausgelöst wird, trifft als weitere Interaktion unter derselben Korrelations-ID ein, sodass beide Stufen bei einem Client landen.
Ein Client, der aufgefordert wird, Dateien gegenüber einem Server zu hosten, der nicht mit `-upload` gestartet wurde, teilt dies mit und beendet sich, anstatt stillschweigend ohne den Payload fortzufahren:```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
```
Der fehlschlagende Server wird benannt, weil sich der Client nur bei einem der Server in `-s` registriert. Wenn
mehrere aufgeführt sind, wird auch angegeben, wie die Auswahl getroffen wurde, da das Ergebnis zwischen den Läufen variieren kann:```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)
```
Server-seitige Optionen:
| Flag | Standard | Beschreibung |
| --- | --- | --- |
| `-upload` | aus | Client-Datei-Upload und -Hosting aktivieren |
| `-ud, -upload-directory` | temporäres Verzeichnis | Verzeichnis, aus dem hochgeladene Dateien gehostet werden; interactsh besitzt `.interactsh-user-uploads` darin |
| `-umfs, -upload-max-file-size` | `1mb` | maximale Größe einer einzelnen Datei |
| `-umf, -upload-max-files` | `5` | maximale Dateien pro Sitzung |
| `-umts, -upload-max-total-size` | `1gb` | maximale Gesamtbytes über alle Sitzungen hinweg |
| `-ut, -upload-ttl` | `24h` | maximale Lebensdauer hochgeladener Dateien |
Dateien werden entfernt, wenn der Client sich abmeldet, wenn seine Sitzung den Cache verlässt, und in jedem Fall, sobald
`-upload-ttl` seit dem letzten Upload für diese Sitzung abgelaufen ist.
Wissenswertes, bevor man es aktiviert:
- **Gehostete Dateien sind für jeden lesbar, der die Korrelations-ID kennt.** Diese ID wird absichtlich an
das Ziel weitergegeben — sie erscheint in jeder DNS-Abfrage, die der Resolver des Ziels stellt, und somit in dessen DNS-Logs, dessen
WAF und passiven DNS-Aggregatoren. Ein Ziel kann Ihre Payload abrufen, um Ihr Tooling zu fingerprinten, und
dieser Abruf wird in Ihrem Interaktionsstrom erscheinen. Laden Sie nichts hoch, was ein Ziel nicht lesen sollte.
- Uploads werden mit der Korrelations-ID und dem geheimen Schlüssel der Sitzung authentifiziert, sodass nur der Client, dem
eine Sitzung gehört, Dateien daran anhängen kann.
- Der Client lädt auf **den einen Server hoch, bei dem er sich registriert hat**. Wenn `-s` mehrere auflistet, werden Dateien
nur auf dem gewählten gehostet; dessen Payload-URLs werden ausgegeben. **Übergeben Sie einen einzelnen Server mit `-file`:**
der Client wählt zufällig einen aus `-s` und kann Upload-Unterstützung nicht berücksichtigen, da er das erst
nach der Registrierung erfährt — daher schlägt eine Liste, die Upload- und Nicht-Upload-Server mischt, zufällig fehl.
- `-upload` kann nicht mit `-redis-url` kombiniert werden. Gehostete Bytes werden auf das lokale
Dateisystem einer einzelnen Instanz geschrieben, sodass bei einem zwischen Instanzen geteilten Storage-Backend die anderen Instanzen
Dateien anbieten würden, die sie nicht haben. Der Server weigert sich, mit dieser Kombination zu starten: ```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 weigern sich, über Klartext-HTTP zu einem entfernten Server zu übertragen, da die Anfrage sowohl die
Datei als auch den geheimen Sitzungsschlüssel enthält. Verwenden Sie eine `https://`-Server-URL.
- Das Standard-Upload-Verzeichnis ist ein temporäres Verzeichnis, das auf vielen Linux-Distributionen
speichergestützt ist. Legen Sie `-upload-directory` bei einem echten Deployment explizit fest.
- **Interactsh erstellt und bereinigt ein Verzeichnis innerhalb des Upload-Roots.** Gehostete Dateien sind angeordnet als
`<root>/.interactsh-user-uploads/<correlation-id>/<filename>`, und alles unter
`.interactsh-user-uploads` wird gelöscht, wenn seine Sitzung endet, wenn `-upload-ttl` es ablaufen lässt, und beim
Start — Upload-Metadaten leben nur im Speicher, sodass dort nichts einen Neustart übersteht. Der Rest des
Roots wird niemals berührt, was es sicher macht, `-upload-directory` auf ein Verzeichnis zu zeigen, das Sie
bereits verwenden, oder es mit `-ftp-dir` zu teilen.
- Mit `-ftp` und ohne `-ftp-dir` wird der FTP-Root auf den Upload-Root gesetzt, sodass gehostete Dateien
über FTP ohne zusätzliche Konfiguration erreichbar sind. Wenn Sie beide Flags setzen, müssen sie dasselbe
Verzeichnis benennen, andernfalls kann FTP die Uploads nicht sehen: Der Server meldet die Nichtübereinstimmung beim Start und stellt
Clients keine `ftp://`-URLs mehr bereit, sodass das Hosting auf HTTP-only degradiert, anstatt FTP-URLs auszugeben,
die auf nichts verweisen. Das Uploads-Verzeichnis ist in FTP-Listings verborgen — `LIST /` zeigt Ihren eigenen Inhalt, aber
nicht `.interactsh-user-uploads`, und dieses Verzeichnis weigert sich, seinen eigenen Inhalt aufzulisten, sodass ein anonymer
Client die Correlation-IDs, die derzeit gehostete Dateien haben, nicht aufzählen kann. `RETR` eines bekannten Pfads
funktioniert, worauf sich die Payload-URL verlässt.
## Dynamische HTTP-Antwort
Der Interactsh-HTTP-Server ermöglicht optional das Antworten mit dynamischer HTTP-Antwort durch die Verwendung von Query-Parametern. Diese Funktion kann mit dem Flag `-dr` oder `-dynamic-resp` aktiviert werden.
Die folgenden Query-Parameter-Namen werden unterstützt - `body`, `header`, `status` und `delay`. Mehrere `header`-Parameter können angegeben werden, um mehrere Header zu setzen.
- **body** (Antwort-Body)
- **header** (Antwort-Header)
- **status** (Antwort-Statuscode)
- **delay** (Antwortzeit)```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
```
> **Hinweis**:
- Das Feature für dynamische HTTP-Antworten ist standardmäßig deaktiviert.
- Konstruktionsbedingt ermöglicht dieses Feature jedem, clientseitigen Code / Weiterleitungen über Ihre interactsh-Domain / Ihren Server auszuführen.
- Die Verwendung dieser Option mit einer isolierten Domain wird empfohlen, um **Sicherheitsauswirkungen** auf zugehörige Root-/Subdomains zu **vermeiden**.
## Wildcard-Interaktion
Um die `wildcard`-Interaktion für die konfigurierte Interactsh-Domain zu aktivieren, kann das `wildcard`-Flag zusammen mit implizitem Authentifizierungsschutz über das `auth`-Flag verwendet werden, wenn das `token`-Flag weggelassen wird.```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
```
Im Wildcard-Modus empfängt jeder verbundene Client unabhängig alle Interaktionen für die gemeinsame Domain. Der Server hält einen Puffer der letzten Interaktionen vor, damit mehrere Clients abfragen können, ohne Daten zu verpassen. Standardmäßig fasst der Puffer bis zu **10.000** Interaktionen pro gemeinsamem Schlüssel. Dies kann über die Umgebungsvariable `INTERACTSH_MAX_SHARED_INTERACTIONS` angepasst werden:```console
$ export INTERACTSH_MAX_SHARED_INTERACTIONS=50000
$ interactsh-server -domain hackwithautomation.com -wildcard
```
## LDAP-Interaktion
Standardmäßig unterstützt der Interactsh-Server die LDAP-Interaktion für die in der [Suchabfrage](https://ldapwiki.com/wiki/LDAP%20Query%20Examples) enthaltene Payload; zusätzlich kann das `ldap`-Flag für vollständiges Logging verwendet werden.```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
```
## Benutzerdefinierte Payload-Länge
Die Länge der interactsh-Payload beträgt standardmäßig **33** und setzt sich zusammen aus **20** (eindeutige correlation-id) + **13** (nonce token), was mit den Flags `cidl` und `cidn` angepasst werden kann, um sie bei Bedarf mit einem selbst gehosteten interactsh-Server zu verkürzen.```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
```
**Hinweis:** Es ist wichtig und erforderlich, auf beiden Seiten (**Client** und **Server**) dieselbe Länge zu verwenden, da sonst die Korrelation nicht funktioniert.```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
```
## Benutzerdefiniertes SSL-Zertifikat
Die [certmagic](https://github.com/caddyserver/certmagic)-Bibliothek wird standardmäßig vom interactsh-Server verwendet, um auf automatische Weise Wildcard-Zertifikate für die angeforderte Domain zu erzeugen. Um Ihr eigenes SSL-Zertifikat mit einem selbst gehosteten interactsh-Server zu verwenden, können die Flags `cert` und `privkey` genutzt werden, um die erforderlichen Zertifikatsdateien bereitzustellen.
**Hinweis:** Um alle Funktionen des SSL-Protokolls nutzen zu können, ist ein Wildcard-Zertifikat erforderlich.```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
```
## Unterstützte Protokolle
### FTP
FTP-Unterstützung kann mit dem `-ftp`-Flag aktiviert werden und wird nur für selbst gehostete Instanzen empfohlen. Der FTP-Agent simuliert einen voll funktionsfähigen FTP-Server-Agenten mit Authentifizierung, der Authentifizierungen bei jeder Dateioperation erfasst. Standardmäßig lauscht der Agent auf Klartext-FTP auf Port 21 (dies kann mit dem `-ftp-port`-Flag geändert werden) und TLS-FTP auf Port 990 (dies kann mit dem `-ftps-port`-Flag geändert werden) und listet im schreibgeschützten Modus den Inhalt des Standard-Temporärverzeichnisses des Betriebssystems auf (anpassbar mit der `-ftp-dir`-Option). Die FTP-Engine verwendet das benutzerdefinierte Zertifikat und den privaten Schlüssel, falls angegeben, oder sie extrahiert das Zertifikat und den privaten Schlüssel aus der ersten ACME-Domain, falls angegeben.
Beispiel für das Starten des FTP-Daemons und das Erfassen einer Login-Interaktion:```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"}
```
## Extern unterstützte Protokolle
### SMB
Das Flag `-smb` aktiviert einen prozessinternen SMB2-NetNTLMv2-Hash-Capture-Server (nur für selbst gehostete Instanzen). Er ist in reinem Go auf Basis von [goimpacket](https://github.com/Mzack9999/goimpacket) implementiert und lauscht auf Port `445`, sofern dieser nicht durch das Flag `-smb-port` geändert wird. Es sind keine Python-, impacket- oder Docker-Abhängigkeiten erforderlich.
Erfasste Hashes werden als `smb`-Interaktionen im Standard-Hashcat-NetNTLMv2-Format (`-m 5600`) gespeichert:```
USER::DOMAIN:serverChallenge:NTProofStr:NTLMv2Blob
```
Beispiel für das Aktivieren des Samba-Servers:```console
$ sudo interactsh-server -smb -skip-acme -debug -domain localhost
```
### Responder
Das Flag `-responder` aktiviert einen Responder-äquivalenten NTLMv2-Hash-Capture-Server, der ebenfalls von [goimpacket](https://github.com/Mzack9999/goimpacket) unterstützt wird. Er bindet die SMB-fähigen TCP-Ports (`139` und den Wert von `-smb-port`, Standard `445`) und speichert jede erfasste Authentifizierung als `responder`-Interaktion im selben oben beschriebenen hashcat-NetNTLMv2-Format. Es sind keine Docker- oder Python-Abhängigkeiten erforderlich.```bash
sudo interactsh-server -responder -d localhost
```
> Hinweis: Die Legacy-LLMNR-/NBT-NS-/MDNS-Broadcast-Poisoner, die mit dem Python-Responder-Projekt ausgeliefert werden, sind **nicht** enthalten. Es handelt sich um LAN-seitige Techniken, die für einen über das öffentliche Internet erreichbaren OOB-Callback-Server außerhalb des Geltungsbereichs liegen, und sie sind nicht Teil der goimpacket-Bibliothek.
## Interactsh-Integration
### Verwendung als Bibliothek
Die [Beispiele](https://github.com/projectdiscovery/interactsh/blob/main/examples) verwenden die Interactsh-Client-Bibliothek, um externe Interaktionen für eine generierte URL zu erhalten, indem eine HTTP-Anfrage an die URL gestellt wird, und um eine Datei gegen dieselbe Sitzung für die Verifizierung in der zweiten Stufe bereitzustellen.
Dateihosting ist eine optionale Serverfunktion, daher verhandelt ein Bibliotheksnutzer, anstatt anzunehmen: `Capabilities()` meldet, was der Server bei der Registrierung angekündigt hat, `UploadFiles` gibt `ErrUploadUnsupported` zurück, wenn ein Server keine Dateien hosten kann, und `ErrUploadNotAdvertised`, wenn er die Funktion noch nicht unterstützt, und `FileURL`/`FTPFileURL` setzen die URLs zusammen, die ein Ziel abrufen sollte. Die öffentlichen `oast.*`-Server bieten kein Hosting an, daher überspringt das Beispiel es, anstatt zu fehlschlagen.
### Nuclei - OAST
Der Schwachstellen-Scanner [Nuclei](https://github.com/projectdiscovery/nuclei) nutzt **Interactsh** zur automatisierten Payload-Generierung und Erkennung von Out-of-Band-basierten Sicherheitsschwachstellen.
Weitere Informationen finden Sie im Integrations-Blog [Nuclei + Interactsh](https://blog.projectdiscovery.io/nuclei-interactsh-integration/) und im [Leitfaden-Dokument](https://nuclei.projectdiscovery.io/templating-guide/interactsh/).
# Cloud-Metadaten
Der Interactsh-Server unterstützt DNS-Einträge für Cloud-Metadatendienste, was für das Testen von SSRF-bezogenen Schwachstellen nützlich ist.
Derzeit unterstützte Metadatendienste:
- [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)
Beispiel:
* **aws.oast.fun** zeigt auf 169.254.169.254
* **alibaba.oast.fun** zeigt auf 100.100.100.200
-----
### Danksagung
Interactsh ist von [Burp Collaborator](https://portswigger.net/burp/documentation/collaborator) inspiriert.
### Lizenz
Interactsh wird unter der [MIT-Lizenz](https://github.com/projectdiscovery/interactsh/blob/master/LICENSE.md) vertrieben und mit 🖤 vom [projectdiscovery](https://projectdiscovery.io)-Team erstellt.