WordPress Plugin Activity Log 2.4.0 – Stored Cross Site Scripting

WordPress Plugin Activity Log 2.4.0 – Stored Cross Site Scripting

# Exploit Title : Activity Log WordPress Plugin Stored Cross Site Scripting (XSS)
# Date: 25-02-2018
# Exploit Author : Stefan Broeder
# Vendor Homepage: https://pojo.me
# Software Link: https://wordpress.org/plugins/aryo-activity-log/
# Version: 2.4.0
# CVE : CVE-2018-8729
# Category : webapps

Mô tả
===========
Activity Log là một plugin của WordPress thực hiện việc theo dõi hoạt động của trang web. Hiện có hơn 70.000 lượt cài đặt. Lỗi xảy ra với Phiên bản 2.4.0 (và có thể những phiên bản trước đó) bị ảnh hưởng bởi một số lỗ hổng được Stored XSS).

Phần dễ bị tấn công của mã
=======================
Lưu trữ các payload:

File: aryo-activity-log/hooks/class-aal-hook-attachment.php:14. Mục log được lưu trữ chứa kết quả của hàm get_the_title($post->ID), cho phép chèn các đoạn mã HTML và không bị loại bỏ bởi WordPress.
File: aryo-activity-log/hooks/class-aal-hook-comments.php:14. Mục log được lưu trữ chứa kết quả của hàm get_the_title($comment->comment_post_ID), cho phép chèn các đoạn mã HTML và không bị loại bỏ bởi WordPress.
File: aryo-activity-log/hooks/class-aal-hook-posts.php:7. Mục log được lưu trữ chứa kết quả của hàm $title = get_the_title($post), cho phép chèn các đoạn mã HTML và không bị loại bỏ bởi WordPress.

Hiển thị payload:
File: aryo-activity-log/classes/class-aal-activity-log-list-table.php:209. $item->object_name sẽ được hiển thị mà không cần kiểm tra loại bỏ các thẻ HTML.

Ảnh hưởng:
======
Mã JavaScript tùy ý có thể chạy trên trình duyệt nếu người dùng có thể tạo một bài đăng hoặc tải lên một tệp đính kèm.

Khai thác lỗi
============
Để khai thác thành công lỗ hổng này, kẻ tấn công chỉ cần thực hiện bất kỳ điều nào sau đây:

– Tạo/chỉnh sửa/soạn dự thảo/public/trash/untrash một bài viết với JavaScript trong tiêu đề.
– Tạo/chỉnh sửa/trash/untrash/mark_as_spam/unmark_as_spam nhận xét về bài đăng bằng JavaScript trong tiêu đề.
– Thêm/chỉnh sửa/xóa một tập tin đính kèm với JavaScript trong tiêu đề đính kèm

Người dùng truy cập vào trang web sẽ không có khả năng thực hiện bất kỳ thao tác nào trong số này. Các đối tượng có thể khai thác lỗi bao gồm:

– Người dùng có vai trò là ‘biên tập viên’ trong WordPress (không phải quản trị viên có thể tạo nội dung)
– Một quản trị viên có ý đồ xấu.
– Một plugin bị nhiễm backdoor hoặc bị bug, …

Nếu trang web đã bị nhiễm, thì nó sẽ được thực hiện sau khi nhật ký Hoạt động được xem. Điều này có thể dẫn đến việc ăn cắp CSRF nonces và tạo ra người dùng mới (quản trị viên) trong website WordPress.

Giải pháp
========
Nâng cấp Activity Log bản 2.4.1