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.

  1. Añadimos el host objetivo a /etc/hosts

sudo nano /etc/hosts

10.129.2.37 inlanefreight.htb
  1. Comprobamos que llegamos y recibimos el index con:

  1. Descubrimos el enlace blog.inlanefreight.local, lo que indica que el WordPress está alojado ahí. Lo añadiremos a /etc/hosts:

  1. Probamos acceso a blog.inlanefreight.local:

  1. Nos devuelve el index de blog.inlanefreight.local, esto quiere decir que lo alcanzamos correctamente.

  2. Enumeramos la versión de WordPress:

Pregunta 2: Identifica el tema de WordPress que está en uso.

  1. 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.

  1. Vamos a buscar en los directorios donde puede haber contenido y lo mostramos con HTML:

  1. 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>)

  1. 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.

  1. 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)

  1. Añado la nueva IP objetivo (porque reinicie el laboratorio) al archivo /etc/hosts:

  1. 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:

  1. Guardamos el API token y montamos el siguiente comando:

  1. Identificamos la siguiente vulnerabilidad con el escaneo:

  1. 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?

  1. 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».

  1. 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:

  1. 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.

  1. 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.

  2. Primero localizamos y descomprimimos rockyou.txt:

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

  1. Montamos el comando con WPScan:

  1. Encontramos la credenciales de erika:

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

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

  1. 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:

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

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

  1. Lo encodeamos en formato URL y ejecutamos de nuevo:

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

  1. Localizamos el archivo flag y lo mostramos:

Última actualización