Recentemente mi sono imbattuto in un sito WordPress (v 4.7.2) con un file wp-config.php esposto, all'interno del quale erano accessibili i segreti delle chiavi di autorizzazione del server di testo normale.
Dopo aver letto l'articolo di Mike Czumak sulla generazione di cookie WordPress, capisco a un alto livello come può funzionare la generazione dei cookie di sessione di autenticazione WP:
link
Gli input dipendenti pertinenti necessari per il processo brute-force sono un ID utente WordPress, un nome server e i segreti AUTH del server validi da wp-config.php.
L'articolo si applica comunque a WordPress 3.9. Mi chiedo se l'attacco di forza bruta descritto nell'articolo sia possibile nelle versioni più recenti. Ho provato il POC e ho scoperto che i cookie di autenticazione versione 3.9 erano in un formato più breve di quelli richiesti per 4.7.2.
Il confronto tra il codice sorgente di WordPress rivela un ulteriore parametro $token
utilizzato per generare $auth_cookie
.
3.9
$auth_cookie = wp_generate_auth_cookie($user_id, $expiration, $scheme);
$logged_in_cookie = wp_generate_auth_cookie($user_id, $expiration, 'logged_in');
4.7.2
if ( '' === $token ) {
$manager = WP_Session_Tokens::get_instance( $user_id );
$token = $manager->create( $expiration );
}
$auth_cookie = wp_generate_auth_cookie( $user_id, $expiration, $scheme, $token );
$logged_in_cookie = wp_generate_auth_cookie( $user_id, $expiration, 'logged_in', $token );
Sono in procinto di segnalare il problema ai proprietari del sito. Non sono stato in grado di seguire completamente il più recente codice PHP (> 3.9) e quindi vorrei sapere se lo stesso tipo di attacco brute force di generazione dei cookie è fattibile sulla versione 4.7.2?