Writeup Cybersecurity week 2023 ~ Pumahat
Nota: Este artículo podría no contener todos los retos del CTF, debido a que no pude documentarlos y de algunos no tengo capturas de pantalla, sin embargo, espero que sea de utilidad para el lector
Cultura general
whoami
¿Quién es? Respuesta: Kevin Mitnick
En caso de no saber quién es, se puede buscar la imagen y se obtiene la respuesta.
Silbato de Captain Crunch
Esta imagen hace referencia al hackeo de sistemas telefónicos con el sonido que hacía este silbato, inventado por John Draper, en caso de no saber también se puede buscar con las palabras clave: “captain crunch whistle hack” y se encuentra el contexto.
Iphone break
La imagen anterior es sobre la historia del jailbreak del Iphone, realizada por George Hotz a los 17 años.
Análisis de red
Autenticación insegura
Este reto nos pedía encontrar una bandera en un archivo pcap, para ello se utilizó la herramienta wireshark
para analizar el archivo, al analizarlo podemos ver que hay paquetes de tipo http
con método GET
así que revisando con cuidado la información de estos, se encontró la flag en texto plano.
Recuperando imágenes
Para este reto teníamos una pista sobre un archivo imagen en el segmento de paquetes pcap, así que igualmente usando wireshark
, observando los paquetes, notamos que hubo un ingreso por ftp
` y obtención de un archivo imagen, así que, filtrando los objetos de tipo data-ftp, pudimos obtener la imagen, y sólo bastaba con descargarla y obtener la flag.
y simplemente era visualizar la imagen y obtener la flag.
Criptografía
Esta imagen del emperador romano Cesar, hace alusión al cifrado cesar, que mueve n posiciones el alfabeto, en este caso se mueve 20 posiciones, así que usando herramientas online como CyberChef se puede obtener la respuesta.
Network
Crackeando ssh
Este desafío nos pedía crackear una contraseña de ssh
para obtener la contraseña, sin embargo nos pedía explícitamente no utilizar fuerza bruta, así que, la segunda opción que no involucra activamente a la máquina objetivo, eran herramientas online como crackstation
que es un diccionario de contraseñas, así que se utilizó esta herramienta para obtener la contraseña.
una vez crackeada, simplemente era cuestión de entrar a la máquina con la contraseña obtenida y obtener la flag.
Pentesting web
SSRF (Server Side Request Forgery)
La página que se nos da para atacar, tiene un enlace para la página llamada “flag.php” sin embargo al acceder nos dice que no tenemos permiso para leer, así que lo primero que se hizo después de ver el código fuente es ver el formato de URL, y notamos que tiene un Server Side Request Forgery, por el formato de la URL:
https://pumahat.unam.mx:23350/index.php?content=index.php
por lo que en lugar de visitar directamente flag.php, se intentó hacerlo mediante el parámetro content, al hacerlo tampoco mostraba nada, pero viendo nuevamente el código fuente podemos leer el contenido de la página, y ahí se encuentra la flag.
Webshell
No tengo suficientes capturas de pantalla sobre este reto, pero consistía en revisar la página robots.txt, que normalmente es un archivo que incluye direcciones que no se deben visitar, entre ellas alguna que contenga la flag.
La dirección contenía una api que comunicaba con la máquina, pero no tenía los suficientes filtros para evitar inputs no deseados, lo que fácilmente lo convirtió en un RCE
la máquina ejecutaba un comando específico, pero podía fácilmente tener un bypass haciendo una injección de comandos como:
<comando>; cat /home/user/flag.txt
(Normalmente se haría una búsqueda del archivo, pero el comando anterior era el más cercano al final del comando que se ejecutaba para leer la flag)
Miscelaneo
Git
En un reto nos pedían encontrar la flag en un git, por lo que este es un problema clásico de commits inseguros, así que lo que se hizo fué verificar los logs del git, y se encontró la flag en un commit.
Al revisar el historal de commits, generalmente en los primeros, encontramos malas prácticas como subir contraseñas, o en este caso la flag.
Paso a paso:
require: tener el git ya clonado
1. git log -> Muestra el historial de versiones de un git
2. git checkout <commit> -> Cambia el estado del git al commit que se le indique
3. realizar una revisión de los documentos del git, en este caso se encontró la flag en el archivo **index.html**
al haber realizado estos sencillos comandos, pudimos obtener el código fuente de la página y encontrar la flag.
¿fe0?
este reto nos da una pista del reto, ya que hace alusión a la firma de los archivos de tipo imagen jpeg, sin embargo era una cadena muy larga sin aparente sentido, utilizando herramientas como cyberchef me di cuenta que era texto en formato base64
así que una vez decodificado, notamos que es un archivo jpeg
y abriendo el archivo con un visor de imágenes, en mi caso fué con feh
se puede ver la flag.
Red Flag
Este problema también es trivial, nos dan una imagen con una bandera roja, aparentemente normal, pero podemos inferir que tiene información dentro (Esteganografía), así que se utilizó la herramienta steghide
para extraer la información de la imagen, y se obtuvo la flag.
steghide extract -sf redflag.jpg
Crackzip
Para esta prueba nos dan un archivo zip, que al descomprimirlo nos pide una contraseña, lo primero que vino a mi mente y es de las herramientas más populares, fue el buen john
para crackear la contraseña del archivo, esto consiste en convertir el archivo zip a un formato que pueda ser leído por john
usando zip2john
, y posteriormente crackearlo.
para ello basta con ejecutar los siguientes comandos:
zip2john challenge.zip > secret.hash
para escribir el hash en un archivo llamado secret.hash, y posteriormente crackearlo con john, usando algún diccionario de contraseñas, en este caso se utilizó el clásico diccionario rockyou.txt
john --wordlist=/usr/share/wordlists/rockyou.txt secret.hash
al obtener la contraseña sólo era cuestión de descomprimir el zip y obtener la flag.
OSINT
Metadata
Este reto es muy similar al anterior, nos dan una imagen, sin embargo no contiene nada dentro, pero al revisar los metadatos de la imagen, se encuentra la flag, para esto se utilizó la herramienta exiftool
.
exiftool metadata.jpg
Finalmente quiero agradecer al equipo de PumaHat por la excelente organización del evento, así como a las personas que dedicaron tiempo a realizar los retos (incluyendo los de hacking físico) me gustó bastante, también gracias a todos los participantes que hicieron de esto un reto divertido. Espero que este writeup les sea útil, y si tienen alguna pregunta o encuentran alguna imprecisión, no duden en ponerse en contacto conmigo a través de mis redes sociales. ¡Gracias!1
-Lorne