Andrea Beggi

"I'm brave but I'm chicken shit"

Scalare i privilegi di un utente WordPress tramite script PHP

Questo non è un post che suggerisce metodi per violare la sicurezza di un blog, ma per rimediare ad un inconveniente che ho incontrato qualche volta. In particolare mi è successo che i privilegi di un utente si fossero in qualche modo “corrotti” e non fosse più possibile accedere alle funzioni di amministrazione.

Lo scenario è il seguente. Devo fare degli interventi di manutenzione su un blog WordPress che ha qualche problema di funzionamento. Le cose che ho a disposizione sono:

  • Credenziali per accedere via FTP.
  • Credenziali di un’utenza WordPress con privilegi normali.

Come prima cosa accedo al blog con l’account e visualizzo la dashboard (bacheca).

Poi creo un file che chiamo, per esempio, get_user_info.php, con il seguente contenuto:

<?php global $current_user;
      require('wp-blog-header.php');
      get_currentuserinfo();

      echo 'Username: ' . $current_user->user_login . "\n";
      echo '</br>';
      echo 'User email: ' . $current_user->user_email . "\n";
      echo '</br>';
      echo 'User first name: ' . $current_user->user_firstname . "\n";
      echo '</br>';
      echo 'User last name: ' . $current_user->user_lastname . "\n";
      echo '</br>';
      echo 'User display name: ' . $current_user->display_name . "\n";
      echo '</br>';
      echo 'User ID: ' . $current_user->ID . "\n";

?>

e lo copio via FTP nella root che contiene il blog sul server http.

Lo eseguo inserendo nella barra indirizzi del browser:

http://www.dominio.com/get_user_info.php

La pagina dà alcune informazioni; la più importante è lo user ID, che mi serve nello step successivo.

Creo un altro file, per esempio update_user_role.php, con il seguente contenuto:

<?php
require( './wp-load.php' );

 $user_id = inserire_qui_user_ID_corretto;

 $new_role = 'administrator';
 wp_update_user( array ('ID' => $user_id, 'role' => $new_role ) ) ;
 echo 'Fatto.';

?>

avendo cura di inserire lo user ID che ho rilevato poco fa nella riga relativa. Copio anche questo sul server via FTP e lo eseguo con le stesse modalità del precedente:

http://www.dominio.com/update_user_role.php

Ritorno alla bacheca del blog e faccio un refresh della pagina.
Missione compiuta.
(Devo solo ricordarmi di cancellare dal server i file che ho appena utilizzato).

 


Pubblicato

in

da

Commenti

7 risposte a “Scalare i privilegi di un utente WordPress tramite script PHP”

  1. Avatar Giuseppe
    Giuseppe

    Non è possibile fare lo stesso con un solo file (il secondo) dove al posto dell’hardcoding dell’user id uso get_user_by( ‘login’, il_login_che_conosco) per recuperare l’utente e quindi il suo ID?

  2. Avatar Andrea

    Si, certo! Ma non sono bravo a scrivere codice….. 🙂

  3. Avatar Gianluca

    Ciao, bel blog.
    Finalmente una persona chiara e piacevole da leggere.
    Per il primo file con le info dell’utente, posso suggerire anche:
    echo “”;
    print_r($current_user);
    echo “”;
    Così eviti di scrivere tutte le chiamate alla classe utente.

    Ciao!

  4. Avatar Gianluca

    Wops, nel commento precedente sono stati rimossi i tag html.
    echo “”;
    print_r($current_user);
    echo “”;

    Ovviamente senza spazi.

    Riciao.