
Herramienta de auditoría de tres vulnerabilidades RAGFlow (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Herramienta de auditoría de tres vulnerabilidades de RAGFlow (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Solo biblioteca estándar de Python, sin dependencias de terceros, se puede ejecutar directamente con Python 3.8+.
python3 ragflow-audit.py [-h] {ssti,zipslip,apikey} ...
python3 ragflow-audit.py ssti --url http://TARGET:9380 --auth "AUTH_HEADER" [--component StringTransform|Message] [--newline]
--url: dirección web de RAGFlow--auth: valor completo de la cabecera Authorization en la respuesta de inicio de sesión--component: componente objetivo, por defecto StringTransform--newline: usa saltos de línea en el payload (evita la detección regex de _is_jinjia2)Flujo: construir un canvas DSL malicioso -> POST /v1/canvas/set para crear el canvas -> POST /v1/canvas/completion para disparar la ejecución -> buscar uid= en la salida para determinar si el RCE tuvo éxito.
python3 ragflow-audit.py zipslip --zip evil.zip [--extract-dir /tmp/out]
Inspecciona offline las entradas del zip y marca tres tipos de peligro: path traversal (..), rutas absolutas y enlaces simbólicos.
python3 ragflow-audit.py apikey --beta "分享链接token" --node "攻击者user_id后12位"
Recupera el sujeto uuid1 a partir del token beta del enlace compartido públicamente, enumera time_low y genera tokens candidatos. En una explotación real, se llama a cada token candidato contra APIs que requieren autenticación (200 acierto / 401 continuar).
Las credenciales de inicio de sesión de RAGFlow están en la cabecera Authorization de la respuesta de inicio de sesión, no en el access_token del body. El access_token del body es solo un UUID y al llamar a la API dará 401.
curl -i -X POST http://TARGET:9380/v1/user/login \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"<RSA加密后的密码>"}'
Toma el valor de la cabecera authorization: de la respuesta como parámetro --auth.
Nota: la contraseña de registro/inicio de sesión debe cifrarse antes con RSA (la clave pública está en /ragflow/conf/public.pem, PKCS1_v1_5, y el objeto cifrado es el texto plano tras base64); enviar la contraseña en texto plano directamente dará error.
Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas e investigación de vulnerabilidades. El usuario asume las consecuencias de usar esta herramienta contra sistemas de terceros sin autorización.
| CVE | Tipo | Versiones afectadas | Versión corregida |
|---|
| CVE-2026-28797 | SSTI (componentes StringTransform/Message) | < 0.25.0 (NVD: 0.24.0 and prior) | 0.25.0 (corrección de sandbox, incorporado el 2026-03-02) |
| CVE-2026-24770 | Zip Slip en el analizador MinerU | < 0.23.1 | 0.23.1 |
| CVE-2025-69286 | API key deducible (uuid1 + clave tenant_id) | < 0.22.0 | 0.22.0 |