CVE-2026-100698: Adminer before 6.0.2 Privileged-Port SSRF via host_port Regex

Published Sep 26, 2026
·
Updated

Adminer 5.5.1 through 6.0.1 improperly parses the login 'server' string in the hostport() function in adminer/include/functions.inc.php. The port capture group requires pure digits anchored to the end of the string, so any server value with a non-digit tail fails the regex and falls back to returning the whole string as the host with an empty port. Because the privileged-port restriction in adminer/include/auth.inc.php inspects only the parsed port, the check is skipped, and the mysqli/mysqlnd client subsequently re-parses host:port from the host string and opens a TCP connection. A remote, unauthenticated attacker who can reach the Adminer login page can submit a crafted value such as 127.0.0.1:80/x to make the server initiate TCP connections to arbitrary internal hosts and privileged ports before credentials are validated, enabling server-side request forgery and blind internal port scanning (connection refused vs. handshake vs. timeout acts as a liveness oracle). This is a regression that re-opens the bypass fixed in 5.5.0 (GHSA-58cq-mgw2-38m5). Fixed in 6.0.2.

Affected Software

1 affected component
Adminer Adminer>=5.5.1<=6.0.1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Adminer to a version that resolves this vulnerability.

    Fixed in 6.0.2

Event History

Sep 26, 2026
CVE Published
via MITRE·01:23 PM
Data Sourced
via MITRE·01:23 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·02:16 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Which deployments are exposed to this issue?

Adminer versions 5.5.1 through 6.0.1 are affected. An attacker must be able to reach the Adminer login page; no prior authentication or user interaction is required.

2

What does an attacker need to send to trigger the server-side connection?

The attacker can submit a crafted login server value with a non-numeric suffix after a port, such as 127.0.0.1:80/x. This causes Adminer’s port check to miss the privileged port while the MySQL client later interprets the value as a host and port.

3

What can this be used for in practice?

The issue can cause the Adminer host to open TCP connections to internal hosts and privileged ports before credentials are validated. Differences between connection refusal, successful handshake, and timeout can provide a blind internal port-scanning oracle.

4

What should be done if immediate patching is not possible?

Restrict network access to the Adminer login page so untrusted remote users cannot submit server values. Upgrade to Adminer 6.0.2 when possible.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203