一个网站被黑

是一个我用 WordPress 所搭建的 Blog。今天登录上去,想写一篇新文章的时候,发现,最新的一篇,被黑了。
这个 WordPress 是我一直在用的,而且一直保持更新的,虽然未必能最快速度的更新,但都迟不了一两天。而这次可能有点久。
看看被黑的样子。

首先,是考虑要恢复到原来的文章,还好这个站点有打开 revision 功能,可以回到之前的版本。

可以看到一共有四个版本,最底下两个是我修改,而最新的两个是两个略有不同的人成功的用 WordPress 的漏洞来替换了本来的内容(这是我后来体会到的)。

恢复文章内容后,接下来就是考虑是哪个IP,做了何种操作。

我是这样做的,先把网站访问日志下载到下来,但是太大了,725MB,于是用 split 命令,每一万行拆成一个文件。然后打开看日志,查看在前面这个修改时间所受到的访问日志。

第一条:

访问时间 05/Feb/2017:04:30:53

访问记录
89.163.131.165 - - [05/Feb/2017:04:30:47 -0800] "GET /index.php/wp-json/wp/v2/posts/ HTTP/1.1" 200 57844 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" "-"
89.163.131.165 - - [05/Feb/2017:04:30:53 -0800] "POST /index.php/wp-json/wp/v2/posts/5036 HTTP/1.1" 200 3865 "-" "-" "-"

89.163.131.165. 来自德国的IP,应该是一个VSP的地址,在 www.myloc.de。

第二条:

访问时间 04/Feb/2017:21:12:06

访问记录
37.187.75.213 - - [04/Feb/2017:21:12:04 -0800] "GET /index.php/wp-json/wp/v2/posts/ HTTP/1.1" 200 59815 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0" "-"
37.187.75.213 - - [04/Feb/2017:21:12:06 -0800] "POST /index.php/wp-json/wp/v2/posts/5036 HTTP/1.1" 200 3863 "-" "-" "-"

37.187.75.213 是OVH的VPS,一个廉价云服务商。

可以看到所构造的 url 就是 /index.php/wp-json/wp/v2/posts/。再一查,才知道是 WordPress 4.7.0 和4.7.1 所共有的一个安全漏洞,已经在4.7.2 版本中修复。

所以整个过程就是被黑,恢复。因为已经升级到最新版了,也不会再次因为同样这个问题而被黑。

得到的教训和体会就是,最好开启自动更新,或者随时更新到最新版本,做好数据备份,以备不时之需。

P.S. 漏洞发现者: https://blog.sucuri.net/2017/02/content-injection-vulnerability-wordpress-rest-api.html