Bắt đầu bằng một bài phân tích đã có sẵn về một lỗ hổng nghiêm trọng mới được phát hiện trên extension WooCommerce của Wordpress - WooCommerce SQL Injection. Bài này mình cũng xin chia sẻ các bước cho một người mới tập tành phân tích lỗ hổng như mình có thể hiểu được, nếu có vấn đề gì mong nhận được đóng góp ý kiến từ các bạn.
Giới thiệu
Vào ngày 15 tháng 7 năm 2021, WooCommerce đưa ra thông báo rằng các plugin tính năng WooCommerce (phiên bản 3.3 đến 5.5.0) và WooCommerce Blocks (phiên bản 2.5 đến 5.5.0) dễ bị tấn công bởi lỗ hổng nghiêm trọng SQL Injection được tìm thấy bởi Josh tại HackerOne.
Cài đặt môi trường
Bây giờ mình sẽ tiến hành cài đặt môi trường thử nghiệm để phân tích lỗ hổng trên, về cơ bản vị trí lỗ hổng của WooCommerce và WooCommerce Blocks là giống nhau nên mình sẽ chỉ cài đặt WooCommerce và phân tích lỗ hổng dựa trên WooCommerce được cài đặt.
Cài đặt Xampp v3.3.0
Tải về Wordpress phiên bản mới nhất tại đây
Tải về plugin WooCommerce < 5.5 (ở đây mình sử dụng phiên bản 4.9.0, bạn có thể sử dụng phiên bản khác), tải về tại đây
Sau khi cài đặt và thiết lập Wordpress, thực hiện tải lên thủ công extension mình thu được kết quả bên dưới:
Phân tích
Chi tiết bản vá có thể xem tại Plugin Directory của Wordpress tại đây.
Vị trí dòng code đã được fix sau 2 version:
- Line 280: woocommerce/trunk/includes/data-stores/class-wc-webhook-data-store.php
Nội dung code bị bug:
$search = !empty($args['search']) ? "AND `name` LIKE '%".$wpdb->esc_like(sanitize_text_field($args['search']))."%'":'';
- Line 86: woocommerce/trunk/packages/woocommerce-blocks/src/StoreApi/Utilities/ProductQueryFilters.php
Nội dung code bị bug:
$attributes_to_count = array_map('wc_sanitize_taxonomy_name', $attributes);
... đang viết