WordPress 7.1.1 Vá Stored XSS wpautop Và Click2Shell RCE: Hướng Dẫn Nâng Cấp Và Rà Dấu Vết Bằng WP-CLI

Câu trả lời nhanh
WordPress 7.1.1 phát hành 17/9/2026 vá stored XSS CVE-2026-93485 trong wpautop() (CVSS 7.1) mà kẻ tấn công khai thác ngay từ form comment không cần tài khoản, cùng chain Click2Shell biến một cú click của admin thành RCE. Nâng cấp ngay bằng wp core update, tắt comment ẩn danh và rà dấu vết comment, theme lạ bằng WP-CLI.

WordPress 7.1.1 phát hành ngày 17/9/2026 với 11 bản vá bảo mật và 17 bug fix. Đáng chú ý nhất là hai lỗi: stored XSS trong wpautop() mà kẻ tấn công khai thác ngay từ form comment không cần tài khoản, và chain Click2Shell biến một cú click của admin thành remote shell. Trong bài này mình sẽ đi từ cách hai lỗi này hoạt động, cách nâng cấp an toàn bằng WP-CLI, đến runbook rà dấu vết nếu site bạn đã lọt tầm ngắm.

WordPress 7.1.1 vá những lỗi gì?

WordPress 7.1.1 vá lỗ hổng bảo mật stored XSS và Click2Shell RCE

Đây là bản security và maintenance release. Lỗi nặng nhất là CVE-2026-93485, unauthenticated stored XSS trong hàm wpautop() ở wp-includes/formatting.php, chấm CVSS 3.1 đạt 7.1. Do nghiên cứu viên Rafie Muhammad báo qua Patchstack ngày 15/9, chỉ hai ngày sau WordPress đã vá và phát hành. Ngoài ra còn Click2Shell do Paulos Yibelo của pwn.ai báo, và chừng chục lỗi access control nhỏ hơn ở mức Contributor, Subscriber và Author.

Stored XSS trong wpautop() nguy hiểm ra sao?

Điểm đáng sợ là entry point: form comment bình thường, visitor ẩn danh, không cần tài khoản nào. Payload đi qua wp_kses() của WordPress một cách sạch sẽ vì lúc đó nó chưa trông giống markup nguy hiểm nào. Nó chỉ “nổ” khi comment được hiển thị và wpautop() xử lý lại văn bản.

Nguyên nhân nằm ở một regex chuyển <p><blockquote>. Capture group ([^>]*) dừng ở ký tự > đầu tiên, nên khi > nằm bên trong giá trị attribute trong ngoặc kép, biểu thức chính quy cắt nhầm giữa tag, đẩy text của kẻ tấn công ra vị trí attribute. Và chính WordPress tự tay cung cấp ký tự > đó: hàm wp_replace_in_html_tags() thay newline trong tag bằng placeholder comment <!-- wpnl -->, kết thúc bằng -->. Một dòng xuống dòng vô hại trong cite của blockquote biến thành vũ khí. Kết quả là script chạy trong origin của site với mọi visitor.

Mình không đăng payload, nhưng bạn cần hiểu giới hạn của nó: comment phải được publish. Cài đặt mặc định giữ comment đầu tiên của người lạ ở hàng chờ duyệt. Tuy nhiên moderation không phải biện pháp bảo mật, comment đứng đợi trông vô hại và ai từng được duyệt thì tự động qua lần sau.

Click2Shell hoạt động như thế nào?

Click2Shell là chuỗi CSRF kết nối selector injection: một URL crafted với theme slug như twentytwenty"]> được đọc hai lần theo hai cách. Phía server, Themes API của WordPress.org sanitize và trả về twentytwenty. Phía browser, JavaScript trong wp-admin nhét nguyên giá trị thô vào jQuery selector không lọc. Sự lệch nhau này khiến trang tin rằng admin vừa bấm Install vào một theme khác hẳn.

Chain đầy đủ của pwn.ai dùng theme thật trong catalog là Mobile Repair Zone 2.5.4 làm giai đoạn hai: cài theme ẩn, rồi mở Customizer với theme đó active để functions.php chạy và đăng ký AJAX handler nhận URL tải plugin không kiểm nonce lẫn capability. Trỏ URL đó vào ZIP độc hại là attacker có shell. Bản vá 7.1.1 scope selector vào DOM element .theme thật và đưa slug qua $.escapeSelector().

Điều kiện khai thác phải rõ ràng: cần admin load đúng URL crafted đó, qua phishing nhắm cá nhân hoặc qua một XSS đã có sẵn trên site. Nếu bạn bật DISALLOW_FILE_MODS, injection vẫn xảy ra nhưng không cài được theme hay plugin mới.

Cách nâng cấp lên WordPress 7.1.1 bằng WP-CLI?

Mình luôn nâng cấp qua WP-CLI thay vì nhấn nút trong admin, vì nó log được, chạy được hàng loạt và không phụ thuộc session. Backup trước, rồi mới update. Các bước cụ thể:

# 1. Backup database
wp db export backup-$(date +%F).sql

# 2. Kiểm tra phiên bản hiện tại
wp core version

# 3. Nâng cấp core
wp core update

# 4. Cập nhật database nếu có
wp core update-db

# 5. Xóa file cũ
wp core verify-checksums
wp cache flush

Sau đó mình chạy smoke test 5 phút: mở homepage, vào wp-admin, thử lưu một bài, kiểm tra trang comment. Nếu site chạy nhiều và bạn muốn chuẩn hơn, xem lại smoke test sau nâng cấp WordPress mà mình từng hướng dẫn.

Cách rà dấu vết nếu site đã bị khai thác?

Vì lõi của cả hai lỗi đều xoay quanh comment và theme, dấu vết sẽ nằm ở hai nơi đó. Mình rà theo thứ tự sau:

# Comment chứa blockquote cite bất thường
wp db query "SELECT comment_ID, comment_author, comment_date, LEFT(comment_content,120) FROM wp_comments WHERE comment_content LIKE '%blockquote%' ORDER BY comment_date DESC LIMIT 50;"

# Theme lạ cài gần đây, đặc biệt Mobile Repair Zone
wp theme list --fields=name,status,update,version

# Plugin mới xuất hiện không rõ nguồn gốc
wp plugin list --fields=name,status,update,version

# User admin không do bạn tạo
wp user list --role=administrator --fields=ID,user_login,user_registered

# File PHP sửa trong 14 ngày qua trong wp-content
find wp-content -name "*.php" -mtime -14 -ls

Nếu thấy comment chứa <blockquote cite= với nội dung lạ ở thời điểm gần đây,Trash nó và kiểm tra access log quanh thời điểm đó. Theme hay plugin nào không nhận ra thì deactive và xóa ngay. Trang nào từng dính XSS plugin thì bạn đã quen quy trình trong bài XSS2Shell và hướng dẫn vá, áp dụng tương tự.

Cách phòng thủ lâu dài cho site WordPress?

Bản cập nhật là cần thiết nhưng không đủ. Ba lớp mình giữ trên mọi site: một, tắt comment ẩn danh hoặc bật moderate toàn bộ nếu site không cần UGC, vì đó chính là cửa của CVE-2026-93485. Hai, thêm dòng này vào wp-config.php nếu bạn không bao giờ cài theme hay plugin từ admin:

define( 'DISALLOW_FILE_MODS', true );

Ba, hạn chế wp-admin sau VPN hoặc IP tĩnh và luôn bật 2FA. Nếu bạn quản lý nhiều site khách hàng, cân nhắc dịch vụ virtual patching như Patchstack để được che chắn trước cả khi kịp vá, mình từng phân tích cách này trong bài về FlyWP tích hợp Patchstack.

Có nên cập nhật ngay hôm nay không?

Có, và càng sớm càng tốt, đặc biệt nếu site của bạn mở comment công khai. CVE-2026-93485 không cần tài khoản, chỉ cần một comment được duyệt, còn Click2Shell chỉ cần admin bấm nhầm một link. Backup, chạy wp core update, verify checksums, rồi rà nhanh comment và theme theo runbook phía trên. Toàn bộ dưới 15 phút, rẻ hơn nhiều so với một buổi chiều dọn shell.

Thanh Tùng

Mình là Thanh Tùng. Bạn bè gọi mình là "bác sĩ máy tính" vì hễ máy nào có vấn đề là mình muốn mò vào xem sao. Mình viết hướng dẫn theo cách mà mình mong người khác đã viết cho mình ngày xưa — từng bước rõ ràng, không bỏ sót, và nói luôn cái gì hay bị lỗi. Ngoài giờ làm mình chơi guitar, nuôi mèo, và có một con VPS riêng dành riêng cho việc cài thử đủ thứ linh tinh.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *