Bir güvenlik açığı son zamanlarda WordPress 2.8.3 etkiler ve yönetici kullanıcı şifresini değiştirerek kendi hesabının kilitlenmesine izin verdiği açıklanmıştır.
This post Tam Açıklanmasına İlişkin kusur ayrıntıları ve ilgili kod parçacıkları içerir. Mesajı bahseder 'You can abuse the password reset function, and bypass the first step and then reset the admin password by submiting an array to the $key variable.'
PHP daha ayrıntılı hata açıklayan aşina birisi ilgi duyarım.
Etkilenenlerin gerekir update görünüşe göre kusur giderir yeni 2.8.4 sürümü için.
wp-login.php:
...[snip]....
line 186:
function reset_password($key) {
global $wpdb;
$key = preg_replace('/[^a-z0-9]/i', '', $key);
if ( empty( $key ) )
return new WP_Error('invalid_key', __('Invalid key'));
$user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE
user_activation_key = %s", $key));
if ( empty( $user ) )
return new WP_Error('invalid_key', __('Invalid key'));
...[snip]....
line 276:
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
$errors = new WP_Error();
if ( isset($_GET['key']) )
$action = 'resetpass';
// validate action so as to default to the login screen
if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword',
'resetpass', 'rp', 'register', 'login')) && false ===
has_filter('login_form_' . $action) )
$action = 'login';
...[snip]....
line 370:
break;
case 'resetpass' :
case 'rp' :
$errors = reset_password($_GET['key']);
if ( ! is_wp_error($errors) ) {
wp_redirect('wp-login.php?checkemail=newpass');
exit();
}
wp_redirect('wp-login.php?action=lostpassword&error=invalidkey');
exit();
break;
...[snip ]...