Redirect, JavaScript Injection và SEO Spam Malware trên WordPress

Minh họa website WordPress bị SEO spam với bài viết casino, pharma và liên kết spam trái phép

Redirect lạ, JavaScript injection và SEO spam trên WordPress thường không xuất hiện như ba sự cố độc lập. Trong nhiều compromise, cùng một entry point có thể cho phép attacker chèn script, tạo hidden links hoặc spam pages và chỉ redirect một số user theo referrer, user-agent hoặc device để giảm khả năng bị chủ website phát hiện.

Google định nghĩa hacked content gồm code injection, malicious JavaScript, page/content injection và redirects; redirect có thể chỉ kích hoạt với người dùng đến từ Google Search hoặc một số user-agent. Search Console Security Issues cũng khuyến nghị dùng URL Inspection, cURL hoặc Wget với referrer/user-agent khác nhau để tái hiện hành vi bị cloaking. WordPress khuyên coi các triệu chứng như blacklist, malware warning hoặc nội dung bất thường là Indicators of Compromise và xử lý theo quy trình incident thay vì chỉ xóa symptom. Nguồn: Google Search Spam Policies, Google Search Console — Security Issues và WordPress — FAQ My Site Was Hacked.

Bối cảnh: owner mở website bình thường nhưng user từ Google bị redirect

Giả sử website nhìn bình thường khi admin mở trực tiếp homepage. Nhưng một số user báo khi click từ Google Search thì bị chuyển sang casino/pharma page, trong khi Search Console bắt đầu hiển thị URL lạ hoặc Security Issues. Source code chỉ thỉnh thoảng xuất hiện JavaScript obfuscated hoặc link spam khó thấy.

Những signal cần gom ngay

  • Redirect chỉ xảy ra khi referrer là Google/Bing hoặc trên mobile.
  • HTML/rendered DOM có JavaScript lạ, iframe, encoded payload hoặc external domain không rõ owner.
  • Google index xuất hiện casino, pharma, Japanese keyword hoặc URL không do team tạo.
  • .htaccess, theme/plugin file hoặc database option có code redirect.
  • Search Console báo hacked content, code injection hoặc URL injection.
  • Access log cho thấy request tới spam URL hoặc redirect destination ngoài baseline.

Investigation: tái hiện hành vi theo referrer và user-agent

Bước 1: so sánh direct visit với search-referrer visit

Google lưu ý hacker thường dùng cloaking để chỉ phục vụ redirect hoặc spam cho một số user-agent/referrer. Vì vậy chỉ mở URL bằng browser của admin chưa đủ. Cần so sánh response khi truy cập trực tiếp, khi giả lập referrer từ search engine, mobile user-agent và khi fetch bằng URL Inspection nếu có quyền Search Console.

Nếu redirect chỉ xuất hiện trong một context cụ thể, evidence cần ghi rõ điều kiện kích hoạt thay vì nói chung rằng “website luôn redirect”.

Bước 2: xác định injection nằm ở file, database hay third-party

Redirect hoặc JavaScript lạ có thể nằm trực tiếp trong PHP/theme file, .htaccess, database option/post content, widget, tag manager hoặc third-party script. Google Security Issues nêu các ví dụ như header redirect từ server config, JavaScript redirect hoặc malicious external script.

Tham chiếu WordPress bị chèn JavaScript lạ và mã độc trong wp-config.php, .htaccess hoặc index.php để tách client-side injection khỏi server-side persistence.

Bước 3: inventory spam URL và search footprint

SEO spam có thể tạo page mới, hidden links hoặc sửa nội dung hiện có để search engine thấy khác người dùng. Cần inventory URL lạ từ Search Console, sitemap, database, web logs và tìm kiếm site: hỗ trợ discovery; tuy nhiên site: không phải nguồn đầy đủ để kết luận toàn bộ index state.

Đọc thêm SEO Spam Malware WordPress để phân loại Japanese keyword hack, pharma spam và hidden links.

Khi nào có thể xác nhận đây là hacked redirect/SEO spam?

Không nên gọi mọi redirect hoặc script bên thứ ba là malware. Confidence mạnh khi có evidence rằng code/content được thêm ngoài authorization và tạo hành vi không thuộc business flow.

  • Code, script, link hoặc page không có owner/change record hợp lệ.
  • Redirect destination không thuộc business requirement.
  • Behavior thay đổi theo referrer/user-agent nhằm che giấu.
  • Spam URL/content xuất hiện trong index hoặc Search Console ngoài ý muốn.
  • File/database diff cho thấy unauthorized modification.

Containment và cleanup: xử lý cả symptom lẫn persistence

Preserve evidence trước khi xóa

Trước cleanup, nên giữ bản sao file/DB/log liên quan, timestamp và hash khi phù hợp. Việc xóa JavaScript hoặc spam page quá sớm có thể làm mất evidence về entry point hoặc persistence.

Dùng quy trình bảo toàn evidence nếu incident cần RCA hoặc có khả năng tái nhiễm.

Loại bỏ injection và đóng entry point

  • Remove malicious JavaScript, spam content, redirect rule và unauthorized page.
  • Reinstall component bị sửa từ trusted source nếu integrity không còn đủ.
  • Patch/remove plugin/theme hoặc credential tạo initial access.
  • Review admin, scheduled task, MU-plugin, database option và file ngoài webroot để tìm persistence.
  • Rotate credential/session/token nếu compromise có thể đã lộ secret.

Cleanup chỉ được coi là hoàn tất khi root cause và persistence được xử lý, không phải khi redirect tạm thời biến mất.

Search recovery: xác minh site sạch trước khi request review

Google khuyến nghị chỉ request security review khi đã xác nhận vấn đề thực sự được sửa. Với hacked spam, cần kiểm tra toàn bộ loại issue được liệt kê trong Security Issues, không chỉ một URL mẫu. URL Inspection giúp so sánh cách Google thấy trang với browser thông thường.

Không nên cam kết thời gian gỡ warning hoặc phục hồi ranking/index. Sau cleanup, Google cần recrawl/re-evaluate; thời gian phụ thuộc loại security issue và quá trình review.

Dùng quy trình xác minh WordPress sạch malware sau cleanup trước khi request review hoặc đóng incident.

Validation matrix sau remediation

GateĐiều kiện PASS
Direct visitKhông còn redirect/spam ngoài business flow
Search referrer/mobile UAKhông tái hiện conditional redirect
Rendered HTML/DOMKhông còn malicious script/link đã biết
Files/databaseUnauthorized modification đã được xử lý
PersistenceKhông còn account/task/plugin/option trái phép đã biết
Search ConsoleSecurity issue được xử lý trước khi request review
MonitoringKhông xuất hiện lại IOC hoặc spam URL mới

Bài học vận hành

  • Redirect malware có thể chỉ kích hoạt với referrer, user-agent hoặc device nhất định.
  • JavaScript injection, SEO spam và redirects có thể cùng xuất phát từ một compromise.
  • Owner mở website bình thường không chứng minh site không bị hacked cloaking.
  • Spam URL phải được điều tra cùng file/database/persistence, không chỉ xóa khỏi index.
  • Security review chỉ nên request sau khi cleanup và verification thực sự hoàn tất.
  • Không nên cam kết ranking/index phục hồi theo một mốc thời gian cố định.

Nguồn tham khảo

◇
Cần hỗ trợ kiểm tra và xử lý website?Đội ngũ SecureWebOps sẵn sàng hỗ trợ theo phạm vi phù hợp.
Liên hệ ngay →
Đoàn Trình Dục
Về tác giả Đoàn Trình Dục TD Digital · Website Operations & Security

Đoàn Trình Dục là tác giả nội dung trên SecureWebOps. Các bài viết tập trung vào bảo mật WordPress, giám sát an ninh website, malware/backdoor, hardening, backup/recovery và Incident Response theo hướng thực hành, có bước kiểm tra, bằng chứng, validation và rollback khi phù hợp.

Xem hồ sơ tác giả →