Marcel Vermeulen <vermeulen.mc.at.gmail.com> & Ed van der Vlies <ecvdvlies.at.gmail.com>, July 2016

Insert PHP WordPress Plugin allows authenticated user to execute arbitrary PHP

Abstract

It was found that the Insert PHP WordPress Plugin allows an authenticated user with Contributor role (or higher) to run arbitrary PHP code. Consequently, this effectively disables any security controls implemented in WordPress.

Contact

For feedback or questions about this advisory mail us at sumofpwn at securify.nl

The Summer of Pwnage

This issue has been found during the Summer of Pwnage hacker event, running from July 1-29. A community summer event in which a large group of security bughunters (worldwide) collaborate in a month of security research on Open Source Software (WordPress this time). For fun. The event is hosted by Securify in Amsterdam.

OVE ID

OVE-20160712-0001

Tested versions

These issues were successfully tested on Insert PHP WordPress Plugin version 1.3.

Fix

There is currently no fix available. The author of the Insert PHP WordPress Plugin has indicated that this issue will not be resolved/mitigated.

Introduction

The Insert PHP WordPress Plugin allows PHP code inserted into WordPress posts and pages. The plugin exposes the insert_php shortcode, which is used to insert and run the PHP code in a post or page. A Contributor or higher is allowed to use this shortcode, this effectively disables any security controls implemented in WordPress.

Details

An authenticated user with Contributor role (or higher), can make a new post and execute any command on the server. Since the privileges of a Contributor are normally restricted, using the insert_php shortcode effectively disables any security controls implemented in WordPress.

Proof of concept

Create a new post and add the following shortcode:

[insert_php]eval(base64_decode('c3lzdGVtKCdjYXQgL2V0Yy9wYXNzd2QnKTs='));[/insert_php]