
# ChurchCRM 6.7.2 이전 버전의 인증된 숫자형 SQL 인젝션 PoC ChurchCRM 6.7.2 이전 버전에서 인증된 숫자형 SQL 인젝션을 시연하는 개념 증명으로, WHERE 절을 우회하고 여러 레코드에 영향을 미치는 로직 조작을 가능하게 합니다. 사용 지침, 패치 세부 사항 및 완화 권장 사항을 포함합니다.
작성자: Mohammed Idrees Banyamer
국가: 요르단
핸들: @banyamer_security
GitHub: https://github.com/mbanyamer
이 저장소는 ChurchCRM 6.7.2 이전 버전에서 발생하는 인증된 숫자형 SQL 인젝션 취약점을 시연하는 PoC(Proof of Concept)를 포함합니다.
이 취약점은 숫자로 간주되는 파라미터에 비숫자형 페이로드를 주입하여 SQL 쿼리의 로직을 조작할 수 있게 하며, 이를 통해 쿼리 동작을 무단으로 변경할 수 있습니다(예: WHERE 절 우회).
취약점은 다음 파일에 존재합니다:
src/PaddleNumEditor.php
POST 파라미터 PerID는 적절한 타입 캐스팅이나 검증 없이 여러 SQL 쿼리에 직접 연결됩니다. 숫자로 의도되었지만 SQL 로직을 변경하도록 조작될 수 있습니다.
취약한 패턴 예시(개념적):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
다음과 같은 페이로드를 제공함으로써:
0 OR 1=1 --
WHERE 절 로직을 우회할 수 있으며, 단일 레코드 작업을 다중 레코드 또는 전체 테이블 작업으로 변환할 수 있습니다.
이 취약점은 블라인드 데이터 추출용이 아니라 UPDATE, DELETE 또는 INSERT 작업에 영향을 주는 로직 악용을 위한 것입니다.
인증된 공격자는 다음을 수행할 수 있습니다:
이 결함은 숫자 전용 로직에서 발생하므로 기본적인 SQL 인젝션 탐지 및 WAF 규칙을 우회할 수 있습니다.
PoC는 다음을 시연합니다:
단일 레코드에만 영향을 주는 숫자형 PerID를 사용하는 합법적인 요청.
제작된 숫자형 SQL 인젝션 페이로드:
0 OR 1=1 --
이 페이로드는 WHERE 절 제한을 우회하여 다중 레코드 또는 전체 테이블 효과(예: 대량 삭제)를 초래합니다.
PoC는 HTTP 응답과 동작 차이를 비교하여 조작 성공 여부를 확인합니다.
의존성 설치:
pip install requests
PoC 스크립트에서 다음 변수를 편집하세요:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ 로컬 또는 승인된 테스트 인스턴스에서만 사용하세요
python3 churchcrm_cve-2026-24854_poc.py
악용을 확인하려면:
multibuy_mb)을 전후로 확인is_success_response() 함수는 인스턴스의 정상 응답과 조작된 응답에 맞게 조정할 수 있습니다.
이 문제는 커밋을 통해 ChurchCRM 6.7.2에서 수정되었습니다:
748f5084
수정 세부 사항:
(int) 캐스팅 적용:
PerIDNum0으로 강제 변환되어 인젝션 방지사용자는 즉시 업그레이드해야 합니다.
이 취약점은 다음에 의해 발견되어 책임 있게 공개되었습니다:
Mohammed Idrees Banyamer
요르단
Instagram: @banyamer_security
GitHub: https://github.com/mbanyamer
이 Proof of Concept은 교육 및 방어적 보안 목적으로만 제공됩니다.
소유하지 않거나 명시적 테스트 권한이 없는 시스템에 이 코드를 사용하지 마십시오.
저자는 이 코드로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.