🇰🇷 한글 설명
WordPress용 Tutor LMS 플러그인 4.0.0 이하 버전에서 저장된 퀴즈 답변 배열을 통한 SQL 인젝션 취약점이 발견되었습니다. 인증된 공격자가 악성 SQL 쿼리를 삽입하여 데이터베이스의 민감한 정보를 추출할 수 있는 2차(Stored) SQL 인젝션 공격이 가능합니다.
💡 쉬운 설명
퀴즈 답변을 저장할 때 검증이 부족하여, 공격자가 몰래 데이터베이스를 조작할 수 있는 명령어를 심어둘 수 있습니다. 이 명령은 관리자가 특정 페이지를 열람할 때 실행되어 중요한 정보를 유출시킵니다.
🇺🇸 원문 (English)
The Tutor LMS – eLearning and online course solution plugin for WordPress is vulnerable to generic SQL Injection via Stored Quiz Answer Array in all versions up to, and including, 4.0.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with custom-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. The payload is stored at quiz-attempt time via the wp_ajax_tutor_quiz_abandon handler, but the injected SQL executes only when a privileged user or Tutor REST API key holder requests the /wp-json/tutor/v1/quiz-attempt-details/{id} endpoint, making this a second-order (stored) injection chain.
📍 영향받는 시스템
Tutor LMS (WordPress plugin) version 4.0.0 and below
⚔️ 공격 벡터
인증된 사용자가 퀴즈 답변을 제출하여 악성 페이로드를 저장한 후, 권한이 있는 사용자가 특정 API 엔드포인트를 호출할 때 실행되는 2차 공격 방식
🛡️ 대응 방법
Tutor LMS 플러그인을 최신 버전으로 업데이트하여 입력값 검증 및 SQL 쿼리 준비(prepared statement) 로직을 강화하십시오.
🔧 검증 코드
출력된 Tutor LMS의 버전이 4.0.0 이하인지 확인하십시오.
wp plugin list --allow-root | grep -E 'tutor-lms' | awk '{print $2 " " $3}'