在朋友的受感染Wordpress网站上找到此代码,有什么想法吗?
Pastebin,因为它太长了
$OO_OO0_00_='1515';
$O__OO_00O0='1515';
$O0O0_0_OO_='0';
$O_00OOO0__='1';
$OOO_0O_00_='1';
$O0__O0O_O0=urldecode("see pastebin
我看到了有关打开套接字的参考。
答案 0 :(得分:3)
What @Chris said。但是出于个人的好奇心,我已经对其进行了足够的解码,以了解其工作的要旨。这段代码可以做几件事。
最重要的是,此代码将接受通过发送带有supfiles
,sfilename
和sfilecontent
参数的请求来覆盖任意现有文件(如果文件权限允许)的任意文件上传。在sfilename
上也没有路径检查,因此该脚本可能会在用户有权写入的文件系统上的任何位置(可能包含或可能不包含~/.ssh/authorized_keys
这样的有用位置)写入文件。>
但是它的核心活动似乎是:
www%d.bcsad.top
的引用,该引用被馈送到sprintf()
中,因此确切的主机名至少是动态的)sitemap.xml
文件或其变体(例如sitemap-video-1-20.xml
)的请求,它将生成一个包含指向该远程服务器的链接的请求。.htaccess
文件,该文件将不存在的请求重定向到受感染的文件,它将尝试创建一个做到这一点的文件(Wordpress确实具有这样的功能文件,但不是在所有子文件夹中。)有一段类似的代码on unphp.net(cached,因为目前似乎已关闭)与您的代码不同(它似乎缺少文件上传选项),但仍然有有很多重叠之处,因此可以让您大致了解此代码的作用。
答案 1 :(得分:2)
这真的无关紧要。问题是它首先存在。
您有两种选择,可以是删除网站,然后从最新的wordpress版本开始,希望此漏洞已得到解决。
或者,您真的需要确定它是否值得(如果不能说服您的朋友重新开始)。但是,如果丢失了太多重要数据,您将需要清理站点,这将变得不容易,您将需要检查每个文件(包括隐藏文件,目录等),检查数据库,是否安全?保留它,如果不能保留,则可以清除其中的任何有害数据。
但是,在我看来,此服务器已损坏,请将其装箱并重新启动。希望主机在此突破之前有一个备份,尽管我怀疑这可能是一厢情愿的事情。
答案 2 :(得分:1)
似乎需要花费几个小时才能对其进行解码。
像$OO0O_0_O_0
这样的变量将转换为函数名称。
$OO0O_0_O_0 = 'preg_replace_callback';
$O0__O0_OO0 = 'stream_socket_client';
$O0OO0_0__O = 'stream_get_meta_data';
$OO0O_0_0O_ = 'stream_set_blocking';
$OO_00_0O_O = 'stream_set_timeout';
$O0_00OO__O = 'ignore_user_abort';
$OO_00__OO0 = 'file_put_contents';
$O0O0_O_O0_ = 'file_get_contents';
$OOO0__00O_ = 'http_build_query';
$OOO0_00O__ = 'function_exists';
$O_00O_O_O0 = 'error_reporting';
$O_00OO_0_O = 'create_function';
$O_00O__O0O = 'set_time_limit';
$O000O_O__O = 'gethostbyname';
$O__0O_0O0O = 'base64_decode';
$OO0OO_0__0 = 'preg_replace';
$OO00O_0O__ = 'str_replace';
$OO00_O0O__ = 'file_exists';
$O0_0O_0O_O = 'curl_setopt';
$OO_OO00__0 = 'array_shift';
$O0_OO00_O_ = 'preg_match';
$OO0O0__0O_ = 'curl_error';
$OO00__O_0O = 'curl_close';
$O_0O_O00O_ = 'urlencode';
$O_O0O0__0O = 'parse_url';
$O___0OOO00 = 'gzinflate';
$O0_0O_OO_0 = 'curl_init';
$O0_O0__O0O = 'curl_exec';
$O0_0_O0O_O = 'is_array';
$OO00OO_0__ = 'strrpos';
$O__OO00O_0 = 'mt_rand';
$O_00_OO_0O = 'implode';
$O_O00__OO0 = 'gzclose';
$O_00O_0O_O = 'explode';
$O_O0__O00O = 'usleep';
$O0_O_OO00_ = 'unlink';
$O0O__0OO0_ = 'strstr';
$O_0O0O0O__ = 'strpos';
$OO_0_0O_O0 = 'strlen';
$O00___0OOO = 'hexdec';
$O_000OOO__ = 'gzopen';
$O0__0OO_0O = 'fwrite';
$O00OO0_O__ = 'fclose';
$O__0_0OOO0 = 'mkdir';
$OO0OO__0_0 = 'fread';
$OO0O_O0__0 = 'fgets';
$OO_O_O0_00 = 'count';
$O00O_0_O_O = 'chmod';
$O_O00_O0_O = 'trim';
$OO__O00O_0 = 'join';
$O0_OOO__00 = 'feof';
$OOOO___000 = 'date';
如果有空闲时间,可以编写一些脚本来解码所有垃圾(或手动完成)。