EC-Cube CMS và một số vấn đề bảo mậ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

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.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ