The Admin Panel You Forgot Is Listening Right Now
Nginx Proxy Manager on 81, Grafana on 3000, phpMyAdmin on 8080. Each is a public login page unless someone checked. We found our own on port 81.
ss -tlnp lists every listening port; compare against what should be public. Then check the reverse proxy: its own admin port and its routing rules are the surface everyone forgets.
ss -tlnp shows every listening socket with the process behind it. Anything bound to 0.0.0.0 or :: is a candidate for public reachability, filtered only by the firewall. The audit compares this list against the intended public surface and flags every extra listener, then verifies reachability with one HEAD request per candidate from outside.
In This Guide
The inventory
The reverse proxy trap
If it stays
Get the skill
4 Tips to Get Started
ss -tlnp | grep -v 127.0.0.1 is the inventory. Every line is a decision someone made once.
The reverse proxy's own admin port is the most commonly forgotten public surface on a small stack.
Check routing rules too: a public proxy routing by Host header can reach internal-only hosts.
Default credentials are the second half of the finding: admin panels ship with known defaults.
Ready to Stop Worrying About Infra?
Knowledge is the first step. Get a free 1-hour diagnostic and see where your infrastructure leaks time, money, and focus.
Related Guides
Is My S3 Bucket Public? How to Check in One Command
One command tells you if your S3 bucket is public, and one curl proves it. The policy check shows intent, the anonymous request shows reality.
The Most Common AWS Misconfiguration (It Is One Line of Config)
Public buckets and Principal * policies cause most disclosed AWS incidents. Each is one line of config with account-wide blast radius. Here is the pattern.
Terraform State File Leak: Every Secret in Plaintext
terraform.tfstate stores database passwords, IAM keys and TLS private keys in plaintext. sensitive=true hides nothing. Here is how leaks happen and the check.
Docker Socket Mounted in a Container: Root on the Host, No Exploit Needed
A container with /var/run/docker.sock mounted controls the host daemon and can mount your entire filesystem. No kernel exploit required. Here is the mechanism and the check.
Ron Cohen — DevOps engineer & founder, roqy.io
Content reviewed by the roqy.io team. Our guides are based on publicly available data.
Disclaimer: This content is for informational and educational purposes only. It does not constitute professional advice or a guarantee of specific results. Infrastructure needs vary by team, stack, and stage. Consult a qualified engineer for advice tailored to your situation.
Frequently Asked Questions
How do I find exposed admin panels on my server?
Run ss -tlnp and list every port bound to 0.0.0.0. Compare against what should be public. Then check the reverse proxy separately: its own admin port (Nginx Proxy Manager uses 81) and its routing rules. Verify each candidate with a single HEAD request from outside. We found our own NPM admin panel publicly reachable on port 81 this way.
Why are admin panels on non-standard ports still dangerous?
Port scanners cover the full range, not just 80 and 443. Shodan indexes non-standard ports continuously. A panel on 81 or 9090 is equally public, equally indexed, and often ships with default credentials that nobody changed because the port felt obscure.
What is the host-header routing trap?
A public reverse proxy that routes by Host header can forward requests to internal-only hosts. The proxy is legitimately public, so port scans see nothing wrong, but a request with the right Host header reaches an internal panel. Test with curl -sI -H 'Host: internal-host' https://your-proxy/ for each known internal vhost.
Get the DevOps Ecosystem Behind You
One accountable engineer. Full platform behind him. Month-to-month, no lock-in.