我是有多懒,修复一年前发现的广告注入,顺便祝博客10周年

懒懒更健康

首先说一下我是有多懒吧:我知道我的博客被广告注入已经1年4个月,493天了。

另外,距离2006-07-08开立博客,也已经过了10年了,发篇文章纪念一下吧。

来龙,16个月前

wordpress是有默认的rss2路径的,不过我利用hooks绑定函数将其改为了二级域名。于是,去年春天,Yes it was Mar 7 2015, 493 days ago,我收到一封读者的来信,询问我博客的rss地址是多少,以便于订阅。于是我就跟他(她)聊了聊。结果过了一会儿,对方回复我邮件说,利用订阅工具获取的文章中有广告,浏览器直接打开却没有。

ad-injection-1

广告?怎么可能,我这种有洁癖的人,连国内同样玩博客的朋友的“友链”都不添加到我的网站上,而且连主题和插件都是我自己开发,怎么会有广告的?

ad-injection-2

我当即修改了一下浏览器的UA试验了一下,赤裸裸的大脸啊,果然博客被广告注入了。

我立马在服务器上新建了一个简单的php脚本,经过测试,没有广告,说明不是服务器厂商的问题。然后我做了个小脚本,引用了wordpress的相关库,广告出来了。

看来广告是通过wordpress的某些功能输出的。

然后,就没有然后了。工作劳累,还要养家糊口。我简单的检查了一下代码,只要博客没其他问题,仅仅在某些UA下面多了一些隐藏的外链,就由它去吧。

然后过了几天,我就把这个事情给忘了,汗颜啊。

去脉,今天

今天晚上正好需要值班,批量整理邮件分类的时候,又看到了这封邮件,于是拿出个把小时处理一下吧。

  1. 第一步,检查数据库。经查没有外链的数据,看来要么是非明文存储,要么是实时或缓存方式在线下载。
  2. 主题和插件是我自己开发的,是不是有漏洞?全部禁用掉,广告仍然还在。看来时效性漏洞不在这里。
  3. wordpress有自动升级,注入的代码不会存储在平台本身的源码文件中,只能通过某种方式引用。

思路清晰了,开始检查。首先下载最新版本的官方wordpress安装包,对服务器的文件进行逐字节对比,找到了超级多不一致的地方(博客运行了这么多年了,主题插件文件缓存等满满的)。但是既然去年我做过测试,引用wordpress的相关库才会有广告,那么就按照顺序排查吧。

  1. index.php -> wp-blog-header.php,没问题
  2. wp-blog-header.php -> wp-load.php和template-loader.php,并执行wx函数,没问题
  3. wp-load.php -> wp-config.php,在配置文件中,果然找到了异常的代码。

配置文件的最下面,禁止用户修改的区域多引用了一个不明文件:

require_once( ABSPATH . WPINC . ‘/pomo/wp-var.php’ );我不记得配置文件中需要加载一个所谓的wp-var文件,何况虽然wordpress中的确pomo文件夹,但这个是存储翻译用的po文件和mo文件调用的,也没必要在初始化的时候调用。打开wp-var文件,果然是异常代码:

代码好假,还有所谓的注释。其实里面就一个意思,符合某些浏览器UA则不加载某文件,其它情况下加载文件。wp-plugin这么个文件就是广告代码了:

广告HTML脚本放置于base64编码的url文件中(一个txt文件),并将其打印出来。由于这个文件是在wordpress初始化时执行的,自然广告隐藏在了body顶部。

修复

找到原因了,修复起来也很简单。这两个文件删除,config中的引用代码删除也就完事了。

作者: Leniy

Do not , for one repulse , give up the purpose that you resolved to effect .

本文著作版权归Leniy所有,并受法律保护。

转载、使用整体或任何部分的内容(包含但不限于各个页面的标题、评论框提示语)须经过Leniy的授权。

CopyRight © 2006-2017 Leniy.org all rights reserved.

16 thoughts on “我是有多懒,修复一年前发现的广告注入,顺便祝博客10周年

  1. 十年,真是一个艰辛的历程。
    从 Web 1.0 -> 2.0 ,现在的网络早已不如当年。
    对了,预祝你新年快乐哈~!

    • Leniy

      哈哈,最近的垃圾评论太多了,把你的正常的评论淹没了。刚刚整理评论才发现

    • Leniy

      关键问题是,在找到原因之前,根本不知道恶意代码是怎么插入的,没法针对性的筛选出来

  2. 尤美Yumi的私房写真

    还是加点广告吧,换个好点的主机。或者用百度云加速,现在打开太慢了。

    • Leniy

      我计划过一两个月,把博客放在我的独立服务器上,免得国外的访问这么慢

发表评论

电子邮件地址不会被公开。 必填项已用*标注