Vào tháng 10 năm nay, chúng tôi đã nhận được báo cáo từ ngocnb và khuyenn từ Công ty cổ phần GiaoHangTietKiem về lỗ hổng SQL injection trong WordPress. Lỗi này có thể cho phép kẻ tấn công để lộ dữ liệu được lưu trữ trong cơ sở dữ liệu được kết nối. Lỗ hổng này gần đây đã được giải quyết là CVE-2022-21661 (ZDI-22-020). Blog này đề cập đến nguyên nhân gốc rễ của lỗi và xem xét cách nhóm WordPress đã chọn để giải quyết nó. Đầu tiên, đây là một video nhanh chứng minh lỗ hổng Show lỗ hổng Lỗ hổng xảy ra trong lớp WordPress Query (WP_Query). Đối tượng WP_Query được sử dụng để thực hiện các truy vấn tùy chỉnh tới cơ sở dữ liệu WordPress. Đối tượng này được sử dụng bởi các plugin và chủ đề để tạo hiển thị bài đăng tùy chỉnh của họ. Lỗ hổng xảy ra khi plugin sử dụng lớp dễ bị tấn công. Một plugin như vậy là Elementor Custom Skin. Đối với bài đăng này, chúng tôi đã kiểm tra lỗ hổng trên WordPress phiên bản 5. 8. 1 và plugin Elementor Custom Skin phiên bản 3. 1. 3 Trong plugin này, lớp WP_Query dễ bị tấn công được sử dụng trong phương thức get_document_data của phân trang ajax. php Hình 1- - wordpress/wp-content/plugins/ele-custom-skin/includes/ajax-pagination. php Phương thức get_document_data được gọi khi yêu cầu được gửi tới wp-admin/admin-ajax. php và tham số hành động là ecsload. Hình 2 - wordpress/wp-admin/admin-ajax. php quản trị-ajax. trang php kiểm tra xem yêu cầu có được thực hiện bởi người dùng được xác thực hay không. Nếu yêu cầu đến từ người dùng không được xác thực, admin-ajax. php gọi một hành động Ajax không được xác thực. Ở đây, yêu cầu được gửi mà không cần xác thực để hành động Ajax không được xác thực được gọi, đó là wp_ajax_nopriv_ecsload Tìm kiếm chuỗi “wp_ajax_nopriv_ecsload” cho thấy rằng đó là một tên hook có trong phân trang ajax. trang php Hình 3 - wordpress/wp-content/plugins/ele-custom-skin/includes/ajax-pagination. php Tên hook wp_ajax_nopriv_ecsload đề cập đến chức năng gọi lại get_document_data. Điều này có nghĩa là phương thức do_action gọi phương thức get_document_data Phương thức get_document_data tạo một đối tượng WP_Query. Việc khởi tạo đối tượng WP_Query gọi phương thức get_posts sau Hình 4 - wordpress/wp-gồm/class-wp-query. php Trước tiên, phương thức get_posts phân tích cú pháp các tham số do người dùng cung cấp. Tiếp theo, nó gọi phương thức get_sql, phương thức này cuối cùng sẽ gọi get_sql_for_clause để tạo các mệnh đề của câu lệnh SQL từ dữ liệu do người dùng cung cấp. get_sql_for_clause gọi clean_query để xác thực chuỗi do người dùng cung cấp. Tuy nhiên, phương pháp không thể xác thực tham số thuật ngữ nếu tham số phân loại trống và giá trị của tham số trường là chuỗi “term_taxonomy_id”. Giá trị của tham số thuật ngữ sau này được sử dụng trong câu lệnh SQL Hình 5 - wordpress/wp-includes/class-wp-tax-query. php Lưu ý rằng biến sql được trả về bởi get_sql() được thêm vào câu lệnh SQL SELECT và được tập hợp bằng các chuỗi được trả về từ phương thức Lỗ hổng này có thể bị khai thác để đọc cơ sở dữ liệu WordPress Xem kích thước đầy đủ Mảnh vụn Bản vá cho địa chỉ CVE-2022-21661 thêm một số kiểm tra bổ sung vào tham số điều khoản để giúp ngăn chặn các lần tiêm SQL tiếp theo xảy ra Xem kích thước đầy đủ Hình 7 - Phương thức clean_query của wordpress/wp-includes/class-wp-tax-query. php Phần kết luận Các cuộc tấn công tích cực vào các trang web WordPress thường tập trung vào các plugin tùy chọn hơn là cốt lõi của chính WordPress. Đó là trường hợp đầu năm nay khi một lỗi trong plugin Trình thiết kế sản phẩm ưa thích được báo cáo là đang bị tấn công tích cực. Tương tự, một lỗ hổng tải lên tệp trong plugin Contact Form 7 cũng được phát hiện là bị khai thác bởi các cảm biến của Trend Micro. Trong trường hợp này, lỗi được phát hiện thông qua các plugin, nhưng tồn tại trong chính WordPress. Mặc dù đây là vấn đề tiết lộ thông tin hơn là thực thi mã nhưng dữ liệu bị lộ có thể chứng minh giá trị đối với những kẻ tấn công. Chúng tôi sẽ không ngạc nhiên khi thấy lỗi này trong các cuộc tấn công tích cực trong tương lai gần. Chúng tôi khuyên bạn nên áp dụng bản vá hoặc thực hiện hành động khắc phục khác càng sớm càng tốt. Đặc biệt cảm ơn ngocnb và khuyenn từ GiaoHangTietKiem JSC đã báo cáo điều này với ZDI. Bạn có thể đọc phân tích của họ về lỗi tại đây Trang này chứa thông tin chi tiết về plugin WordPress check_ajax_referer() Function SQL Injection Nessus bao gồm các khai thác và PoC có sẵn được tìm thấy trên GitHub, trong Metasploit hoặc Exploit-DB để xác minh lỗ hổng này Tổng quan về pluginTÔI. 25291 Thông tin lỗ hổngmức độ nghiêm trọng. Cao Tóm tắtMáy chủ web từ xa chứa tập lệnh PHP dễ bị tấn công SQL injection Sự miêu tảPhiên bản WordPress trên máy chủ từ xa không thể vệ sinh đầu vào đúng cách cho tham số 'cookie' của 'wp-admin/admin-ajax. php' trước khi sử dụng nó trong chức năng 'check_ajax_referer' trong các truy vấn cơ sở dữ liệu. Bất kể cài đặt 'magic_quotes_gpc' của PHP là gì, kẻ tấn công từ xa, không được xác thực có thể lợi dụng vấn đề này để khởi chạy các cuộc tấn công SQL injection đối với ứng dụng bị ảnh hưởng, bao gồm cả việc phát hiện mật khẩu băm của người dùng WordPress Giải phápNâng cấp lên phiên bản 2. 2. 1 hoặc muộn hơn Khai thác công cộng(Các) Cổng Mạng Mục tiêu. 80 Dưới đây là danh sách các khai thác và PoC đã biết công khai để xác minh lỗ hổng WordPress check_ajax_referer() Function SQL Injection Trước khi chạy bất kỳ khai thác nào đối với bất kỳ hệ thống nào, hãy đảm bảo rằng bạn được chủ sở hữu của (các) hệ thống đích ủy quyền để thực hiện hoạt động đó. Trong mọi trường hợp khác, đây sẽ được coi là một hoạt động bất hợp pháp CẢNH BÁO. Cẩn thận với việc sử dụng các khai thác chưa được xác minh từ các nguồn như GitHub hoặc Exploit-DB. Những khai thác và PoC này có thể chứa phần mềm độc hại. Để biết thêm thông tin, xem Thông tin rủi roVectơ CVSS V2 [?]. AV. không áp dụng. L/Âu. không áp dụng. SỐ PI. P/A. THỂ DỤC. H/RL. CỦA/RC. Điểm cơ sở CCVSS. 7. 5 (Cao)Điểm phụ tác động. 6. 4Điểm phụ về khả năng khai thác. 10. 0CVSS Điểm tạm thời. 6. 5 (Trung bình)Điểm môi trường CVSS. NA (Không có)Chỉ số phụ tác động đã sửa đổi. NAĐiểm CVSS tổng thể. 6. 5 (Trung bình) Đi Nguồn pluginĐây là wordpress_ajax_referer_sql_injection. mã nguồn plugin nasl nessus. Tập lệnh này là Bản quyền (C) 2007-2021 Tenable Network Security, Inc
Phiên bản mới nhất của tập lệnh này có thể được tìm thấy ở những vị trí này tùy thuộc vào nền tảng của bạn
Đi Làm thế nào để chạyĐây là cách chạy WordPress check_ajax_referer() Function SQL Injection như một plugin độc lập thông qua giao diện người dùng web Nessus (https. //máy chủ cục bộ. 8834/)
Dưới đây là một vài ví dụ về cách chạy plugin trong dòng lệnh. Lưu ý rằng các ví dụ bên dưới minh họa cách sử dụng trên nền tảng Linux/Unix sử dụng cơ bản
Chạy plugin với thông báo theo dõi kiểm toán trên bảng điều khiển
Chạy plugin với việc thực thi tập lệnh theo dõi được ghi vào bảng điều khiển (hữu ích để gỡ lỗi)
Chạy plugin bằng cách sử dụng tệp trạng thái cho mục tiêu và cập nhật nó (hữu ích khi chạy nhiều plugin trên mục tiêu) Quản trị viên Ajax PHP là gì?Quản trị viên-ajax. tệp php chứa tất cả mã để định tuyến các yêu cầu Ajax trên WordPress . Mục đích chính của nó là thiết lập kết nối giữa máy khách và máy chủ bằng Ajax. WordPress sử dụng nó để làm mới nội dung của trang mà không cần tải lại, do đó làm cho nó trở nên năng động và tương tác với người dùng.
Các lỗ hổng trong WordPress 5 là gì. 8 3?Nhóm phát triển WordPress đã phát hành phiên bản WordPress 5. 8. 3 để giải quyết bốn lỗ hổng, hai trong số đó được đánh giá là có mức độ nghiêm trọng cao. Bộ này bao gồm một lần tiêm SQL trên WP_Query, một lần tiêm SQL mù qua WP_Meta_Query, một cuộc tấn công XSS qua sên bài đăng và một lần tiêm đối tượng quản trị viên .
Lỗ hổng trong WordPress 5 là gì. 8 2?Lỗ hổng được thảo luận ( CVE-2022-21662 ) là lỗ hổng Stored Cross-Site Scripting ảnh hưởng đến các phiên bản WordPress tối đa và bao gồm 5. 8. 2. Nó cho phép kẻ tấn công tiêm trọng tải JavaScript. |