2007年5月21日,也就是昨天,一个影响WordPress 2.1.3及更早版本的SQL注入漏洞被公布了出来。[via][via]
刚刚在网上看到相关说明,这次是因为没注意检查传入的Cookies而导致可以SQL注入的。(不过SQL注入基本上全是没注意检查传入的变量引起的吧)不过这次注入后执行的SQL语句的返回没有被输出,所以没有办法通过输出直接或间接地获取存放在数据库中的管理员密码。这次的攻击程序只能通过分析页面执行时间的长短来检测密码,这样导致检测时间比较长,而且设置的越长检测结果越精确。通过分析页面执行时间来获取数据库中的资料这种方式倒是很值得研究一下,再使用二分法来检测每一位字符最终获得全部32位字符的方法很好玩。
还好这个问题已经在WordPress 2.2里被修复了。(2007年5月11日的Changeset 5440)WordPress 2.2已经发布一个星期了,模板、插件等各方面兼容性也比较完善了。甚至于,K2模板因为WordPress 2.2的发布准备发布一个新版本(via 《K2 Still Alive》),不过至今一个礼拜过去了,还是没个影,可怜的K2 0.95 RC1还是一直飘在那儿。现在是时候更新到WordPress 2.2了,顺便可以消除这个漏洞。而坚守WordPress 2.1.3的XDJM们,则可以参考WordPress 2.2修改的部分,在wp-includes/pluggable.php的第122行(这是一个空行)加上一句$user_login = $wpdb->escape($user_login);。
尝试用攻击代码获取我自己Blog的密码。程序运行在DreamHost主机上,而我的Blog在盘古主机上,所以网络速度比较慢,再加上这个程序本身也很耗时间,最后耗时20分钟拿到了我的Blog密码,当然是MD5过的。对比存放在数据库里的密码,一个字都不差。这种感觉以前经历过一次,所以这次没那么震惊了,唉。如果是黑客拿到了这串密码,再MD5一次,然后伪造一个Cookies就可以登入WordPress后台了。
因为SQL注入可以执行任意的SQL语句,所以如果黑客恶意修改或破坏数据库也没什么办法。但是对于存放在数据库里的用户信息,倒是可以加强一下防范。用户ID可以修改一下,不过文章表和评论表都用到了用户ID,修改起来也比较麻烦。
而安装WordPress时可以修改默认的数据表前缀"wp_",然后再另做一个"wp_users"表,用于迷惑黑客,这样也很不错啊。不过已经装好的WordPress就没办法了,数据表前缀最好不要修改,记得它还被用在"wp_option"表中的某个地方。
另外还有用户名,WordPress不允许修改用户名,很多人是通过新建一个用户,然后把新用户设置为管理员,然后再删除原来的"admin"用户来解决这个问题的。另外,也可以直接修改数据库来修改用户名。因为伪造Cookies需要使用用户名,所以改掉用户名也可以起到防范的作用。
再有就是把WordPress本身以及各个模板和插件的文件的权限设置的低一点,使得在WordPress后台无法修改这些文件。因为黑客登录后台后会上传木马以获得web shell,WordPress本身做了一点限制,就是禁止后台的编辑器修改wp-config.php文件,再把通过设置权限来禁止后台的编辑器编辑各个PHP文件,上传木马就会比较困难了。
当然,最重要的还是做好数据库和文件的备份。还有就是少得罪人,少结点怨,嘿嘿。
为什么存档里面5月只有一篇日志?
yskin老大,还等你的2.2功能介绍和心得呢
恩!这个要注意
如果你是问为什么我5月写的那么少,回答是我最近比较忙。
如果你是问为什么5月有两篇文章而sidebar里显示5月只有一篇,那么是因为我启用了WordPress的cache功能,cache的过期时间是3个小时。
aLinks和WP-CACHE在2.2下全有兼容性问题
看WP的开发路线图竟然没看到2.1分支,没有2.1.4了么?……寒……
WordPress 2.1早就停了。下一个版本应该是WordPress 2.2.1或者WordPress 2.3。既然WordPress 2.2已经正式发布了,那么一些插件应该会尽快更新版本以提供对WordPress 2.2的支持,你就再等等吧。
呃,如果起了个比较简单一点的密码,MD5加密了也没用。今早就不小心进到别人blog的后台去了,她的密码是一个常见的英文单词。
PS:Yskin用的也是盘古的空间啊,应该是合租类型的吧。我买的是小空间,跟它网站在同一个服务器上,结果现在两个一块Down了。 =.=
=.= 乱进别人的后台,如果不是有意的,你怎么解释你是如何点进他的登录页面的?咔咔,你不是就是传说中的黑客吧。
没有WP-CACHE支持的wordpress永远是玩具。
再来怨念2.2.2without2.1.4……
呃,如果起了个比较简单一点的密码,MD5加密了也没用。今早就不小心进到别人blog的后台去了,她的密码是一个常见的英文单词。