
CVE-2025-68400 - ChurchCRM은 ConfirmReportEmail.php에서 시간 기반 블라인드 SQL 인젝션에 취약합니다
| 필드 | 세부정보 |
|---|---|
| CVE ID | CVE-2025-68400 |
| 심각도 | CRITICAL |
| 권고 | 권고 보기 |
| 발견자 | Lukasz Rybak |
ChurchCRM 6.3.0의 레거시 엔드포인트 /Reports/ConfirmReportEmail.php에 치명적인 SQL 인젝션 취약점이 존재합니다. 이 기능은 UI에서 제거되었지만, 해당 파일은 계속 배포되어 URL을 통해 직접 접근할 수 있습니다. 이는 전형적인 죽었지만 접근 가능한 코드(dead but reachable code) 사례입니다. 권한이 하나도 할당되지 않은 사용자를 포함한 모든 인증된 사용자가 familyId 매개변수를 통해 SQL 인젝션을 악용할 수 있습니다.
문제는 다음 위치에 있습니다:
src/Reports/ConfirmReportEmail.php
취약한 코드(82~83행):
if (InputUtils::legacyFilterInput($_GET['familyId'], 'int')) {
$sSubQuery = ' and fam_id in (' . $_GET['familyId'] . ') ';
}
취약한 이유:
legacyFilterInput()의 반환 값이 완전히 무시됩니다.$_GET['familyId'] 값이 SQL 쿼리에 직접 연결됩니다.죽었지만 접근 가능한 엔드포인트:
/Reports/ConfirmReportEmail.php?familyId=<value>
정상 동작:
302 Redirect → /v2/family/<id>&PDFEmailed=
) 또는 --를 포함하는 악성 페이로드는 리다이렉트 로직을 깨뜨리고 취약한 SQL을 실행합니다.
권한이 전혀 없는 사용자도 이 취약점을 악용할 수 있습니다.
SLEEP(5) 페이로드는 응답을 안정적으로 지연시켜 SQL 실행을 입증합니다.
인증된 사용자가 다음 URL에 접속합니다:
http://localhost:8101/Reports/ConfirmReportEmail.php?familyId=1)%20AND%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))a)%20--%20-
관찰된 결과:
sqlmap 확인:
이 CVE는 조정된 취약점 공개(coordinated vulnerability disclosure) 절차에 따라 책임감 있게 공개되었습니다. 여기에 제공된 정보는 교육 및 방어 목적으로만 사용됩니다.