WordPress
Target(s): 10.129.2.37 (ACADEMY-MISC-NIX01)
Escenario
Te han contratado para hacer un pentest externo a la compañía INLANEFREIGHT que hostea uno de sus sitios web en WordPress.
Hay que realizar enumeración del objetivo a través de lo aprendido en el módulo para encontrar todas las flags. Obtener un acceso shell al servidor web para encontrar la última flag.
Nota: Hay que tener conocimiento sobre cómo mapea Linux los DNS cuando falta un name server.
Pregunta 1: Identifica el número de versión de WordPress.
Añadimos el host objetivo a /etc/hosts
sudo nano /etc/hosts
10.129.2.37 inlanefreight.htb
Comprobamos que llegamos y recibimos el index con:
Descubrimos el enlace blog.inlanefreight.local, lo que indica que el WordPress está alojado ahí. Lo añadiremos a /etc/hosts:

Probamos acceso a blog.inlanefreight.local:
Nos devuelve el index de blog.inlanefreight.local, esto quiere decir que lo alcanzamos correctamente.
Enumeramos la versión de WordPress:

Pregunta 2: Identifica el tema de WordPress que está en uso.
Buscaremos identificar el tema que se está utilizando con el siguiente comando:

Pregunta 3: Envía el contenido del archivo flag en el directorio con el listado de directorios habilitado.
Vamos a buscar en los directorios donde puede haber contenido y lo mostramos con HTML:

Localizamos el archivo upload_flag.txt y lo mostramos:

Pregunta 4: Identifique al único usuario de WordPress que no sea administrador. (Formato: <first-name><last-name>)
Para identificar el usuario no admin, indagamos en el blog y encontramos un author de un post que es el usuario erika. Clicamos en su perfil y nos fijamos en la URL.

Utilizamos wpscan para enumerar usuarios:

Pregunta 5: Utiliza un plugin vulnerable para descargar un archivo que contiene una flag, a través de una descarga de archivos no autenticada.
Target(s): 10.129.242.154 (ACADEMY-MISC-NIX01)
Añado la nueva IP objetivo (porque reinicie el laboratorio) al archivo /etc/hosts:

Tenemos que fijarnos en el análisis de WPScan, pero en este caso hay que hacerlo utilizando un token de API de WPScan, así que vamos a solicitarlo a la página oficial:

Guardamos el API token y montamos el siguiente comando:

Identificamos la siguiente vulnerabilidad con el escaneo:

Vamos a exploit-db al enlace de esta vulnerabilidad y encontramos como explotarla:


Pregunta 6: ¿Cuál es el número de versión del plugin vulnerable a una LFI?
Para la versión del plugin LFI, sacamos los plugins y sus versiones:
Identificamos el plugin vulnerable a LFI y anotamos su versión.
Pregunta 7: Utilice el LFI para identificar a un usuario del sistema cuyo nombre comience por la letra «f».
Creamos un archivo para enumeración de usuarios a través del archivo /etc/passwd, en mi caso lo he llamado lfi_site_editor.sh:

Al utilizar el script hemos listado los usuarios e identificamos uno que empieza por f:

Pregunta 8: Obtén un shell en el sistema y envíe el contenido de la flag que hay en el directorio /home/erika.
Para conseguir las credenciales del usuario erika, que es el que nos piden para subir la reverse shell, haremos un ataque de fuerza bruta con wpscan utilizando rockyou.txt.
Primero localizamos y descomprimimos rockyou.txt:

También se puede descomprimir en la otra ruta y movernos hasta ella para utilizarlo:

Montamos el comando con WPScan:

Encontramos la credenciales de erika:

Desde el navegador accedemos a blog.inlanefreight.local/wp-admin y hacemos login con las credenciales:

En el menú lateral izquierdo vamos a Appearence > Theme Editor:

En el menú lateral derecho, donde aparecen los archivos del tema, seleccionamos el tema TwentySeventeen, el template 404 y en el código escribimos la línea system($_GET['cmd']); para obtener una shell inversa y hacemos click en Update File:


Ahora desde el terminal confirmaremos la ejecución de código remoto (RCE):

Este comando responde bien, pero si hay espacios o más carácteres, nos dará error:

Lo encodeamos en formato URL y ejecutamos de nuevo:

Listaremos los archivos del directorio indicado en la pregunta /home/erika:

Localizamos el archivo flag y lo mostramos:

Última actualización