5 min read

Tôi đã hack diễn đàn học trực tuyến olm.vn như thế nào?

cover
Table of Contents

Trong 2 năm trở lại đây, học trực tuyến đã dần trở nên phổ biến trong cuộc sống hàng ngày. Khi tình hình dịch bệnh đang diễn biến căng thẳng, học sinh, sinh viên phải ở nhà học qua các nền tảng học trực tuyến. Và mình cũng vậy.

Là một học sinh mới bước chân vào cấp 3, trải qua một lễ khai giảng chưa từng có trong lịch sử và thay vì lên lớp trực tiếp, mình đã ở nhà và học qua các ứng dụng họp trực tuyến như Zoom, Google Meet.

Dưới sự chỉ đạo của tỉnh, trường mình sử dụng nền tảng học trực tuyến olm.vn để học sinh học và làm thêm bài tập sau những giờ học Zoom.

Hệ thống giáo dục trực tuyến olm.vn

Ngoài cung cấp hệ thống bài giảng, bài tập phong phú, olm còn là một diễn đàn cho các bạn học sinh có thể trao đổi bài và hỏi đáp, thông qua địa chỉ olm.vn/hoi-dap.

Trong lúc mình đang tìm kiếm câu trả lời cho bài tập văn của mình, mình đã tìm thấy một lỗ hổng khá nghiêm trọng giúp mình có thể thay đổi nội dung câu hỏi của người khác, hoặc thậm chí là xóa bài viết đó của họ.

Nghiên cứu

Có vẻ gần đây olm đang thử nghiệm một phiên bản mới, được đặt tại địa chỉ beta.olm.vn, với một giao diện hoàn toàn khác.

Giao diện mới của olm

Thấy giao diện khá đẹp mắt, mình quyết định chuyển sang phiên bản mới dùng luôn. Cũng vì thế mà mới phát hiện ra lỗ hổng trên.

Giao diện đăng câu hỏi, có vẻ không khác nhau là bao so với phiên bản cũ, cũng sử dụng CKEditor: Giao diện đăng bài

Sau khi đăng bài, ta có thể sửa hoặc xóa bài viết:

Phân tích qua URL một bài đăng:

https://beta.olm.vn/cau-hoi/write-a-paragraph-about-leisure-time.8721475024686

Ta có thể thấy url được chia thành 2 phần:

  • 1 là nội dung câu hỏi: write a paragraph about leisure time
  • 2 là id bài đăng: 8721475024686

Sau khi thấy cái id bài đăng, đầu mình nghĩ ngay ngay tới IDOR:

IDOR (Insecure Direct Object Reference) là một lỗ hổng bảo mật mà trong đó người dùng có thể truy cập và thay đổi dữ liệu của bất kỳ người dùng nào khác có trong hệ thống. Nó được xếp thứ 4 trong danh sách OWASP Top 10 lỗ hổng bảo mật web từ năm 2013. Tấn công này có thể xảy ra khi không có bất kỳ cơ chế xác thực nào cho phép attacker có thể sử dụng các tham chiếu này để đọc, thay đổi hay sử dụng dữ liệu trái phép.

Thông thường thì developer sẽ có biện pháp để bảo vệ khỏi nguy cơ bị tấn công IDOR, nhưng vì phiên bản này vẫn đang trong quá trình thử nghiệm nên mình quyết định kiểm thử.

Khai thác

Chỉnh sửa bài viết rồi sử dụng Burp Suite để capture request: Có thể thấy đây là một PUT request trong đó:

  • 5529600780520 là id bài đăng
  • id_grade là khối lớp của bài đăng
  • id_subject là môn học
  • content chính là nội dung bài đăng

Có vẻ đã khá rõ, giờ thì đi pick một bài đăng bất kì rồi thử thay id vào xem có sửa được hay không nhé.

Để tránh ảnh hưởng nhất có thể, mình sẽ chọn một bài đăng không liên quan đến học tập để test:

URL bài đăng:

Nhìn URL ta biết được bài đăng này có id là 212614152043. Thay vào request:

Sau đó thay nội dung bài viết thành Hacked by Rum:

Và giờ thì send request xem sao:

Wow, response trả về true, thử ra xem nội dung đã bị thay đổi chưa:

Đúng như dự đoán, nội dung bài viết không phải của mình đã bị thay đổi.

URL cũng thay đổi theo:

Phía bên phiên bản cũ cũng bị thay đổi:

Tương tự với chức năng xóa bài viết, chỉ khác là sử dụng DELETE method thay vì PUT.

Đó chính là IDOR, một lỗ hổng đơn giản nhưng nghiêm trọng.

Sau đó mình có báo cáo ngay cho đội ngũ Olm qua email, chuyển lời đến bộ phận kĩ thuật nhanh chóng kiếm tra và fix lỗi. Đến tối cùng ngày họ xác nhận lại với mình lỗ hổng đã được vá:

Kết luận

Lỗ hổng bảo mật trong bài viết này không có gì là cao siêu. Mình cũng không phải là dân chuyên về bảo mật nên kĩ thuật của mình vẫn chỉ ở mức cơ bản. Do vẫn đang trong quá trình thử nghiệm nên việc có những bug/vulnerability là chuyện bình thường.

Cảm ơn mọi người vì đã đọc.