------------------------------------------------------------------------ Insert PHP WordPress Plugin allows authenticated user to execute arbitrary PHP ------------------------------------------------------------------------ Marcel Vermeulen & Ed van der Vlies , July 2016 ------------------------------------------------------------------------ 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. ------------------------------------------------------------------------ OVE ID ------------------------------------------------------------------------ OVE-20160712-0001 ------------------------------------------------------------------------ Tested versions ------------------------------------------------------------------------ These issues were successfully tested on Insert PHP [2] 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 [2] 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] ------------------------------------------------------------------------ References ------------------------------------------------------------------------ [1] https://sumofpwn.nl/advisory/2016/insert_php_wordpress_plugin_allows_authenticated_user_to_execute_arbitrary_php.html [2] https://wordpress.org/plugins/insert-php/