Giter VIP home page Giter VIP logo

interactsh's Issues

[Feature] Burp suite extension for interactsh client

Maybe it is not very necessary, but if it would be something interesting, a client for burpsuite (community), it is necessary to take into account that it would be an extra maintenance, no wonder they reject the idea. but still I comment

[Feature] Support for displaying http content on interact.sh client

Right now on sending an http request to the interact.sh url we simply get the following response:

Recieved HTTP interactionfrom <ip> at <time>

it would be helpful if we could see the contents of the get/post content of the http request like in https://webhook.site/

Ex:
Request at target
GET customSubdomain.<interactshsubdomin>.interact.sh/someData

or

POST customSubdomain.<interactshsubdomin>.interact.sh
{
value: SomeData
}

interactsh-client logs display SomeData or the whole json file

[DEV] Uniform response content type

  • Using application/json instead of text/plain on successful response.
  • Adding response msg upon successful registration at /register endpoint
HTTP/2 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Origin: *
Content-Length: 0
Date: Sat, 11 Sep 2021 09:50:37 GMT

{"message":"registration successful"}

[DEV] could not get extra interactions after registration

HTTP/2 400 Bad Request
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-Origin: http://localhost:3000
Content-Type: text/plain; charset=utf-8
Content-Length: 456
Date: Sat, 11 Sep 2021 09:21:33 GMT

{"error":"could not get extra interactions: could not get id from cache"}
{"data":[],"extra":null,"aes_key":"XXX"}

[Feature] Filter regular output with http-only/dns-only new flags

@Mzack9999 we may also filter regular output with this feature.

For example with interactsh-client -http-only or -dns-only

Current behavior:-

[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received DNS interaction (A) from 103.195.200.42 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received DNS interaction (A) from 172.253.226.98 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received DNS interaction (A) from 103.195.200.42 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received DNS interaction (A) from 172.217.34.131 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:24

After support:-

[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:23
[c3rbe3pe0084ii3p82sgcd5mqryyyyyyn] Received HTTP interaction from 103.22.142.125 at 2021-07-20 11:44:24

Originally posted by @ehsandeep in #40 (comment)

[feature] Output only for HTTP requests/responses

Sometimes I receive too many DNS requests from targets. I will like to be able to only retrieve HTTP requests in verbose output.

#output all requests/responses
interactsh-client -v
#output only http requests/responses
interactsh-client -v -http-only
#output only dns requests/responses
interactsh-client -v -dns-only

Bots

Block bots, if we use notify and bots crawl it, it will be noisy notifs.

Interactsh server enhancement

  • Added default value for hostmaster flag as admin@domain
  • Added verbose error upon failures
  • Added origin-url flag for dynamic ACAO used for web interactsh client

Listen on ports other than standard ports for http, dns, etc.

Hello I am trying to use interactsh and I need the server to listen on ports other than the default 53, 443, etc due to a reverse proxy in front of the server. I looked at the source code and see there's a string concat with :53 for dns, so it appears it's not possible to make this part dynamic. Could you please add the ability to listen on different ports other than the default? Thanks.

[Feature] Widcard interactsh-client url like burpcollaborator

Hello team,
Just a suggestion , if you can make the collab url as wildcard (i.e. *..interact.sh resolve to .interact.sh), just same as the burp collaborator do.

If that can be done , that would be greatful.

And thanks for your awesome Tools.

Allow customization and persistence of default text for self-hosted servers

Hello and thank you for this awesome tool, it will surely come in handy during our testing.

Could you make the default text more easily customizable and persistent between updates for those of using self-hosted servers? Currently it includes a line that says If you find communications or exchanges with the Interact.sh server in your logs, it is possible that someone has been testing your applications using our hosted service, app.interact.sh.

Maybe it should detect the base domain being used by the server and display that instead?

Not able to run the interactsh-server

When I run the command interactsh-server -domain mydomain.com -hostmaster [email protected] -ip [VPS IP]. The following output is given without any errors:

2021/05/01 08:45:17 Creating new order for domains: [*.mydomain.com mydomain.com]
2021/05/01 08:45:17 Order created: https://acme-v02.api.letsencrypt.org/acme/order/121967319/9409571122
2021/05/01 08:45:17 Fetching authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/12762297545
2021/05/01 08:45:17 Fetched authorization: mydomain.com
2021/05/01 08:45:27 Updating challenge for authorization mydomain.com: https://acme-v02.api.letsencrypt.org/acme/chall-v3/12762297545/FkqiUg

But the server is not giving A records when queried. I already had a letsencrypt cert but even after I deleted the cert nothing changed the same output is given

Installation Failed

┌──(root💀milani)-[~]
└─# go get -v github.com/projectdiscovery/interactsh/cmd/interactsh-client                                   127 ⨯

github.com/pierrec/lz4 (download)
cannot find package "github.com/pierrec/lz4/v4" in any of:
        /usr/lib/go-1.15/src/github.com/pierrec/lz4/v4 (from $GOROOT)
        /root/go/src/github.com/pierrec/lz4/v4 (from $GOPATH)

https://github.com/pierrec/lz4/v4

Allow use of base domain (or custom sub-domain) for self-hosted servers

Hello and thank you for this awesome tool, it will surely come in handy during our testing.

The current behavior of interactsh is to create a randomized subdomain like c282n3l3djgbti5v595gcnenzdoyyyyyn.domain.tld, which is fine and all, however, we have a pretty nice 4 x 2 domain and we feel that smaller payloads are the best, so could you allow the use of the base domain and/or customized sub-domains for self-hosted servers in addition to the randomized subdomains?

Edited to ask for customized sub-domains option as well. 👍🏻

[Feature] Printing the full Hostname

I see that you have implemented the burp collaborator feature of wildcard mapping to the source collaborator address.

Example : ..interact.sh -> .interact.sh

That's great feature . But it would be great if you print this whole ..interact.sh on the terminal whenever a query triggered without verbose flag. Because verbose flag print many unwanted information (in case of DNS queries).

Example:

if we ping anything.<UNIQUE-ID>.interact.sh
And the interactsh client shows ( without verbose flag)
[<UNIQUE-ID>] Recieved DNS interaction (A) from <ORIGIN-IP> at <TIMESTAMP>

So the anything is omitted , which is sometimes important during Bug Bounties.

interactsh server crash

This is not completed but limited available logs.

net/http.(*conn).readRequest(0xc03c1d72c0, 0x921bf8, 0xc03c80ad80, 0x0, 0x0, 0x0)
        /snap/go/7954/src/net/http/server.go:966 +0x19d
net/http.(*conn).serve(0xc03c1d72c0, 0x921ca0, 0xc03c80ad80)
        /snap/go/7954/src/net/http/server.go:1858 +0x705
created by net/http.(*Server).Serve
        /snap/go/7954/src/net/http/server.go:2993 +0x39b

goroutine 197138914 [IO wait, 2 minutes]:
internal/poll.runtime_pollWait(0x7f922ad4b4f0, 0x72, 0xffffffffffffffff)
        /snap/go/7954/src/runtime/netpoll.go:222 +0x55
internal/poll.(*pollDesc).wait(0xc09119b318, 0x72, 0x1000, 0x1000, 0xffffffffffffffff)
        /snap/go/7954/src/internal/poll/fd_poll_runtime.go:87 +0x45
internal/poll.(*pollDesc).waitRead(...)
        /snap/go/7954/src/internal/poll/fd_poll_runtime.go:92
internal/poll.(*FD).Read(0xc09119b300, 0xc08affa000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /snap/go/7954/src/internal/poll/fd_unix.go:166 +0x1d5
net.(*netFD).Read(0xc09119b300, 0xc08affa000, 0x1000, 0x1000, 0xc0083f8400, 0xc05a07d668, 0x89adb9)
        /snap/go/7954/src/net/fd_posix.go:55 +0x4f
net.(*conn).Read(0xc0bff81610, 0xc08affa000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
        /snap/go/7954/src/net/net.go:183 +0x91
net/http.(*connReader).Read(0xc09170f470, 0xc08affa000, 0x1000, 0x1000, 0x4b6956, 0xc09215d08b, 0xb)
        /snap/go/7954/src/net/http/server.go:780 +0x1b9
bufio.(*Reader).fill(0xc08afe7aa0)
        /snap/go/7954/src/bufio/bufio.go:101 +0x108
bufio.(*Reader).ReadSlice(0xc08afe7aa0, 0xc03828f80a, 0x764367, 0xc08ac8f080, 0xb1e2ae, 0x2, 0x2)
        /snap/go/7954/src/bufio/bufio.go:360 +0x3d
bufio.(*Reader).ReadLine(0xc08afe7aa0, 0x203024, 0x203024, 0x0, 0x0, 0xc03828fa78, 0x764dc5)
        /snap/go/7954/src/bufio/bufio.go:389 +0x34
net/textproto.(*Reader).readLineSlice(0xc0923b0870, 0xc0922c9200, 0xc03828f9e8, 0x4dc773, 0xc09119b300, 0x43a77c)
        /snap/go/7954/src/net/textproto/reader.go:57 +0xd6
net/textproto.(*Reader).ReadLine(...)
        /snap/go/7954/src/net/textproto/reader.go:38
net/http.readRequest(0xc08afe7aa0, 0x0, 0xc0922c9200, 0x0, 0x0)
        /snap/go/7954/src/net/http/request.go:1027 +0xaa
net/http.(*conn).readRequest(0xc0917ac140, 0x921bf8, 0xc0910ff980, 0x0, 0x0, 0x0)
        /snap/go/7954/src/net/http/server.go:966 +0x19d
net/http.(*conn).serve(0xc0917ac140, 0x921ca0, 0xc0910ff980)
        /snap/go/7954/src/net/http/server.go:1858 +0x705
created by net/http.(*Server).Serve
        /snap/go/7954/src/net/http/server.go:2993 +0x39b

[issue] Broken dependency smtpd

Describe the bug
Project depends on github.com/prologic/smtpd, but https://github.com/prologic/smtpd results in a 404, repo seems gone.
Error occurred when trying to open the Nuclei source in GoLand on a pristine machine.

Version
Nuclei: Trunk of master (currently at 84244b5)
Interactsh: Seems to be present in trunk, too

Screenshot of the error or bug

go list -modfile=nuclei/v2/go.mod -m -json -mod=mod all #gosetup
go: github.com/projectdiscovery/[email protected] requires
	github.com/prologic/[email protected]: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in ~/go/pkg/mod/cache/vcs/65b3100cfa8e2061b6047e41aaceb4a1e850f70977a718cfde5bd0e009bb0722: exit status 128

Could not create client

running interactsh-client without any options is triggering the below error.
Version : 0.0.2
OS: OSX

$interactsh-client

    _       __                       __       __
   (_)___  / /____  _________ ______/ /______/ /_
  / / __ \/ __/ _ \/ ___/ __ '/ ___/ __/ ___/ __ \
 / / / / / /_/  __/ /  / /_/ / /__/ /_(__  ) / / /
/_/_/ /_/\__/\___/_/   \__,_/\___/\__/____/_/ /_/ v0.0.2

		projectdiscovery.io

[FTL] Could not create client: could not make register request: POST https://interact.sh/register giving up after 6 attempts: Post "https://interact.sh/register": dial tcp: lookup interact.sh: no such host

DNS interaction does not often work

``Hello team , thanks for all the great things you do . I do have an issue with the interact client where dns request are not logged . http works fine but when ever the request is a dns request only, nothing works
nslookup blahblahblah.c4l7u968kh02ipm31b50jntiyyozltipn.interact.sh does not work at all .

Interact.sh UI

  • Generating new intractable payload

    • Default to generate 1 link
    • User can request many as per need.
  • User controlled poll time settings.

    • We can define default poll time.
  • Multi tab support to manage / track / view multiple payloads at same time.

  • Filters for displaying DNS / HTTP / SMTP Interaction in default view.

  • Fields (same as burp only for inspiration)

    • Time (Interaction time)
    • Type (Interaction type)
    • Payload (Interact Payload)
    • Comment
  • Fields per interaction type

    • DNS

      • Interaction Information / description
      • RAW DNS query
    • HTTP

      • Interaction Information / description
      • Request dump
      • Response dump
    • SMTP

      • Interaction Information / description
      • SMTP Interaction dump
    • Misc Features

      • Search (Search between all interactions)
      • Copy (Request/Response)
      • Download (Request/Response)
      • Decode (HTML/URL)

Domain name update for default interactsh server

It has been reported several times that the current domain is used by interactsh server - interact.sh - is not resolved by a few VPS providers, preventing such systems from using interactsh client and Nuclei integration.

The default interactsh server will now be located at https://interactsh.com The old server (interact.sh) will remain available.

[Feature] SMB Listener

Sometimes I use Responder just to collect incoming hashes from AD/Windows integrated apps
it's not a big inconvenience for me to just configure it to listen from my private hosted interactsh-server, but it would be a nice to have a built in listener to register/capture/note those events dont you think ?

Interactsh server - fatal error: runtime: out of memory

Interactsh server version:- 0.0.6

2021/10/09 22:47:15 TLS certificates are not expiring, continue!
2021/10/09 22:47:15 Listening on DNS, SMTP and HTTP ports
fatal error: runtime: out of memory

runtime stack:
runtime.throw(0xf6974e, 0x16)
	/snap/go/8408/src/runtime/panic.go:1117 +0x72
runtime.sysMap(0xc0d0000000, 0x4000000, 0x161bdb0)
	/snap/go/8408/src/runtime/mem_linux.go:169 +0xc6
runtime.(*mheap).sysAlloc(0x16029a0, 0x400000, 0x7fffffffffff, 0x7ff7077fdd98)
	/snap/go/8408/src/runtime/malloc.go:729 +0x1e5
runtime.(*mheap).grow(0x16029a0, 0x1, 0x0)
	/snap/go/8408/src/runtime/mheap.go:1346 +0x85
runtime.(*mheap).allocSpan(0x16029a0, 0x1, 0x1100, 0x1ff)
	/snap/go/8408/src/runtime/mheap.go:1173 +0x609
runtime.(*mheap).alloc.func1()
	/snap/go/8408/src/runtime/mheap.go:910 +0x59
runtime.systemstack(0xc000314900)
	/snap/go/8408/src/runtime/asm_amd64.s:379 +0x66
runtime.mstart()
	/snap/go/8408/src/runtime/proc.go:1246

Complete crash trace - interact-crash.txt

Access an old generated payload link ?

I hosted your interactsh-server on a a droplet. Everything is working like a charm. But I have a question:
Can I use an old generated payload link ? access its http/dns/smtp requests within the server using the client side (interactsh-client ? please ?

Digitalocean droplets are blocked (?)

Hi,

It seems like DO droplets are blocked or something. Check out the image. the same issue when I tried a different droplet (different IP).

WindowsTerminal_76fuVnzfDr

Also, thank you all for the AMAZING tools you make! <3

DNS rebinding

As Interactsh is about OOB interaction supporting DNS it would be nice to have a DNS rebinding by the same occasion.

This mean having a way to get resolvable resource records with any given contents for assisting in detection and exploitation of SSRF-related vulnerabilities.

I have fetched a list of DNS rebinding tools but most are hard to setup, featureless and unmaintained. The most interesting project to understand all major features is 1u.ms (source), their website describe well all possibilities.

Right now Interactsh is similar to most HTTP request collector and inspector tools but lacks of DNS rebinding.

image

What I said for DNS could also be meaningful for HTTP, being able choose the body or headers served by the server.

FTP Support

An FTP listener would be interesting to include in Interactsh.

It would be valuable to log the authentication that an FTP client uses along with the commands they ran. It would be helpful to see the files the external client attempted to read or upload.

FTP is supported by default in Java applications where an attacker has control over a URL object. It comes up in XXE OOB testing as well.

[feature] Success criteria for self hosted for interactsh-server

Hey all,

I may be simply looking in the wrong place but there seems to be little guidance on what needs to be in place for the interactsh-server to succeed

for example:
./interactsh-server -domain yoink.domain -hostmaster jc@doain -ip 44.44.44.4xx -debug

following the guide will tell me '[ERR] Could not serve dns on port 53: listen udp 0.0.0.0:53: bind: address already in use'
and 021/07/16 10:40:30 Creating new order for domains: [*.yoink.domain yoink.domain]
2021/07/16 10:40:30 Order created: https://acme-v02.api.letsencrypt.org/acme/order/000000/00000000
2021/07/16 10:40:30 Fetching authorization: https://acme-v02.api.letsencrypt.org/acme/authz-v3/000000000
2021/07/16 10:40:30 Fetched authorization: yoink.domain
2021/07/16 10:40:40 Updating challenge for authorization yoink.domain: https://acme-v02.api.letsencrypt.org/acme/chall-v3/0000000000/8z7VSF
[FTL] Could not generate certs for auto TLS

but disabling systemd-resolved only tells me only 'Could not generate certs for auto TLS' assuming i cant resolve it anymore :)

so, any pointers to what i'm not getting in regards to why this is failing ? and to the title, might that be a good common document for all ?

Thanks!

Linux yoinker 5.4.0-73-generic projectdiscovery/nuclei#82-Ubuntu SMP Wed Apr 14 17:39:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Add ability to restrict access to self-hosted servers

Hello, currently there is no protection against allowing anyone to connect to a self-hosted hosted if they know the URL. Please add some sort of authentication mechanism so that servers aren't abused. Maybe something like this?

$ interactsh-server -auth "$(uuid-gen)"
$ interactsh-client -auth "generated-uuid" -url https://domain.tld

Thank you.

Add subdomains which resolve to cloud metadata addresses

Add 2 subdomains which resolve to various cloud provider metadata IPs.

For general cloud services, one should resolve to: 169.254.169.254
For Alibaba, one should resolve to: 100.100.100.200

Once created, the metadata-*yaml templates can be updated to use them.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.