A single-binary file server built for pentesters and CTF players. HTTP/S, WebDAV, FTP/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 874 ★ 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, FTP/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 | ✓ |
| FTP/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, FTP/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, FTP/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.