WordPress Adminer plugin allows public (local) database login

Abstract

The Adminer WordPress plugin allows public login to the site's editor. As a result this allows an attacker to connect to any database running on the local host or on internal systems which are accessible from the target WordPress server.

OVE ID

OVE-20160728-0001

Tested versions

This issue was successfully tested on the Adminer WordPress Plugin version 1.4.4.

Fix

Currently no fix for this issue is available.

Introduction

The Adminer WordPress plugin is a full-featured MySQL management tool based on the Adminer project. The plugin allows fast database management for WordPress admins. After installation of the plugin your database can be managed easily from within the WordPress Dashboard via the Tools -> Adminer menu option. This issue allows an attacker to connect to any database running on the local host or on internal systems which are accessible from the target WordPress server.

Please note that an attacker still needs to login (for example using username and password) to the target database. However, many site owners probably do not know or do not expect that anyone out there can try to login by using various password combinations to their (local) WordPress database. Often local or internal databases have weak credentials assigned to them.

Details

This issue exists due to the fact that the Adminer WordPress plugin exposes a publicly accessible interface (Adminer editor) that can be used by anyone on the web to authenticate against the site’s database directly. No login to the WordPress dashboard or admin login is required. It seems that the Adminer editor component was added about 5 months ago.

An attacker can also specify the target host:port combination of the database to connect to, which allows him to connect to any database running on the local host or on internal systems which are accessible from the target WordPress server.

The script has a measure in place to limit brute-force attacks. Upon 30 connection attempts from a single IP this IP will be blocked for 30 minutes.

The script can be found at the following location (change URL to your WordPress site): http://wp-site.com/wp-content/plugins/adminer/inc/editor/index.php

Using Google many sites can be found that have a publicly accessible database login page exposed: https://www.google.nl/search?q=inurl:/adminer/inc/

Proof of concept

Vragen of feedback?