Skip to content

Security

Common Default Credentials mistakes that still ship

Theming logins, skipping ownership verification, and treating panel hiding as a password change still ship—and Default credentials findings make those mistakes concrete.

· by Maya Okonkwo

Common Default Credentials mistakes that still ship

What an attacker sees on the public surface includes vendor admin UIs that still behave like the installer left them. Fancy redesigns do not travel with the password hash. The login endpoint only cares what you type.

SlaySlop's Default credentials check "Checks for unchanged vendor default logins on detected stacks when ownership is verified." The mistakes below still ship because teams optimize for looking locked down in a screenshot.

Outcome if you catch these early

You ship stacks whose first-login state was actually changed, with ownership verified so monitoring stays attached to the right site. Security questionnaires get a sentence you can defend. You do not get a theater of custom CSS over factory credentials.

Boundaries

Read-only. Permissioned. Ownership verified for this check's claim. Not a pentest. Not a license to attempt logins on hosts you do not control. Default credentials sits under Security next to Exposed files and admin panels and Known CVEs. Closing a Default credentials finding does not retire a reachable .env backup. SlaySlop does not edit the target.

Loading diagram.

Mistake 1: theme the form, keep the factory login

A branded /admin page demos well. It does not change the credential the vendor shipped. If the check's question is unchanged vendor default logins, a stylesheet is not an answer. Change the password through the supported admin path. Then remove installer accounts your runbook still mentions.

Mistake 2: skip ownership verification

The definition includes "when ownership is verified" for a reason. Teams that skip verification argue with empty rows or mis-attached monitoring later. Connect the site you control before you treat a clear result as gospel for a domain you barely manage.

text
mistake_pattern: ownership_skipped
symptom: "scan looked fine on a URL nobody verified"
fix: verify ownership, rescan production hostname, read Default credentials row again

Mistake 3: hide the panel and declare victory

Moving /wp-admin behind a secret path, basic auth, or IP allowlist can be good defense in depth. It is not the same as changing the default. Obscurity fails the week onboarding docs, a job posting, or a backup repo republishes the path. Treat Exposed files and admin panels as the reachability ticket. Treat Default credentials as the factory-login ticket. Both can be open at once.

bash
# Permissioned: confirm a panel still answers after "we hid it"
curl -sI "https://www.example.com/secret-admin/" | sed -n '1,15p'

Mistake 4: fix staging, ship production

Preview hosts get the careful password change. Production keeps the appliance image that sales spun up in a hurry. Scanners and humans follow the public hostname. So should your checklist.

Mistake 5: merge every Security row into one epic

Client-side secrets, Known CVEs, Default credentials, and Exposed files and admin panels share a category. They do not share a fix. A rotated API key does not change a CMS default. A patched plugin does not remove a public backup of .env. Write separate owners.

Mistake 6: prove the bug by pasting passwords into the portal

Sensitive findings exist so the report channel does not become a second leak. Work from redacted evidence. Use the vendor's password-change UI on a session you are authorized to hold. Do not turn Slack into a credential store.

How I triage without shortcuts

I open the Default credentials finding, confirm ownership, identify the stack signal, schedule the supported credential change, then rescan. If Exposed files and admin panels is also open, I schedule reachability work in parallel. I do not invent a password dictionary "just to double-check." The product check is the observation. My job is the remediations the vendor documents.

Mistake 7: fixing code while the panel is elsewhere

Sometimes the "site" is a static front end and the vendor console lives on a subdomain or a separate host the marketing team still controls. You harden the static host and miss the console. Detected stacks follow what the scan can see on the permissioned URL and related public surface. Expand the handoff scope to every hostname you actually shipped.

Mistake 8: equating SSO on one app with defaults elsewhere

SSO on the customer app does not rotate a leftover CMS. Write the list of consoles. Check each. Default credentials findings are a prompt to finish that list, not a reason to argue about identity fashion.

text
console_inventory:
  - host: www.example.com
    panel: /wp-admin
    auth: unique managed credential
  - host: cms.example.com
    panel: vendor UI
    auth: rotated off defaults
  - host: staging.example.com
    panel: installer
    auth: disabled / not public

What "done" looks like in writing

A closed ticket should name the check, the host, the fact that ownership stayed verified, and the rescan result. It should not name the new password. It should not claim Known CVEs or Client-side secrets were fixed unless those rows cleared too.

I also write one line about whether the admin path remains public. Reachability is the Exposed files and admin panels conversation. Credential state is Default credentials. Keeping that split in the prose stops the next contractor from undoing one fix while celebrating the other.

Related next step

When the rescan is clean, keep monitoring on through plugin upgrades—the next vendor image can reintroduce installer habits. Soft link: Default credentials, Exposed files and admin panels, and Security and secrets.