Friday, August 14

Từ quyền teacher lên RCE như thế nào trong Moodle(CVE-2020-14321)

Lại là tháng 7, mình lại có dịp viết lên đôi điều.

Lần này nhân tiện có chiến dịch tìm zero-days, thì có mục tiêu là Moodle.

Sơ qua về em này thì là trang học trực tuyến hàng đầu thế giới :)))

Thực ra khi khai tiến hành khảo sát thì về cơ bản để tấn công những trang Moodle này đều cần quyền người dùng, quyền chấp nhận được là teacher.

Mình sẽ tập trung vào CVE-2020-14321 này luôn.

Phiên bản khai thác là: Moodle core 3.9, 3.8 to 3.8.3, 3.7 to 3.7.6, 3.5 to 3.5.12 và các phiên bản trước đó.

Và điều kiện là bạn là teacher của một khóa học.

Sơ qua về CVE này là cho phép bạn từ quyền teacher lên quyền manager.

Lại nói về các quyền thì ở Moodle sẽ có một số quyền như là: quyền người dùng thông thường, quyền học sinh(student) , quyền giáo viên(teacher) , quyền manager (Người dùng này nếu ở một khóa học thì toàn quyền trên khóa học, đặc biệt tính có tính năng Log in as sang manager- Đây chính là tính năng để trigger RCE, nếu là manager của cả toàn site thì sẽ quản lý người dùng dưới hoặc cùng cấp và một vài tính năng khác. Còn đặc biệt là quyền quản trị(Administrator), toàn quyền trên site là có thể trigger RCE thông qua cài plugin.

Phần PoC sẽ diễn ra như sau:

Đăng nhập người dùng với quyền teacher của một khóa học của bạn.

Để thuận tiện, mình đã xây dựng sẵn lab bằng docker.

Sử dụng câu lệnh sau để thực hiện chạy:

# docker run -d –rm -it -p 8080:80 hoangkien1020/moodle:3.9.0

Sử dụng tài khoản đăng nhập là: teacher/1234

 

Sau khi đăng nhập vào khóa học và thực hiện enrol như sau:

Thực hiện bắt request này, ta thu được:

Phần userlist%5B%5D=3, 3 chính là id của người mình muốn mời, thay bằng id của teacher là 4, và tham số roletoassign=5, 5 thể hiện vai trò là student. Rất đơn giản là đổi 5 thành 1 để trở thành vai trò là manager.

Kết quả là:

Sau khi leo quyền lên manager sẽ làm gì tiếp theo.

Thực hiện leo quyền lên manager của site bằng tính năng Log in as của người dùng manager.

Bạn cần mời người dùng này cụ thể manager của site làm student của khóa học.

Kết quả như sau:

Truy cập vào tài khoản manager của khóa học, thực hiện tính năng Log in as như sau:

Và bây giờ bạn đã là manager của site rồi!

Đối với người dùng là quyền manager thì tính năng upload plugin để RCE thì sẽ không thực hiện được.

Nhưng mình có cách leo quyền lên full permissions mà Moodle lại coi là tính năng cần cải thiện hơn là vấn đề bảo mật.

Thực hiện truy cập nhanh như sau:

doamin/admin/roles/define.php?action=edit&roleid=1

Và thực hiện Save changes, bắt request này:

Payload lên full quyền có tại:

https://github.com/HoangKien1020/CVE-2020-14321

Thay vào và gửi request:

Thành quả là:

Tải plugin có tại github của mình để trigger RCE:

https://github.com/HoangKien1020/Moodle_RCE

Và upload lên, truy cập link để RCE:

domain/blocks/rce/lang/en/block_rce.php?cmd=id

Thành quả RCE:

Video hướng dẫn:

https://vimeo.com/441698193

Nguồn:

https://moodle.org/mod/forum/discuss.php?d=407393

Leave a Reply

Your email address will not be published. Required fields are marked *