
# 온라인 쇼핑 시스템의 시간 기반 블라인드 SQL 인젝션 취약점에 대한 권고 및 개념 증명 기술적 세부 사항, 영향 분석, 그리고 수정 권장 사항을 포함합니다.
CVE: CVE-2025-52021
제목: edit_product.php의 product_id 매개변수를 통한 시간 기반 블라인드 SQL 인젝션
공급업체 / 저장소: PuneethReddyHC — https://github.com/PuneethReddyHC/online-shopping-system-advanced
영향받는 버전: 1.0 (테스트 시점의 master 브랜치/태그)
발견자: Hafiz Pradana Gemilang
공개 상태: 공급업체에 비공개로 통보됨. 사용자 안전을 위해 전체 익스플로잇 PoC는 공개적으로 공개되지 않음.
Online Shopping System Advanced v1.0의 admin/admin/edit_product.php에서 시간 기반 블라인드 SQL 인젝션 취약점이 발견되었습니다. product_id GET 매개변수는 적절한 검증이나 매개변수화 없이 SQL 쿼리에 삽입됩니다. 공격자는 시간 지연 함수(예: SLEEP)를 주입하여 서버 응답 지연을 관찰하고 데이터베이스 동작을 추론할 수 있으며, 이는 원격 SQL 인젝션 지점을 확인하는 것입니다.
참고: 이 권고에는 실행 가능한 익스플로잇 페이로드가 의도적으로 포함되지 않았습니다. 개념 증명 세부 사항은 수정을 위해 유지관리자에게 비공개로 공유되었습니다.
/admin/admin/edit_product.php?product_id=<value>
로컬 테스트 URL 예시:
http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0
product_id (GET)admin/admin/edit_product.phpproduct_id 매개변수를 수락하고 이를 매개변수화 없이 SQL 문에 포함해야 함.데이터베이스 SLEEP() 의미론을 사용한 타이밍 기반 인젝션 시도는 성공적인 인젝션과 일치하는 측정 가능한 서버 측 지연을 생성했습니다:
SLEEP(6) → 관찰된 응답 지연 ≈ 6.01초SLEEP(15) → 관찰된 응답 지연 ≈ 15.00초SLEEP(0) → 기준 응답 지연 ≈ 0.01초이러한 결과는 시간 기반 추론을 허용하는 블라인드 SQL 인젝션 지점을 나타냅니다. 테스트 중 관찰된 데이터베이스 이름: onlineshop.
이 취약점의 성공적인 악용으로 공격자는 다음을 수행할 수 있습니다:
예상 심각도: 높음
SLEEP() 변형으로 수행)을 포함하는 조작된 요청을 product_id 매개변수에 전송.전체 단계별 PoC는 공개 권고에서 제외됨 — 책임 있는 공개 조건에 따라 암호화된 PoC는 보고자에게 문의하세요.
$stmt = $pdo->prepare('SELECT * FROM products WHERE id = ?');
$stmt->execute([$product_id]);
product_id를 정수로 취급하고 그에 따라 검증하세요 (예: filter_input(INPUT_GET, 'product_id', FILTER_VALIDATE_INT)).DROP, ALTER, GRANT 또는 관리 권한 회피).(공급업체/유지관리자의 편의를 위해 포함 — PoC 페이로드를 공개적으로 게시하지 마세요)
sqlmap -u "http://<host>/online-shopping-system-advanced-master/admin/admin/edit_product.php?product_id=0" --dbms=mysql --batch --level=5 --risk=3 --technique=T --time-sec=6
발견자: Hafiz Pradana Gemilang
면책 조항: 이 공개 권고는 사용자를 보호하기 위해 악용 가능한 페이로드를 생략합니다. 전체 기술 세부 사항 및 PoC는 합의된 책임 있는 공개 정책에 따라 요청 시 공급업체에 제공됩니다.