SecurityReason.com - Our Reason is

Security

Register | Forget Password | Login
SecurityReason
WLB
Services
RSS
Corporate
Note

If you have found a vulnerability, please send to our SecurityAlert Database :
secalert()securityreason()com

Also if you have new ( 0-day ) exploit, please send to our ExploitAlert Archive :
exploit()securityreason()com

Home arrow SecurityAlert Database

Arrow  Topic :

WordPress <= 2.8.3 Remote Admin Reset Password Vulnerability


Arrow  SecurityAlert : 6184
Arrow  CVE : CVE-2009-2762
Arrow  CWE : CWE-255
Arrow  SecurityRisk : Medium  Security Risk Medium  (About)
Arrow  Remote Exploit : Yes
Arrow  Local Exploit : No
Arrow  Victim interaction required : No
Arrow  Exploit Available : Yes
Arrow  Credit : Laurent Gaffié
Arrow  Published : 11.08.2009
Arrow  Updated : 15.08.2009

Arrow  Affected Software : wordpress:wordpress:2.0.11
wordpress:wordpress:1.0:rc4
wordpress:wordpress:2.1.3
wordpress:wordpress:2.2.3
wordpress:wordpress:2.0.8
wordpress:wordpress:2.0.9
wordpress:wordpress:2.2
wordpress:wordpress:2.2.1
wordpress:wordpress:2.2.0
wordpress:wordpress:1.0:rc1
wordpress:wordpress:1.0:rc2
wordpress:wordpress:2.3.1
wordpress:wordpress:1.0:rc3
wordpress:wordpress:1.5.1.2
wordpress:wordpress:1.3.1
wordpress:wordpress:1.5.1.3
wordpress:wordpress:1.5.2
wordpress:wordpress:2.0
wordpress:wordpress:2.3.2
wordpress:wordpress:2.0.1
wordpress:wordpress:2.0.10
wordpress:wordpress:2.0.2
wordpress:wordpress:2.0.3
wordpress:wordpress:2.0.4
wordpress:wordpress:2.0.5
wordpress:wordpress:2.0.6
wordpress:wordpress:2.0.7
wordpress:wordpress:2.1
wordpress:wordpress:2.1.1
wordpress:wordpress:2.1.2
wordpress:wordpress:2.5.1
wordpress:wordpress:2.3
wordpress:wordpress:2.3.3
wordpress:wordpress:1.2:beta
wordpress:wordpress:2.3:beta3
wordpress:wordpress:2.6.3
wordpress:wordpress:0.72:rc1
wordpress:wordpress:0.72
wordpress:wordpress:2.1:alpha_3
wordpress:wordpress:2.6.1
wordpress:wordpress:2.6
wordpress:wordpress:2.3:rc1
wordpress:wordpress:2.3.1:rc1
wordpress:wordpress:2.2.2
wordpress:wordpress:1.5
wordpress:wordpress:1.5.1
wordpress:wordpress:1.2.1
wordpress:wordpress:1.2.2
wordpress:wordpress:1.0.2
wordpress:wordpress:1.2
wordpress:wordpress:1.0
wordpress:wordpress:1.0.1
wordpress:wordpress:0.7
wordpress:wordpress:2.6.5
wordpress:wordpress:0.71
wordpress:wordpress:0.6.2
wordpress:wordpress:0.6.2.1
wordpress:wordpress:2.5
wordpress:wordpress:0.6.2.1:beta_2
wordpress:wordpress:0.6.2:beta_2
wordpress:wordpress:0.711
wordpress:wordpress:1.4
wordpress:wordpress:0.72:beta1
wordpress:wordpress:2.7.1
wordpress:wordpress:1.6
wordpress:wordpress:0.72:beta2
wordpress:wordpress:2.1.3:rc1
wordpress:wordpress:1.0::platinum
wordpress:wordpress:2.2::revision5002
wordpress:wordpress:1.0.2::blakey
wordpress:wordpress:1.5::strayhorn
wordpr2000ess:wordpress:1.0.1::miles
wordpress:wordpress:1.2:delta
wordpress:wordpress:1.2::mingus
wordpress:wordpress:0.71::gold
wordpress:wordpress:2.0.10:rc1
wordpress:wordpress:2.0.10:rc2
wordpress:wordpress:2.1.3:rc2
wordpress:wordpress:2.2::revision5003
wordpress:wordpress:2.8.3 and previous versions
wordpress:wordpress:2.8.2
wordpress:wordpress:2.8.1
wordpress:wordpress:1.5.1.1
wordpress:wordpress:2.8.1:rc1
wordpress:wordpress:2.8.1:beta1
wordpress:wordpress:2.8:beta1
wordpress:wordpress:2.8.1:beta2
wordpress:wordpress:2.8.1:jazzes_themes_and_widgets



Arrow  Advisory Content :  

=============================================
- Release date: August 10th, 2009
- Discovered by: Laurent Gaffié
- Severity: Medium
=============================================

I. VULNERABILITY
-------------------------
WordPress <= 2.8.3 Remote admin reset password

II. BACKGROUND
-------------------------
WordPress is a state-of-the-art publishing platform with a focus on
aesthetics, web standards, and usability.
WordPress is both free and priceless at the same time.
More simply, WordPress is what you use when you want to work with your
blogging software, not fight it.

III. DESCRIPTION
-------------------------
The way Wordpress handle a password reset looks like this:
You submit your email adress or username via this form
/wp-login.php?action=lostpassword ;
Wordpress send you a reset confirmation like that via email:

"
Someone has asked to reset the password for the following site and
username.
http://DOMAIN_NAME.TLD/wordpress
Username: admin
To reset your password visit the following address, otherwise just ignore
this email and nothing will happen

http://DOMAIN_NAME.TLD/wordpress/wp-login.php?action=rp&key=o7naCKN3OoeU2KJ
MMsag
"

You click on the link, and then Wordpress reset your admin password, and
sends you over another email with your new credentials.

Let's see how it works:


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 ]...

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.


IV. PROOF OF CONCEPT
-------------------------
A web browser is sufficiant to reproduce this Proof of concept:
http://DOMAIN_NAME.TLD/wp-login.php?action=rp&key[]=
The password will be reset without any confirmation.

V. BUSINESS IMPACT
-------------------------
An attacker could exploit this vulnerability to reset the admin account of
any wordpress/wordpress-mu <= 2.8.3

VI. SYSTEMS AFFECTED
-------------------------
All

VII. SOLUTION
-------------------------
No patch aviable for the moment.
Just make sure the admin e-mail adress exist, the attacker cant know
what's
the reseted password.

VIII. REFERENCES
-------------------------
http://www.wordpress.org

IX. CREDITS
-------------------------
This vulnerability has been discovered by Laurent Gaffié
Laurent.gaffie{remove-this}(at)gmail.com
I'd like to shoot some greetz to securityreason.com for them great
research
on PHP, as for this under-estimated vulnerability discovered by
Maksymilian
Arciemowicz :
http://securityreason.com/achievement_securityalert/38

X. REVISION HISTORY
-------------------------
August 10th, 2009: Initial release

XI. LEGAL NOTICES
-------------------------
The information contained within this advisory is supplied "as-is"
with no warranties or guarantees of fitness of use or otherwise.
I accept no responsibility for any damage caused by the use or
misuse of this information.


Arrow  References :

http://securityreason.com/achievement_securityalert/38
http://g-laurent.blogspot.com/2009/08/wordpress-283-remote-admin-reset.html
http://core.trac.wordpress.org/changeset/11798
http://wordpress.org/development/2009/08/2-8-4-security-release/




Arrow  Feedback :

If you have additional information or notice any errors regarding this security advisory, please use contact form or email us at info()securityreason()com.
Alert

libc/fnmatch(3) DoS

Security Risk Medium- 2011-05-13

Allow attacker to denial of service apache 2.2.17 server

Apache RSS Apache Alert

» Apache HTTP Server Denial
   of Service Vulnerability

» Multiple Vendors
   libc/fnmatch(3) DoS (incl
   apache poc)

» Apache Continuum
   cross-site scripting
   vulnerability

» Apache Tomcat DoS
   Vulnerability

PHP RSS PHP Alert

» PHP Hashtables Denial of
   Service

» PHP 5.3.6 multiple null
   pointer dereference

» PHP 5.3.6 ZipArchive
   invalid use glob(3)

» libzip 0.9.3
   _zip_name_locate NULL
   Pointer Dereference (incl
   PHP 5.3.5)

ADT

Protect your family and valuables with Home Security Systems

Copyright © SecurityReason.com. All Rights Reserved.