Vấn đề bảo mật của EC-Cube CMS và cách giải quyết

Giới thiệu về EC-Cube

    Ra đời từ năm 2006, EC-CUBE hiện là platform thương mại điển tử mã nguồn mở số 1 tại thị trường Nhật Bản. EC-Cube ra đời vào năm 2006 và vẫn đang phát triển khá mạnh ở cả thị trường Nhật Bản và Việt Nam.

    Là phần mềm miễn phí nhưng EC-CUBE có tất cả các chức năng cơ bản để "khai trương" ngay cho bạn một cửa hàng. Đối với các tính năng còn thiếu thì có thể bổ sung từ hơn 800 loại plugin trên store. Hơn nữa, nếu có kiến thức về lập trình thì có thể tuỳ chỉnh lại theo ý muốn. Một số ưu điểm của EC-Cube

  • Bắt đầu với giá thành rẻ
  • Có sẵn những chức năng thông thường
  • Tự do tạo chức năng lẫn thiết kế

    Một số tài nguyên EC-Cube:

Cài đặt EC-Cube

Cài đặt qua windows xampp

Cài đặt qua Composer

Kết quả cài đặt

Web user

    

Web admin

    

Phân tích một số lỗ hổng bảo mật

CVE-2020-5590 (Directory traversal)

Chức năng bị lỗi

    Lỗ hổng XSS xảy ra ở chức quản lý sản phẩm của admin. Việc không thực hiện kiểm tra tên file trước khi thực hiện thêm mới hoặc xóa file trên server dẫn đến việc kẻ tấn công có thể thực hiện xóa file tùy ý trên server. Chức năng bị lỗi là chức năng upload file ảnh trong danh mục quản lý sản phẩm

Các phiên bản bị ảnh hưởng

  • Các phiên bản EC-Cube <= 4.0.3 bị đều bị ảnh hưởng bởi lỗ hổng CVE-2020-5590

Khai thác lỗi

    Admin

  1. Admin đăng nhập và tạo sản phẩm mới
  2. Upload ảnh đại diện cho sản phẩm
  3. Xóa một file ảnh đã được up lên trước đó
  4. Thực hiện chặn bắt request bằng Burpsuite
  5. Sửa tên file ảnh muốn xóa thành đường dẫn file bất kỳ trên server
  6. Kẻ tấn công xóa thành công file bất kỳ trên server

    

Cách vá lỗ hổng

  • Nhà phát triển fix lỗi bằng cách kiểm tra tên file trước khi thực hiện xóa: Tên file không được phép chứa các ký tự: . hay //.
  • Code: /src/Eccube/Form/Type/Admin/ProductType.php

    

CVE-2021-20717 (Stored XSS)

Chức năng bị lỗi

    Lỗ hổng XSS xảy ra ở chức năng generate mail template của admin. Khi không thực hiện lọc ký tự đầu vào nguy hiểm hoặc do không encoded dữ liệu đầu ra trước khi thực hiện tạo ra template mail. Vì vậy khi người dùng mua hàng và thực hiện nhập thông tin đơn hàng, thay vì chèn dữ liệu là thông tin khách hàng thông thường, kẻ tấn công lợi dụng để chèn các đoạn mã javascript độc hại

Các phiên bản bị ảnh hưởng

  • Các phiên bản EC-Cube từ 4.0.0 đến 4.0.5 đều bị ảnh hưởng bởi lỗ hổng CVE-2021-20717

Khai thác lỗi

    Kẻ tấn công

  1. Tạo tài khoản và login
  2. Mua hàng và thực hiện checkout
  3. Nhập thông tin đơn hàng với các đoạn mã javascript độc hại:

    

    Admin

  1. Admin đăng nhập và xem danh sách đơn hàng
  2. Chọn đơn hàng của khách hàng
  3. Chọn email mới
  4. Chọn template mail
  5. Thực hiện xem trước nội dung mail
  6. Javascript độc hại được thực thi

    

Cách vá lỗ hổng

  • Nhà phát triển fix lỗi bằng cách bỏ thực hiện generate dữ liệu raw và template mail:

    

CVE-2021-20778 (Broken Access Control)

Chức năng bị lỗi

    Việc thiết lập sai trong file .htaccess cho phép kẻ tấn công đọc các dữ liệu nhạy cảm trên server như file .env hay web.config.v.v. Kẻ tấn công không cần thực hiện bất kỳ thao tác xác thực nào mà vẫn có thể đọc dữ liệu trên.

Các phiên bản bị ảnh hưởng

  • Các phiên bản EC-Cube 4.0.6 bị ảnh hưởng bởi lỗ hổng CVE-2021-20778

Khai thác lỗi

    Kẻ tấn công

  1. Kẻ tấn công truy cập vào đường dẫn chứa các file nhạy cảm

    

    

Cách vá lỗ hổng

  • Nhà phát triển fix lỗi bằng cách sửa file .htaccess theo hướng dẫn sau:

    

References

Nguồn: Viblo

Bình luận
Vui lòng đăng nhập để bình luận
Một số bài viết liên quan