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).
Commenti
7 risposte a “Scalare i privilegi di un utente WordPress tramite script PHP”
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?
Si, certo! Ma non sono bravo a scrivere codice….. 🙂
[…] See on http://www.andreabeggi.net […]
Spettacolo.
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!
Wops, nel commento precedente sono stati rimossi i tag html.
echo “”;
print_r($current_user);
echo “”;
Ovviamente senza spazi.
Riciao.
angosciato 😀