
Tutor LMS 플러그인 내 인증된 IDOR / 취약한 접근 제어
고지 사항: 이 저장소는 교육 목적 및 윤리적 공개를 위해서만 생성되었습니다. 이 취약점은 책임 있는 공개 절차를 통해 공급업체에 보고되었으며 패치가 적용되었습니다. 적절한 승인 없이 시스템을 악용하는 데 이 정보를 사용하지 마십시오.
Tutor LMS WordPress 플러그인(버전 <= 3.9.5)에서 안전하지 않은 직접 객체 참조(IDOR) / 끊어진 접근 제어 취약점이 발견되었습니다. 이 결함으로 인해 Tutor 강사 역할을 가진 낮은 권한의 사용자가 다른 강사나 관리자가 소유한 과정의 게시 상태를 변경하거나 영구 삭제하는 등의 승인되지 않은 대량 작업을 수행할 수 있습니다.
합법적인 백엔드 요청을 가로채 과정 ID 매개변수를 변조함으로써 공격자는 의도된 접근 제어를 우회할 수 있습니다. 실제 시나리오에서 이는 다중 강사 마켓플레이스에서 경쟁사의 과정을 파괴하여 직접적인 업무 중단, 수익 손실, 평판 손상을 초래할 수 있습니다.
<= 3.9.53.9.6핵심 문제는 플러그인의 대량 작업 처리기 내에 객체 수준 권한 검사가 누락된 데서 비롯됩니다.
파일:
tutor/classes/Course_List.phpcourse_list_bulk_action()1. 검증되지 않은 객체 식별자:
이 함수는 HTTP 요청에서 사용자 제어 입력(bulk-action 및 bulk-ids)을 직접 받습니다. 플러그인은 사용자가 과정을 관리할 수 있는 일반적인 권한을 보유하고 있는지 확인하지만, bulk-ids 배열에 제공된 특정 ID에 대한 과정별 소유권은 전혀 확인하지 않습니다.
2. 소유권 확인 없이 실행:
상태 업데이트 경로(update_course_status()) 또는 삭제 경로(bulk_delete_course())가 트리거되면 코드는 공격자가 제공한 ID를 반복하면서 WHERE ID IN (...) 절을 사용하여 데이터베이스 작업(예: cp_posts.post_status 업데이트)을 실행합니다. 이때 $post_author == $current_user_id를 보장하는 조건은 추가되지 않습니다.
처리기가 객체 수준 권한을 강제하지 않기 때문에 대량 작업 워크플로에 접근할 수 있는 모든 강사는 임의의 과정 ID를 조작할 수 있습니다.
다음 단계는 인증된 Tutor 강사가 다른 강사의 과정 상태를 변경할 수 있는 방법을 보여줍니다.
course_id를 식별합니다. (예: ID: 27)./wp-admin/admin.php?page=tutor)으로 이동합니다. 자신이 소유한 과정을 선택하고 상태 변경 작업(예: "임시 글"로 설정)을 선택한 다음 "적용"을 클릭합니다./wp-admin/admin-ajax.php로 나가는 POST 요청을 가로챕니다.status 매개변수를 trash(또는 pending, private)로 변경합니다.id 매개변수를 자신의 과정 ID에서 피해자의 과정 ID(27)로 변경합니다.{"success":true}로 응답합니다. 피해자의 과정은 성공적으로 휴지통으로 이동되어 공개 프런트엔드에서 사라집니다.