NỘI DUNG
WordPress bị chèn mã độc ClickFix đang là một trong những hình thức tấn công phổ biến nhắm vào các website WordPress trong thời gian gần đây. Hacker lợi dụng website để hiển thị Fake Cloudflare hoặc Fake reCAPTCHA nhằm lừa người dùng thực thi mã độc trên máy tính. Trong bài viết này, mình sẽ hướng dẫn cách kiểm tra, xác định nguyên nhân và xử lý triệt để website WordPress bị chèn mã độc ClickFix.
Bài viết này sẽ hướng dẫn cách kiểm tra, xác định nguyên nhân và khắc phục theo góc độ quản trị WordPress. Bạn có thể xem các ảnh sau để chi tiết hơn về ClickFix



ClickFix là gì?
ClickFix là một hình thức Social Engineering (lừa người dùng thao tác) chứ không phải khai thác lỗ hổng trình duyệt.
Thay vì tải file .exe, hacker sẽ hiển thị một trang xác minh giả như:
- I’m not a robot
- Verify you are human
- Cloudflare Verification
- Browser Update
Sau đó yêu cầu người dùng thực hiện
- Win + R
- Ctrl + V
- Enter
Lệnh được dán vào máy tính sẽ tải thêm malware từ Internet. Website WordPress lúc này trở thành nơi phát tán mã độc.
Dấu hiệu website đã bị chèn ClickFix
Một số biểu hiện thường gặp:
- Xuất hiện popup “I’m not a robot”
- Giao diện Cloudflare giả
- reCAPTCHA giả
- Website chỉ bị với khách truy cập mới
- Quản trị viên không thấy hiện tượng
- Source HTML có thêm đoạn JavaScript lạ
- Trình duyệt load thêm JavaScript từ domain không rõ nguồn gốc
Nguyên nhân
Qua nhiều trường hợp thực tế, mã độc thường được chèn vào một trong các vị trí sau:
- Theme
- Plugin
- MU Plugin
- Database (
wp_options) - Plugin chèn Header/Footer
- Plugin nulled
- Backdoor còn sót lại sau khi website từng bị hack
Không có một vị trí cố định.
Các bước kiểm tra
Bước 1. Kiểm tra trên trình duyệt
Mở DevTools (F12). Kiểm tra Console
Thử liệt kê toàn bộ JavaScript đang được load:
[...document.scripts].map(x => x.src)Nếu thấy JavaScript từ các domain lạ như sau thì cần kiểm tra ngay.
verify-xxxx.xyz
captcha-xxxx.top
cloudflare-security.site
Kiểm tra Network
Reload website và lọc theo JS hoặc Fetch/XHR
Kiểm tra xem website có gọi request sang domain lạ hay không.
Search trong Source
Nhấn Ctrl + Shift + F sau đó tìm các từ khoá sau
clipboard
writeText
navigator.clipboard
atob(
eval(
Function(
TextDecoder
fromCharCodeBước 2. Kiểm tra bằng WP-CLI
Có thể dùng WP-CLI để kiểm tra nhanh dữ liệu trong Database.
wp search-replace "clipboard" "clipboard" --dry-run --all-tables
wp search-replace "navigator.clipboard" "navigator.clipboard" --dry-run --all-tables
Ngoài ra có thể tìm thêm theo từ khoá
writeText
recaptcha
Cloudflare
Ray ID
I'm not a robotLưu ý: Không phải website nào cũng chứa các chuỗi trên. Hacker hoàn toàn có thể thay đổi nội dung hoặc mã hóa nhiều lớp.
Bước 3. Kiểm tra Output của WordPress
Một cách rất hiệu quả là dùng WP-CLI để xem plugin hoặc theme có tự động in thêm JavaScript hay không.
Ví du:
wp option get siteurlNếu cuối lệnh xuất hiện thêm đoạn sau. thì gần như chắc chắn WordPress đang bị chèn mã.
<script>
...
</script>
Bước 4. Khoanh vùng Plugin hay Theme
Đây là bước rất hữu ích
Bỏ qua Theme
Nếu vẫn xuất hiện mã độc. => Có khả năng nằm ở Plugin.
wp --skip-themes option get siteurlBỏ qua Plugin và Theme
wp --skip-plugins --skip-themes option get siteurlNếu lúc này mã độc biến mất: => Gần như chắc chắn thủ phạm nằm trong Plugin hoặc MU Plugin.
Nếu vẫn còn: => Kiểm tra tiếp Database hoặc WordPress Core.

Bước 5. Kiểm tra MU Plugin
Nhiều mã độc hiện nay thích cài tại đường dẫn sau. Nếu website trước đây không sử dụng MU Plugin nhưng xuất hiện file lạ thì cần kiểm tra kỹ.
wp-content/mu-plugins
Bước 6. Search mã độc trong Plugin
Có thể dùng grep để tìm các hành vi đáng ngờ.
grep -R "TextDecoder" wp-content/plugins
grep -R "new Uint8Array" wp-content/plugins
grep -R "atob(" wp-content/plugins
grep -R "new Function" wp-content/plugins
grep -R "document.write" wp-content/pluginsĐây không phải là dấu hiệu khẳng định có mã độc, nhưng thường xuất hiện trong các đoạn JavaScript bị làm rối (obfuscated).
Bước 7. Kiểm tra Database
Một số mã độc không lưu trong file mà được lưu trong Database.
Thực hiện export ra
wp db export dump.sql;Sau đó tìm các từ khoá dạng sau
grep -n "TextDecoder" dump.sqlNgoài ra nên kiểm tra các bảng:
- wp_options
- wp_posts
- wp_postmeta
Đặc biệt các option chứa JavaScript hoặc HTML bất thường.
Bước 8. Xác định Plugin gây ra
Nếu đã xác định mã độc nằm ở Plugin.
Có thể thử bằng cách vô hiệu hết Plugin
wp plugin deactivate --allSau đó chạy lại lệnh
wp option get siteurlNếu mã độc biến mất. Tiếp tục kích hoạt từng plugin:
wp plugin activate ten-pluginKiểm tra lại. Và lặp đi lặp lại cho đến khi xác định plugin gây ra vấn đề.
Lưu ý
Không phải plugin bị phát hiện là plugin độc.
Rất nhiều trường hợp:
- Plugin hợp lệ
- Nhưng bị hacker chèn thêm backdoor
- Hoặc plugin cũ tồn tại lỗ hổng đã bị khai thác
Vì vậy cần kiểm tra file plugin, đối chiếu với phiên bản chính thức và cập nhật lên bản mới nhất.
Sau khi xử lý cần làm gì?
Sau khi loại bỏ mã độc nên thực hiện thêm:
- Cập nhật WordPress Core.
- Cập nhật toàn bộ Plugin và Theme.
- Xóa plugin không sử dụng.
- Thay đổi toàn bộ mật khẩu quản trị.
- Đổi mật khẩu FTP/SFTP/SSH.
- Đổi mật khẩu Database.
- Kiểm tra tài khoản Administrator lạ.
- Quét toàn bộ mã nguồn để phát hiện backdoor còn sót lại.
- Kiểm tra Cron Jobs và Scheduled Tasks.
- Bật WAF (Cloudflare, Imunify360, ModSecurity…).
- Theo dõi log truy cập để phát hiện hành vi bất thường.
Kết luận
ClickFix không chỉ là một hình thức lừa đảo người dùng mà còn cho thấy website WordPress đã bị xâm nhập và đang bị lợi dụng làm nơi phát tán mã độc. Điều quan trọng không chỉ là xóa đoạn JavaScript hiển thị fake reCAPTCHA, mà phải tìm được điểm xâm nhập ban đầu và loại bỏ hoàn toàn backdoor còn tồn tại.
Khi kiểm tra, hãy thực hiện theo quy trình: xác minh hiện tượng trên trình duyệt → khoanh vùng bằng WP-CLI (--skip-plugins, --skip-themes) → kiểm tra plugin, MU Plugin, theme và database → xử lý triệt để nguyên nhân gốc. Chỉ khi xác định được nguồn gốc của mã độc, website mới thực sự an toàn và không tái nhiễm sau khi khôi phục.
Gợi ý: Với trường hợp website bị ClickFix hoặc mã độc giả mạo xác minh, có thể tham khảo xử lý mã độc website WordPress để được kiểm tra, làm sạch mã độc, gỡ redirect bẩn và hardening lại website sau khi xử lý.
Với kinh nghiệm thực chiến từ việc tiếp xúc hàng ngày với vô vàn vấn đề về Website, Hosting, VPS, Server tại Phòng Kỹ thuật AZDIGI, mình luôn ấp ủ niềm đam mê chia sẻ kiến thức.
Mình xây dựng các blog không chỉ để tự trau dồi kỹ năng mà còn để cung cấp những tài liệu, hướng dẫn hữu ích nhất đến cộng đồng. Rất mong nhận được sự quan tâm của các bạn!
Để lại thông tin, mình sẽ phản hồi ngay.
