Moodle에서 교사의 권한 승격이 가능한 취약점을 확인해 보세요.
2460 단어 CVE-2020-14321취약성무들
팁
취약점을 시도할 때는 항상 관리하는 검증 시스템에서 실행해야 합니다.
이 취약점에 대하여
2020년 7월 12일에 있던 Moodle 3.9.1을 비롯한 모든 업데이트에서 수정된 "코스 내에서 교사 역할을 가진 사용자가 원래 권한을 초과하는 역할 할당 가능"취약점. 즉,이 취약점의 영향을받는 것은 악의적 인 사용자가 교사로 코스에 할당되는 경우입니다.
Moodle에서는 일반적으로 교사 역할을 가진 사용자가 코스 내에서 학생이나 편집 권한이 없는 교사(TA)를 할당할 수 있더라도 다른 사용자에게 교사 역할을 할당하거나 교사 역할을 박탈할 수 있습니다. 는 할 수 없게 되어 있다. 관리자 등의 추가 권한에 대해서도 마찬가지입니다.
그러나, 이 권한 체크의 미비한 취약성을 이용함으로써, 자신에게 매니저 권한을 할당하는 것이 가능해지고, 다른 교사의 권한을 박탈하는 것도 가능해진다. 라고는 해도 시스템 관리자에게는 이길 수 없기 때문에, 3일 천하에 끝나는 것이지만…
취약점을 시도해 보기
취약성이 있다고 수정된 부분 로부터, 롤 할당을 Ajax로 실시하는 곳이라고 알 수 있다. 적절한 테스트 환경을 만들고 교사 1과 교사 2를 할당해 봅니다. 여기서 교사 1이 악의있는 사용자라고 가정합니다.
교사 1에서 원하는 코스에 액세스하여 사용자를 등록하는 모달 윈도우를 열고 적당한 사용자를 학생으로 등록해 본다.
이때 웹브라우저 개발 툴에서 요청을 확인하면 https://<MOODLE.YOURDOMAIN>/enrol/manual/ajax.php?mform_showmore_main=0&id=2&action=enrol&enrolid=1&sesskey=<SESSION_KEY>&_qf__enrol_manual_enrol_users_form=1&mform_showmore_id_main=0&userlist[]=3&roletoassign=5&duration=&startdate=4
와 같은 URI에 대한 GET 요청을 확인할 수 있다.
여기서 userlist [] = 3은 대상 사용자의 ID이고 roletoassign = 5는 역할 ID입니다. 다른 파라미터는 설명 생략.
이 URI 중 사용자 ID를 자신의 ID로, 롤 ID를 1로 변경하여 웹 브라우저의 주소 표시줄에 돌진하여 요청을 보냅니다. 왠지 XMLHttpRequest에 없어도 문제 없다. 웹 브라우저의 리로드 기능 등으로 페이지를 갱신하면, 매니저 권한이 부여되어 있는 것을 알 수 있다. 매니저 권한이 할당되어 있으므로 방해한 교사 2를 코스에서 지울 수 있습니다.
로그에서 확인
로그를 확인하면 변경한 이력이 제대로 남아 있다.
Reference
이 문제에 관하여(Moodle에서 교사의 권한 승격이 가능한 취약점을 확인해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/papillon/items/4ee5f4c6a482d7d07f6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
2020년 7월 12일에 있던 Moodle 3.9.1을 비롯한 모든 업데이트에서 수정된 "코스 내에서 교사 역할을 가진 사용자가 원래 권한을 초과하는 역할 할당 가능"취약점. 즉,이 취약점의 영향을받는 것은 악의적 인 사용자가 교사로 코스에 할당되는 경우입니다.
Moodle에서는 일반적으로 교사 역할을 가진 사용자가 코스 내에서 학생이나 편집 권한이 없는 교사(TA)를 할당할 수 있더라도 다른 사용자에게 교사 역할을 할당하거나 교사 역할을 박탈할 수 있습니다. 는 할 수 없게 되어 있다. 관리자 등의 추가 권한에 대해서도 마찬가지입니다.
그러나, 이 권한 체크의 미비한 취약성을 이용함으로써, 자신에게 매니저 권한을 할당하는 것이 가능해지고, 다른 교사의 권한을 박탈하는 것도 가능해진다. 라고는 해도 시스템 관리자에게는 이길 수 없기 때문에, 3일 천하에 끝나는 것이지만…
취약점을 시도해 보기
취약성이 있다고 수정된 부분 로부터, 롤 할당을 Ajax로 실시하는 곳이라고 알 수 있다. 적절한 테스트 환경을 만들고 교사 1과 교사 2를 할당해 봅니다. 여기서 교사 1이 악의있는 사용자라고 가정합니다.
교사 1에서 원하는 코스에 액세스하여 사용자를 등록하는 모달 윈도우를 열고 적당한 사용자를 학생으로 등록해 본다.
이때 웹브라우저 개발 툴에서 요청을 확인하면 https://<MOODLE.YOURDOMAIN>/enrol/manual/ajax.php?mform_showmore_main=0&id=2&action=enrol&enrolid=1&sesskey=<SESSION_KEY>&_qf__enrol_manual_enrol_users_form=1&mform_showmore_id_main=0&userlist[]=3&roletoassign=5&duration=&startdate=4
와 같은 URI에 대한 GET 요청을 확인할 수 있다.
여기서 userlist [] = 3은 대상 사용자의 ID이고 roletoassign = 5는 역할 ID입니다. 다른 파라미터는 설명 생략.
이 URI 중 사용자 ID를 자신의 ID로, 롤 ID를 1로 변경하여 웹 브라우저의 주소 표시줄에 돌진하여 요청을 보냅니다. 왠지 XMLHttpRequest에 없어도 문제 없다. 웹 브라우저의 리로드 기능 등으로 페이지를 갱신하면, 매니저 권한이 부여되어 있는 것을 알 수 있다. 매니저 권한이 할당되어 있으므로 방해한 교사 2를 코스에서 지울 수 있습니다.
로그에서 확인
로그를 확인하면 변경한 이력이 제대로 남아 있다.
Reference
이 문제에 관하여(Moodle에서 교사의 권한 승격이 가능한 취약점을 확인해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/papillon/items/4ee5f4c6a482d7d07f6e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로그를 확인하면 변경한 이력이 제대로 남아 있다.
Reference
이 문제에 관하여(Moodle에서 교사의 권한 승격이 가능한 취약점을 확인해 보세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/papillon/items/4ee5f4c6a482d7d07f6e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)