StreamIO
StreamIO es una máquina mediana que cubre la enumeración de subdominios que conduce a una inyección SQL para recuperar las credenciales de usuario almacenadas, que se descifran para obtener acceso a un panel de administración. El panel de administración es vulnerable a LFI, lo que nos permite recuperar el código fuente de las páginas de administración y nos lleva a identificar una vulnerabilidad de inclusión remota de archivos, cuyo abuso nos permite acceder al sistema. Después del shell inicial, aprovechamos la utilidad de línea de comandos SQLCMD para enumerar bases de datos y obtener más credenciales utilizadas en el movimiento lateral y encontrar bases de datos guardadas del navegador, que se decodifican para exponer nuevas credenciales. Usando las nuevas credenciales dentro de BloodHound descubrimos que el usuario tiene la capacidad de agregarse a un grupo específico en el que puede leer secretos LDAP. Sin acceso directo a la cuenta, utilizamos PowerShell para abusar de esta función y agregarnos al grupo "Core Staff", luego accedemos a LDAP para revelar la contraseña LAPS del administrador.

Enumeración
Iniciamos con la enumeración de los puertos abiertos de la maquina victima.
Luego de obtener los puertos, enumeraremos los servicio y las versiones de los puertos abiertos que encontramos.
Luego de enumerar agregaremos el dominios que es streamio.htb al /etc/hosts y enumeraremos los directorios del sitio web del puerto 443

Teniendo la información actual, no se puede hacer mucho por lo que seguiremos enumerando. Ahora enumeraremos los subdominios del sitio web.
Encontramos que tenemos un subdominio que es watch
watch.streamio.htb

Ahora seguiremos enumerando los directorios del subdominio encontrado.
Tenemos algo nuevo que es search.php en el que podemos hacer una búsqueda de las películas

Explotación
SQL Injection
Luego de intentamos probar una inyeccion sql y vemos que funciono.

Por lo que teniendo en cuenta de que estamos frente a un sql server podemos encontrar mas información en el post de hacktricks:
Enumeramos las columnas te tiene la query
Enumeración de las bases de datos existentes:
Enumeración de las tablas :
Enumeración de las columnas:
Luego de enumerar las columnas de la tabla users lo que haremos será obtener los datos que están almacenadas en ella.
Cracking con hashcat
Luego de obtener las credenciales almacenadas en la base de datos lo que haremos será crackerlas con hashcat

Cracking con john
También podemos crackearlas con la herramienta de John The Riper.

Teniendo las credenciales en texto plano, las usaremos para autenticarnos contra el panel de administración que anteriormente habíamos encontrado
Admin panel
ingresando las credenciales de yoshihide logramos autenticarnos contra el sitio web, por lo que tenemos el siguiente panel.

En la parte del sitio web, vemos que tenemos un parámetro del cual podremos quizás explotarlo

Haciendo click en cada uno de los apartados como User management, Staff mannagement, movie management y leave a messege for admin en donde encontraremos algunos parámetros como movie=, staff=, user=.
Para encontrar o descubrir otros parámetros enumeraremos con ffuf
Encontramos otro parámetro que es debug el cual es para los desarrolladores

LFI - Local File Inclusion
Probando algunas vulnerabilidades con el parametro debug= encontramos que es vulnerable a un LFI y para leer los archivos .php usaremos wrappers de base64.

Para poder leer mas de los wrappers podemos leer el siguiente post:
Luego de obtener el contenido tenemos lo siguiente:
index.php
master.php
Analizando el archivo de master.php podemos ver que podemos incluir un archivo .php ajeno al servidor, por lo que iniciaremos un servidor en Python y crearemos un archivo .php y así verificar si se realiza una petición a nuestro servidor.
Tenemos la petición que se enviara por Burp suite
Realizamos la petición por el método post

Vemos que efectivamente se realiza una petición contra nuestro servidor.
Para obtener una revershell seguiremos los siguientes pasos:
Descargaremos
Invoke-PowerShellTcp.ps1y en la ultima linea debemos de poner la linea de codigo para que se ejecute.Iniciar un servidor en el
8000del directorio donde se encuentra el archivoInvoke-PowerShellTcp.ps1.
Ahora crearemos un archivo
php_revershell.phpque contendrá:
Luego iniciaremos otro servidor en el puerto
80donde se encuentra nuestro archivophp_revershell.php
Finalmente debemos de ponernos a la escucha con
ncat
Luego debemos de hacer la petición a nuestro servidor con el nombre de nuestro archivo, que en nuestro caso es php_revershell.php.

Escalada de privilegios
Usuario - yoshihide

Luego de obtener la shell como el usuario yoshihide, enumeraremos la base de datos streamio_backup a la que no podíamos acceder desde la inyección sql

Enumernado las tablas encontramos con una que es users y lo que haremos sera ver el contenido y verificar si es igual a la anterior que nos encontramos en la base de datos streamio.

Vemos que son distintas y lo que haremos sera crackerlas
Usuario - nikk73
Tenemos las credenciales de nikk37 por la que procederemos a validarlas contra el la maquina victima

Haciendo uso de netexec podremos validar las credenciales

Podemos ver que las credenciales son validas por lo que haciendo uso de evil-winrm podremos ingresar como nikk37.

Enumerando los directorios encontraremos algo interesante, que es algunas credenciales de una perfil de usuario del navegador.

Credenciales de Firefox
Luego de descargarnos los archivos necesarios lo que haremos es obtener las credenciales con firefox_decrypt.py
Obtenemos credenciales que validaremos contra el servicio smb haciendo uso de netexec

Podemos observar que las credenciales: JDgodd : JDg0dd1s@d0p3cr3@t0r son validas, pero no podemos ingresar porque no pertenecemos al grupo remote management
Usuario - JDgodd
Haciendo uso de las credenciales, enumeraremos el sistema con bloodHound
Encontramos que el usuario JDgodd tiene permisos de writeowner contra el grupo Core Staff y este tiene permisos de ReadLAPSPassword del dominio

write owner
Para explotar esto, haremos uso de PowerView.ps1 y asi agregar al usuario JDgodd al grupo Core Staff
Asignamos las variables del usuario al cual agregaremos al grupo
Añadimos al grupo al usuario JDgodd
Luego podemos verificar si el usuario pertenece al grupo, efectivamente este ahora ya pertenece al grupo.

Para entender mejor podemos visitar :
Read Laps Password
Ahora teniedo al usuario en el grupo core Staff y este tiene permisos de ReadLAPSpassword podremos leer las credenciales del usuario administrador.
https://swisskyrepo.github.io/InternalAllTheThings/active-directory/pwd-read-laps/#extract-laps-password Para esto podemos usar
ldapsearchobloodyAdque en mi caso será esta ultima que usare:
Validando las credenciales podemos ver que son validas

Usuario - administrator

Last updated