We have 82 installations of WordPress on our servers and are excited for the new release of WordPress 3.1. There are a bunch of neat new features, but probably the thing that most of our clients will notice first is that there is a new admin bar that will show up for them. Should be fun managing the upgrades. 🙂
We’ll be upgrading most of our clients to the latest version of WordPress 2.9.1 now that they’ve resolved a number of the issues we were seeing with the 2.9 release. Good job guys on getting a quick fix out!
Question: Is the built-in WordPress automatic install / upgrade process compatible with a SVN deployment of WordPress?
Short answer: Yes.
Ever since WordPress came out with the automatic upgrade functionality in 2.7 I’ve hesitated to use it since the majority of our client installs are deployed using Subversion (svn) and I wasn’t sure how it would react with the .svn directories.
Today I finally decided to figure it out, and found that the WordPress team coded their upgrading functions exactly correctly (as far as not overwriting or deleting .svn directories goes). In addition, their script correctly removes old and unneeded files that might be present.
First, check to make sure that our svn checkout is clean:
$ svn st
Next, we begin the automatic upgrade process.
Step 1: Click the WordPress 2.8.5 “Please update now.” link: Step 2: Backup your files as suggested – http://codex.wordpress.org/WordPress_Backups Step 3: Enter your FTP connection details and click the Proceed button Step 4: Wait while the files are downloaded and unzipped. This can take a minute or two, so be patient.
Now we can check to see what files were changed:
$ svn st
First, the good news: Matt & his brave crew of WordPress coders have just released version 2.6 of the Open Source award-winningly awesome content management system called WordPress (download it here). I’ve been using it since it was called b2, and love it. I recommend it for most of my clients, and they love the simplicity and ease of use. I also really like how easy it is to customize and extend, using the excellent theme and plugin system.
If you have a WordPress installation yourself, please upgrade it today. Why should you do it today? In short, not only does the latest version of WordPress have some awesome new features (like content change tracking, a new “Press this” browser bookmark, using Google’s Gears system to make it faster, and about 194 bug fixes) it also contains the latest SECURITY FIXES.
Why should you care about security fixes? Because older versions of WordPress are vulnerable to exploits. I know this for a fact, and have been working on cleaning out a number of older installations of WordPress that have been hacked. This isn’t a fun process, and if you stay up to date, you will have the best chance of not getting hacked yourself.
This isn’t a problem exclusive to WordPress, and they’ve done a really good job generally at fixing holes (the current release proactively fixes a number of potential issues), but it is an issue you should definitely look into.
On a Unix machine, one thing to look for is this pattern in any files: md5($_COOKIE'
You can do a search through all your hosting accounts by running this command (run as root): # grep -R 'md5($_COOKIE' /home/
That will tell you if you have any infected files (for this particular exploit). If you find any, you need to clean out those files. If you are running your sites out of version control (like using svn), this may be slightly easier.
$ svn st should tell you if any files were changed from the last time you checked them out. If you see unexpected files show up, you’ve been hacked.
To clean out your installation, not using version control method (done as root in this case):
Copy your whole public_html directory to another location so you can do forensics on it and copy valid files back into your new installation: # cd /home/USERNAME/ # mkdir public_html-hacked # mv public_html/* public_html-hacked/
Download a clean copy of WordPress into your public_html: # cd /home/USERNAME/ # wget http://wordpress.org/latest.zip . # unzip latest.zip # cp -R wordpress/* public_html/ # chown -R USERNAME:USERNAME public_html/*
Create a new wp-config.php file. It’s probably a really good idea to first change your MySQL database password. To create your new config file: #cd public_html/ # cp wp-config-sample.php wp-config.php # vi wp-config.php Enter the correct (new) values for your MySQL database name, username, password, and the (currently 3) authorization unique key values (go to http://api.wordpress.org/secret-key/1.1/ to automatically generate the 3 keys for you to copy/paste into your config file.
Next, upgrade your WordPress database: http://example.com/wp-admin/upgrade.php. You’ll have to sign in with your admin username and password. Once this is done (should go without a hitch, hopefully), examine your user table to see if there are any entries there that shouldn’t be. Delete any users that you didn’t create. Also, it would be a good idea to update the password for each user in the system.
Go through all of your Settings, looking for any suspicious changes. Specifically notice what the Uploads directory is set to (in Settings->Miscellaneous). It should probably be set to something like wp-content/uploads. If it says something like ../../../../../tmp/ change it back. Also go look there to see if there are any left-over files that need to be investigated and removed.
Make a local copy backup of your database and then clean out entries that don’t belong there. Check your raw database (using something like PHPMyAdmin or command line mysql tools) and examine the wp_users table. Look for a user called WordPress. Delete it! If you found it, also check the wp_usermeta table and delete all entries associated with the bogus WordPress user ID. Next, check through your other MySQL tables to look for any suspicious entries (attached files, comments, posts, etc.) Delete anything that looks incorrect or wrong, but be sure not to delete your actual content.
As you can see, there are lots of things to check for if your installation of WordPress gets compromised. So, to save yourself a lot of pain and suffering, make sure you upgrade your WordPress installation(s) just as soon as you can.
More good info if you think your WordPress installation has been hacked: