Writeup HTB - Maquina Doctor
Hola a todos, no se en que momento se retiro esta maquina pero esta estuvo muy interesante, asi que me gustaria contarles como la resolvi.
Asi que comencemos primero haciendo un escaneo para ver a que nos enfrentamos
# Nmap 7.80 scan initiated Wed Jan 13 19:17:14 2021 as: nmap -sC -sV -p22,80,8089 -vvv -Pn -oN Targeted 10.10.10.209
Nmap scan report for 10.10.10.209
Host is up, received user-set (0.32s latency).
Scanned at 2021-01-13 19:17:14 -05 for 55s
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http syn-ack ttl 63 Apache httpd 2.4.41 ((Ubuntu))
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Doctor
8089/tcp open ssl/http syn-ack ttl 63 Splunkd httpd
| http-methods:
|_ Supported Methods: GET HEAD OPTIONS
| http-robots.txt: 1 disallowed entry
|_/
|_http-server-header: Splunkd
|_http-title: splunkd
| ssl-cert: Subject: commonName=SplunkServerDefaultCert/organizationName=SplunkUser
| Issuer: commonName=SplunkCommonCA/organizationName=Splunk/stateOrProvinceName=CA/countryName=US/localityName=San Francisco/emailAddress=support@splunk.com
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-09-06T15:57:27
| Not valid after: 2023-09-06T15:57:27
| MD5: db23 4e5c 546d 8895 0f5f 8f42 5e90 6787
| SHA-1: 7ec9 1bb7 343f f7f6 bdd7 d015 d720 6f6f 19e2 098b
| -----BEGIN CERTIFICATE-----
| MIIDMjCCAhoCCQC3IKogA4zEAzANBgkqhkiG9w0BAQsFADB/MQswCQYDVQQGEwJV
| UzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDzANBgNVBAoM
| BlNwbHVuazEXMBUGA1UEAwwOU3BsdW5rQ29tbW9uQ0ExITAfBgkqhkiG9w0BCQEW
| EnN1cHBvcnRAc3BsdW5rLmNvbTAeFw0yMDA5MDYxNTU3MjdaFw0yMzA5MDYxNTU3
| MjdaMDcxIDAeBgNVBAMMF1NwbHVua1NlcnZlckRlZmF1bHRDZXJ0MRMwEQYDVQQK
| DApTcGx1bmtVc2VyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0JgJ
| NKrC4SrGzEhhyluUIcBW+eD6y+4paEikip5bzO7Xz8+tVJmFBcDfZdkL3TIZFTCF
| 95BMqL4If1SNZlFQxpMZB/9PzCMm0HmhEK/FlHfdrLwaeK71SWeO/MMNtsAheIPA
| pNByri9icp2S9u7wg89g9uHK4ION8uTJMxbmtCRT4jgRcenOZYghvsTEMLPhwlb2
| M/59WRopfyakIEl/w/zF1jCfnrT6XfZtTos6ueet6lhjd8g5WW9ZJIfmjYDaqHPg
| Tg3yLCRjYhLk+2vLyrO23l5kk8H+H4JgIOCqhAw38hC0r+KETsuWCGIxl4rBBDQw
| E5TvP75NsGW2O3JNDQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBJjjx+KHFwYJei
| lMJlmXBOEs7V1KiAjCenWd0Bz49Bkbik/5Rcia9k44zhANE7pJWNN6gpGJBn7b7D
| rliSOwvVoBICHtWFuQls8bRbMn5Kfdd9G7tGEkKGdvn3jOFkQFSQQQ56Uzh7Lezj
| hjtQ1p1Sg2Vq3lJm70ziOlRa0i/Lk7Ydc3xJ478cjB9nlb15jXmSdZcrCqgsAjBz
| IIDPzC+f7hJYlnFau2OA5uWPX/HIR7JfQsKXWCM6Tx0b9tZKgNNOr+DwyML4CH6o
| qrryh7elUJojAaZ0wYNd5koGZzEH4ymAQoshgFyEgetm1BbzMbA3PfZkX1VR6AV+
| guO5oa9R
|_-----END CERTIFICATE-----
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 Wed Jan 13 19:18:09 2021 -- 1 IP address (1 host up) scanned in 55.27 seconds
al ver la salida de nmap, me parecio interesante el puerto 8089 pero no encontre nada. Todo nos sugiere que la pega puede ser por la web que esta corriendo por el puerto 80
corri con dirsearch para hacer un escaneo para descubrir algunos directorios, pero sin exito
revisando la web me parecio algo interesante al ir a la seccion Contacts, habia un correo con un dominio que me llamo la atencion
entonces quise probar y agregue el dominio doctors.htb en /etc/hosts
10.10.10.209 doctor.htb doctors.htb
lo que nos dio una web donde se encuentra un login,lo que nos lleva de nuevo a enumerar todo en las funciones de la aplicacion, codigo fuente,etc.
entonces crearemos un usuario en la seccion Register
lo que nos crea un usuario con un tiempo limite de 20 minutos
al revisar el codigo fuente vemos un comentario donde dice que archive esta en prueba beta
asi que crearemos un nuevo mensaje de prueba
una vez creado el nuevo mensaje vamos a doctors.htb/archive pero nos sale todo en blanco pero si revisamos el codigo fuente
podemos ver se ve reflejado el titulo del mensaje,lo que se ocurre entonces atacar por una injeccion, probe con una ataque inyeccion SQL, pero sin exito.
Entonces aqui viene lo divertido haremos una nuevo mensaje probando una injeccion SSTI - server-side template injection
al irme de nuevo a la pagina doctors.htb/archive, vemos esto
maravilloso! podemos ver que se produjo la ejecucion de codigo al injectar en el titulo del mensaje nuestra expresion matematica, dandonos como resultado 49 en la web Archive. Entonces lo que nesecimos es obtener una reverse shell pero para ello nesecitamos identificar el motor de plantillas, para ello usaremos el grafico de portswigger que nos ayudara para lograr nuestro cometido
asi que realizaremos la siguiente expresion en el titulo del mensaje
ahora revisamos la web archive para ver el resultado
como podemos ver el resultado es 7777777, lo que nos dice segun el grafico anterior es que la tecnologia de nuestra plantilla es jinja2, si el resultado hubiera sido 49 hubiera sido Twig. Por lo tanto usemos nuestro payload para este motor de plantilla que nos otorgue una reverse shell, yo la encontre en el siguiente enlace
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md
asi que agregamos un nuevo mensaje y en el titulo ingresemos nuestro payload para obtener nuestra reverse shell
dejamos en escucha un puerto con netcat en mi caso fue el puerto 443 y revisamos la web Archive y pudimos conectarnos sin problemas
enumerando la maquina nos damos cuenta que tenemos el usuario Shaun y el comando groups revela que el usuario actual es miembro del grupo adm. Investigando en internet no dice que este grupo se usa para tareas de monitoreo del sistema y proporciona acceso de lectura a los archivos de registro ubicados en /var/log. Dichos archivos registro son ideales para buscar algun password de un usuario
como vemos hacemos la busqueda de un password con grep en la ruta /var/log/apache2 al archivo backup, lo que nos da un password que podemos usarlo para loguearnos en este caso con el usuario Shaun
ahora estamos listo para obtener nuestra flag de user
Escalamiento de Privilegios
comenzamos hacer la enumeracion para escalar privilegios, yo me ayude de la herramienta de linpeas. Me parecio interesante que el proceso splunkd este corriendo como root
yo use este exploit que encontre en este repositorio
https://github.com/cnotin/SplunkWhisperer2
entonces ejecutamos el exploit para que se conecte al puerto 4444, que ya deje en escucha previamente
como vemos nos conectamos sin problemas y logramos ser root!!
solo nos faltaria buscar la flag de root en /root/root.txt y logramos vencer la maquina, que por cierto estuvo muy divertida jeje.
Si tienes una recomendacion o duda con este writeup, no dudes en escribirme a mi correo abel@gmail.com. nos vemos cuidense :)