WP-Google-Drive插件潜在的安全性漏洞

博主平时就经常用Google的各项服务,所以连博客的备份也选择了使用Google Drive作为存储服务,于是就用上了这个WP-Google-Drive插件.

WP-Google-Drive会通过Google Drive的API定期将你的博客文件和数据库备份上传到Google Drive.这本来是没什么问题,Google Drive的安全性也很有保障.

在说明这个漏洞之前,我们先来研究一下WP-Google-Drive插件的运行机制,很快你就会知道我所说的漏洞究竟在哪了.

  1. WP-Google-Drive定时任务被触发,开始进行备份.
  2. 将数据库备份到/wp-content/db/目录,保存为一个以blog开头的后面跟着时间戳的sql文件,将文件备份到/wp-content/backup/目录,保存为一个以blog开头的后面跟着时间戳的zip文件.
  3. 将sql文件和zip文件上传到Google Drive.
  4. 设定下一个定时任务并结束当前定时任务

一切看起来合情合理?当然不是,WP-Google-Drive将数据备份到了可在互联网访问的目录中,这意味着任何能访问互联网的用户都可以访问这两个备份文件.在任何情况下,WP-Google-Drive都不会给你这方面的安全提示.

如果你的服务器设置了显示目录结构,那么db和backup两个目录被直接访问时,就会列出该目录下的所有文件,你的备份也就完了.即使不知道文件名,也可以通过时间戳信息进行爆破,最终还是会被获取到备份数据,备份数据对于大站来说更加重要.

为什么备份被访问到会有危险呢?首先这些数据是你的隐私,内容不应该被他人查看,备份中包含了你的博客账户和密码,会带来严重的安全隐患.其次这些数据中含有大量用户信息,比如留言的访客的电子邮箱地址等等,这些信息可能被不法分子利用,作为一个博客主,这是要负起的最起码的责任.

解决方案

解决这个安全性漏洞的方案很简单,但我相信这并不是最好的解决方案.

博主我博客的环境是LAMP,相信大多数Wordpress用户使用的都是该环境,方案实行的前提是你的服务器支持使用.htaccess文件.

新建一个.htaccess文件,文件内容如下:

order allow,deny  
deny from all  

将这个.htaccess文件上传到你的/wp-content/db/和/wp-content/backup/目录下.

上传成功后访问备份文件将会出现403 Forbidden,提示权限不足无法访问.

这个方案会带来一个副作用,就是失去通过直接访问下载备份文件的功能,WP-Google-Drive设置中的Download功能将会无效.