MongoDB No-Auth Bind to Public Interfaces: Hunter Playbook
MongoDB's historical default bind and auth story created a generation of open databases. Cloud scanners still light up when mongod listens on 0.0.0.0:27017 with authorization disabled.
If you can connect with no credentials, pause before find(). Plan a minimal proof.
Confirm the exposure
mongosh --host target:27017 --eval 'db.runCommand({ ping: 1 })'
A successful ping without -u is the core issue. Next, listDatabases shows names and sizes. That list alone often justifies a high severity when databases are non-empty and the host is in scope.
Check whether the server is actually MongoDB versus a honeypot. Odd build info, empty forever, or aggressive tarpits deserve a note.
TLS-only listeners and Atlas-style auth gates change the story. An open port that immediately demands SCRAM is not this finding—though weak creds might be another.
Legacy mongo shells and mongosh both work; note which you used. Capture buildInfo version fields so the customer can match the host in their inventory quickly.
Banner grabs that only show a Mongo-looking response on 27017 are weak alone. Complete the handshake and run ping. Scanners lie; your transcript should not.
If DNS points a pretty name like mongo-prod at the open host, include that hostname. Operators search inventories by name, not by the IP your VPS happened to hit.
Read less, prove more
Pick one low-sensitivity collection or insert a document into a database you created for the test:
use bugflare_canary_db
db.p.insertOne({ hunter: "you", nonce: "..." })
Show the insert and a matching find. Drop your canary DB when allowed. Skip exporting user collections, password hashes, or medical fields "to demonstrate."
If writes are disabled by a read-only user layer but auth is still absent for reads, say that clearly. Read-only anonymous access to PII remains serious.
Watch for HTTP interfaces and old REST plugins on adjacent ports. Some deployments expose both wire protocol and a management UI.
Sharded clusters and secondaries complicate impact. If you only reached a secondary open for reads, document that topology instead of claiming primary write power you did not prove.
GridFS buckets deserve a quick glance for filenames only. Downloading large binaries rarely helps the report and may violate data-handling rules.
Why bind address matters in the write-up
Operators sometimes enable auth yet leave an unauthenticated secondary, or bind publicly with auth off "for Docker networking." Quote net.bindIp expectations versus what the internet sees. Container port publishes (-p 27017:27017) are a frequent root cause.
Compose samples that set MONGO_INITDB_ROOT_PASSWORD but still publish the port widely are a different bug class—auth present, network open, password weak or leaked. Keep those separate from true noauth findings so severity stays honest.
Recommend enabling auth, binding to localhost or private IPs, firewalling 27017, disabling HTTP interfaces, and rotating secrets that may have been copied from exposed collections.
MongoDB's security checklist is the remediation backbone. Your ping, database list, and canary insert are the evidence. Together they make a clean, professional report—no full collection dump required.