WordPress Exploit Allows Admin Password Reset
Multiple readers have sent word of a vulnerability in WordPress 2.8.3 which allows anyone to lock an admin out of his or her account by resetting the password. "The bug ... is trivial to exploit remotely using nothing more than a web browser and a specially manipulated link. Typically, requests to reset a password are handled using a registered email address. Using the special URL, the old password is removed and a new one generated in its place with no confirmation required." An alert on the Full Disclosure mailing list detailed the vulnerability, and WordPress quickly rolled out version 2.8.4 to address the issue.
I'm wanking off CmdrTaco right now and his cock is only 2 inches long!
For those who don't RTFA, this doesn't give the attacker access to the new, reset, password. That requires access to the admin's mailbox as well. So the link saying "lock an admin out" is a bit, well, not completely true. It could be true if his/her inbox is hacked, but not otherwise.
Beware: In C++, your friends can see your privates!
None of my systems have root passwords. But I am not vulnerable.
While this may, at first glance, seem to be foolhardy, the key to this is that there are no root accounts on any of my systems. A root account is itself the biggest vulnerability, exploitable by any root-access flaw. By removing the account and accounts like it, there is no surface area to attack. At least, there is no vulnerability that puts my whole system at risk.
Is it difficult to work without root access? No, not really. The key is to take frequent backups to return the system to a known state if there is any chance of infiltration.
Is that not a bit soon? Especially with wordpress - it's going to be ages before many people update, and it's not a critical problem.
Call me a hater, but I wouldn't care if it hadn't been hyped. "Anything the hangover can do, we can beat?" Funnier than any joke in the movie, that's for damn sure.
Sounds like some type of nigger (sand nigger, curry nigger, rice nigger, black nigger etc..) wrote this code.
That's funny, my copy of Wordpress is not vulnerable to this issue. Oh wait, I tweaked things so that all of the logins and the like go over a separate, password-protected SSL connection. https://DOMAIN_NAME.TLD/wp-login.php?action=rp&key[]= just won't work :) Obviously this won't work if you let arbitrary users login to your wordpress account.
I was tired of constantly having security issues and having to upgrade. Isn't there less feature-filled blog app out there that's all lightweight and whatnot?
Thanks for the notice. I just logged in and upgraded mine. Now to do the other sites later tonight.
please hide all the elements if the AJAX reply is "Moderated 'Interesting.' 0 points left."
Thank you.
Love,
Your #1 fan.
PS: In "preview," blank lines don't show up between the paragraphs if I'm using 3*CRLF or the
elemenet.
Love,
Your #1 fan.
If Code is Poetry then Wordpress is some 15 year old's notebook scribblings on angst, Twilight and Dashboard Confessional.
If you're looking for alternatives that don't have gaping security issues with seemingly every release, check out Serendipity.
*opens dashboard, presses "Upgrade to 2.8.4" button*
Fixed. :D
I'm not a PHP expert, but why does this work?
$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'));
Is it because the $key is an array and that somehow makes the $user get a value?
for the password reset. You enter the Admin's user ID and click on a "Forgot password" button or link and it emails a new password to the email the Admin uses.
Some software like Scoop has it and the new password is only good for a few days or so, in case the user or admin didn't request a new password and it allows the old password to work until the new password is used. Only the new password is emailed to the email address on file.
Now if it showed the new password on the web page, that would be locking out the admin from their account as the exploiter can log in as the admin and then change the email the password is reset back to and lock the admin out. But in this scenario the admin gets an email with a new password and if he or she reads the email, they can log back in. They aren't locked out if they read the email that has the new password.
Remember, Slashdot does not have a -1 disagree moderation, and no, troll, flamebait, and overrated are not substitutes.
I run a site on Wordpress and managing the software updates has never been a big deal for me. I have shell access at my hosting provider, so I initially just installed Wordpress using CVS. Every time they rolled out a new bugfix, I just ran a little shell script like: "update "
With recent versions of Wordpress, though, you don't even need to do that. When a new update is available, an alert appears on your admin dashboard. From there, you can actually click a button and have the system download the update and install it automatically. I know it can be a pain when to backup your database etc., but in all honesty, for minor point bugfix updates all that is seldom if ever necessary (especially if you're diligent with backups in the first place).
Breakfast served all day!
It seems that most PHP apps have this problem because they encourage a "macro script" mentality.
Perl FTW.
Futurist Traditionalism
It appears that PHP, upon seeing an incoming parameter with a name that ends in [something] (where something may be empty), automatically turns that variable into an array.
How many of you PHP developers out there knew that? I didn't. And I had to dig quite a bit to find a reference to this behaviour in the docs.
So, incoming stuff from the URL or the POST data are no longer strings all the time. Can they magically become other things than strings and arrays as well? Maybe not now, but what if some PHP developer thinks up another "nifty" feature _after_ I read the docs; how then am I supposed to protect my application in the future? Do I need to re-read the docs every time I upgrade PHP?
And is there a way to turn this "we know better than you what you need"-behaviour off?
I'm sick of seing framework developers add "nifty" features that you have to know about in order to write secure code. It's not only PHP, but also several highly popular Java frameworks that I work with these days. Some of them make it quite easy to write to object fields that are normally out of reach of the input fields in a form.
I want a framework that makes it impossible to make mistakes, and where you have to _enable_ potentially dangerous features when you _know_ you need them, rather than _disable_ potentially dangerous features most people don't know about (or use).
I wonder why somebody would code that part the way they did it. As far as I understand it, they are trying to validate code by blacklisting instead of whitelisting:
(from http://core.trac.wordpress.org/changeset/11798)
$key = preg_replace('/[^a-z0-9]/i', '', $key);
if ( empty( $key ) )
die();
If you expect a hash you generated yourself, why don't you test if it preg_matches the spec you used to generate it in the first place? (/^[a-zA-Z0-9]{20}$/ in this case)
Well that and being naive enough to expect $_GET["key"] to always return a string....
The problem is php, not really wordpress. All self-managed php online software is full of security holes / constant updates. That's the life of php...
number10.gov.uk anyone? :)