RoastMyOpsec

Vulnerabilities

phpMyAdmin vs /wp-admin on Public Marketing Origins

March 4, 2025

phpMyAdmin vs /wp-admin on a public marketing origin is not a style contest. /wp-admin is the CMS staff door — still needs MFA, SSO, and rate limits, but its presence is normal. phpMyAdmin (and cousins like /adminer.php) is a database console. On the public internet it is a leftover that turns a web host into a SQL GUI for whoever finds it. Hide neither as your only control. Put database tools on a VPN or a jump host. RoastMyOpsec uses soft GETs for common admin paths and may notice spicy robots.txt Disallow lines that mention phpmyadmin. It does not log into MySQL, does not brute-force, and does not exploit the panel.

The practical difference

WordPress admin is an application you meant to run. A database GUI is operations tooling. Marketing sites that 'just needed to inspect a table' leave phpMyAdmin next to the theme. That is a different blast radius than a locked-down wp-admin with MFA.

A 404 on /phpmyadmin is healthy. A 200 login form on /wp-admin is expected. A 200 phpMyAdmin setup page is an incident until it is gone.

How to choose what belongs on the origin

Keep /wp-admin if you use WordPress; protect identity, not the path name. Remove phpMyAdmin from production images. Shared hosts that install it by default still need it off or firewalled. robots.txt Disallow is an advertisement, not a lock.

Path classNormal on public www?First fixTakeaway
/wp-adminYes, for WordPressMFA, rate limits, updatesSee admin discoverability guide
/phpmyadmin, /adminer.phpNoRemove from the origin; VPN if neededDatabase GUI ≠ CMS
/administrator (Joomla-style)Only if that CMS is liveSame identity controlsInventory, then lock
Disallow: /phpmyadminA breadcrumbDelete the app, then the robots lineSee robots vs access control

What the roast can prove

Status codes on a short list of common admin paths, plus chatty robots.txt. Absence of /phpmyadmin in that list is not a guarantee the panel lives at a unique name. Do not treat a clean roast as a database-hardening letter.

Common mistakes

The first mistake is MFA on WordPress and phpMyAdmin with the default URL.

The second mistake is IP-allowlisting wp-admin and leaving the DB GUI on 0.0.0.0.

The third mistake is renaming phpMyAdmin to /db-secret as the entire plan.

Free audit the URL you own

RoastMyOpsec is a defensive public-surface roast: headers, cookies, sensitive paths, and more — no exploit payloads. Start with the free audit, then open the vault if the blurred findings look expensive.

Free audit now

FAQ

Is a public /wp-admin a vulnerability?
No. It is discoverable by design. The question is MFA, SSO, rate limits, and whether staff tools belong on the internet.
Is public phpMyAdmin a vulnerability?
Treat it as a serious exposure. Remove it from the public origin. Access databases through a VPN or approved ops path.
Does RoastMyOpsec try default phpMyAdmin passwords?
No. Soft GETs for presence. No credential stuffing, no SQL, no exploit payloads.

Sources

Related guides