A single-binary file server built for pentesters and CTF players. HTTP/S, WebDAV, SFTP, SMB, LDAP/S, NTLM hash capture, DNS/SMTP callbacks — all from one command, zero dependencies.
curl -sSfL https://goshs.de/install.sh | sh
Already trusted by 858 ★ developers, engineers and security professionals
No configuration files required. No dependencies. Download and run.
Download, upload via drag & drop or POST/PUT, delete, bulk ZIP download, and QR code generation for instant mobile access.
HTTP/S, WebDAV, SFTP, SMB, and LDAP/S. Pick what your target supports — or run them all at once from a single process.
Basic auth, certificate-based auth, TLS (self-signed, Let's Encrypt, or custom cert), IP allowlist, per-file ACLs.
Read-only, upload-only, no-delete, silent (no directory listing), invisible, or CLI command execution mode.
Generate token-based share links with configurable download-count and time-based expiry for secure, one-shot file sharing.
SMB NTLM hash capture + cracking, LDAP credential capture + NTLM hash cracking, JNDI mode for Log4Shell, DNS/SMTP out-of-band callbacks, reverse shell catcher + payload generator, redirect endpoint.
Webhooks (Discord, Mattermost, Slack), tunnel via localhost.run with TOFU SSH key pinning, mDNS discovery, and config file support.
Dark and light themes, clipboard integration,
one-command self-update, tab completion for bash/fish/zsh
(goshs --completion bash|fish|zsh), structured log output,
drop privileges after bind.
goshs was built by a pentester, for pentesters. When you're mid-engagement and need to catch credentials fast or stand up a callback server in seconds, goshs has your back.
One command is all it takes — for any use case.
Side-by-side against the most common alternatives.
| Feature | Pythonhttp.server |
updog | miniserve | goshs ★ recommended |
|---|---|---|---|---|
| Core | ||||
| Single binary / zero runtime | ✗ | ✗ | ✓ | ✓ |
| File upload | ✗ | ✓ | ✓ | ✓ |
| HTTPS / TLS | ✗ | ✓ | ✓ | ✓ |
| Authentication | ✗ | Password only | ✓ | ✓ |
| Bulk ZIP download | ✗ | ✗ | ✓ | ✓ |
| Protocols | ||||
| WebDAV | ✗ | ✗ | Read-only | ✓ |
| SFTP | ✗ | ✗ | ✗ | ✓ |
| SMB | ✗ | ✗ | ✗ | ✓ |
| Pentest & CTF | ||||
| DNS callback server | ✗ | ✗ | ✗ | ✓ |
| SMTP callback server | ✗ | ✗ | ✗ | ✓ |
| Mattermost / Discord / Slack webhooks | ✗ | ✗ | ✗ | ✓ |
| Invisible mode | ✗ | ✗ | ✗ | ✓ |
| NTLM hash capture & cracking | ✗ | ✗ | ✗ | ✓ |
| Reverse shell catcher | ✗ | ✗ | ✗ | ✓ |
| Log4Shell / LDAP JNDI | ✗ | ✗ | ✗ | ✓ |
Everything you need to know about goshs.
goshs is a single-binary Go HTTP server designed for pentesters and CTF players. It replaces Python's http.server with support for HTTP/S, WebDAV, SFTP, SMB, LDAP/S, DNS callbacks, SMTP callbacks, Mattermost/Discord/Slack webhooks, invisible mode, and more — all from one command with zero dependencies.
goshs supports HTTP, HTTPS, WebDAV, SFTP, SMB (with NTLM hash capture), LDAP/S (with JNDI mode for Log4Shell), DNS (out-of-band callback server), and SMTP (email callback server). Multiple protocols can run simultaneously from a single process.
Pass the --invisible flag: goshs --invisible. In invisible mode goshs serves files without displaying a directory listing, making the server presence less obvious to anyone browsing to it. Combine with --webhook to receive Mattermost, Discord, or Slack notifications for every download or upload.
Yes. goshs supports Mattermost, Discord, and Slack webhooks natively. Use -W -Wu <webhook-url> -Wp Mattermost to send real-time notifications for uploads, downloads, deletes, DNS callbacks, SMTP events, and more. Which events trigger notifications is configurable via -We.
Absolutely — goshs was built for exactly this. It ships with an SMB server that captures and optionally cracks NTLM hashes inline, an LDAP server with JNDI mode for Log4Shell, out-of-band DNS and SMTP callback servers, a reverse shell catcher with a one-click payload generator, redirect endpoints for SSRF testing, and a tunnel mode via localhost.run to expose goshs publicly in one flag.
Yes. goshs is written entirely in Go, which is why it compiles to a single static binary with no runtime dependencies. You can install it directly via the Go toolchain: go install goshs.de/goshs/v2@latest
Available on every major platform and package manager.
curl -sSfL https://goshs.de/install.sh | sh
sudo apt install goshs
yay -S goshs-bin
pacman -S goshs
apk add goshs
snap install goshs
dnf copr enable patrickhener/goshs && dnf install goshs
sudo zypper install goshs
nix-env -iA nixpkgs.goshs
curl -sSfL https://goshs.de/install.sh | sh
brew install goshs
nix-env -iA nixpkgs.goshs
scoop bucket add extras && scoop install extras/goshs
winget install PatrickHener.Goshs
choco install goshs
go install goshs.de/goshs/v2@latest
docker run --rm -it -p 8000:8000 \
-v "$PWD:/pwd" patrickhener/goshs:latest -d /pwd
Pre-built binaries for Linux, macOS, and Windows — additional .deb and .rpm packages — no Go toolchain required.
Download Release →goshs is free and open source, forever. A star on GitHub helps others discover it.