SlideShare una empresa de Scribd logo
Solución al reto Hackademic.RTB2
@diegorg
Averiguo la ip de la máquina objetivo
En el escaneo de puertos veo que el puerto 80 está abierto y es un servicio web
y el 666 está filtrado.
Realizo un escaneo de directorios y ficheros, además del index.php parece ser
que también tenemos un phpmyadmin
Realizo un escaneo con dirbuster, se descubre el directorio index y check y
otros directorios pertenecientes a phpmyadmin
Al acceder al servicio web aparece un formulario de acceso
Intento sin éxito obtener las credenciales por fuerza bruta.
Tampoco es vulnerable a inyección SQL.
No obtengo nada interesante de los directorios index y check.
No consigo explotar ninguna de las
vulnerabilidades que tiene esta versión.
Tampoco consigo las credenciales de
phpmyadmin por fuerza bruta.
Averiguo la versión de
phpmyadmin consultando el
fichero changelog.php.
Para acceder al directorio setup de phpmyadmin es necesario autenticación.
Intento sin éxito conseguir el acceso por fuerza bruta.
Escaneo de nuevo los puertos con distintas opciones, en uno de los escaneos el
puerto 666 aparece abierto, después de hacer distintas pruebas me doy cuenta
de que al realizar varias veces un escaneo se abre ese puerto. Al final veremos
por qué.
Repito el escaneo con más opciones para sacar más información sobre ese
puerto.
Es un servicio web lo que tenemos a la escucha.
Ha encontrado el fichero robots.txt.
Realizo un escaneo de directorios.
Esto es lo que aparece cuando accedo al servicio web. Se trata del cms Joomla
versión 1.5 como se puede ver en la vista y en el código fuente.
CTF Hackademic.RTB2
Después de dar vueltas por las distintas opciones que presenta, intento sin éxito
acceder al directorio administrator.
El directorio tmp está vacío y el resto de directorios no tiene nada interesante o
no tengo acceso.
Intento sacar provecho de alguna de las múltiples vulnerabilidades que tiene
Joomla 1.5. Después de no conseguir explotar ninguna de ellas, llego a esta opción,
el listado de contenidos.
Guardo en el fichero (request.txt) la petición al servidor para luego procesarla con
sqlmap y comprobar si es vulnerable a SQLi
El parámetro letter es vulnerable a SQLi. Obtengo las bases de datos.
Obtengo el hash de los usuarios de mysql.users.
Intento crackearlos sin éxito.
Realizo un volcado de joomla.jos_users.
Necesito saber cómo genera el hash Joomla para después crackearlo con hashcat.
Se han crackeado dos de los tres hashes.
Usuario Password
JSmith matrix
Btallor victim
Me logueo con uno y otro usuario.
No consigo encontrar ninguna vulnerabilidad.
Intento a través de SQLi ejecutar el comando id.
Indico que el backdoor de sqlmap lo suba a /var/www (por defecto) o
como alternativa al directorio tmp que se descubrió anteriormente.
Sin resultado positivo.
Sin embargo, si consulto el directorio sí veo que se ha creado el backdoor
aunque sin contenido.
Ejecuto de nuevo sqlmap pero ahora conectado a burpsuite para ver qué pasa.
Quizás la SQLi no esté dando resultados y a lo mejor por eso crea el fichero pero no el
contenido.
Repito la petición pero introduciendo un error en la query, a LIMIT le he quitado la M.
Obtengo un error que me muestra la sql sobre la que se está ejecutando la SQLi.
Según la sql: SELECT id, title FROM jos_content WHERE state=1 AND UPPER(title) LIKE ‘List of content items…’ LIMIT 1…
La condición state=1 AND UPPER(title) LIKE ‘List of content items…’ no se está cumpliendo.
Consulto el contenido de jos_content y veo que hay un registro con title=‘Welcome’ y state=1
Cambio la cadena a buscar por WELCOME en mayúsculas que es como se va a comparar.
Lanzo de nuevo la petición y el resultado es que el fichero que se intenta grabar como
backdoor ya existe.
Cambio el nombre del backdoor a mibackdoor.php
Ahora sí se ha subido bien.
A través del backdoor subo el webshell r577.php
Echo un vistazo a los directorios, servicios en ejecución, etc, etc…
Desde la webshell hago una conexión a mi sistema para tener una sesión de terminal
(me muevo más rápido aquí que en la webshell).
Después de algunas vueltas, descubro que la versión del kernel es vulnerable.
CVE-2010-2959: Integer overflow in the Controller Area Network (CAN) subsystem when
setting up frame content and filtering certain messages. An attacker could send specially
crafted CAN traffic to crash the system or gain root privileges.
Para explotar la vulnerabilidad he encontrado el exploit 14814.c de exploit-db.
Subo el fichero desde mi sistema, compilo, ejecuto y… r00t!
Vuelco el contenido del fichero Key.txt, objetivo del reto y me encuentro con que está
codificado, al parecer en base 64.
Copio el archivo al directorio raiz del servicio web, para poder bajarlo por web.
Lo descargo en mi sistema.
Decodifico el contenido y veo que se trata de una imagen PNG.
Hago un pequeño script para que lea Key.txt y cree key.png
Abro la imagen, y aquí tengo el contenido del fichero objetivo del reto.
Y ahora queda resolver la incógnita de por qué el puerto 666 inicialmente aparece
filtrado y después de varios escaneos de puerto, se muestra entonces abierto.
Si se analizan las reglas en iptables, lo que se ha hecho es crear un port knocking. La
conexión a los puertos 1001, 1101, 1011 y 1001 otra vez y en este orden abre el puerto
666.
@diegorg

Más contenido relacionado

PDF
Agentes y servlets
DOCX
Reporte de práctica #1
PDF
Manual de la conexión de php con sqlserver 2012
PPTX
Java con base de datos
DOCX
Usando Netbeans para desarrollos en PHP
PPTX
Conexión entre php y sql server
PDF
Find File Servlet DB
PPT
mejorando con php
Agentes y servlets
Reporte de práctica #1
Manual de la conexión de php con sqlserver 2012
Java con base de datos
Usando Netbeans para desarrollos en PHP
Conexión entre php y sql server
Find File Servlet DB
mejorando con php

La actualidad más candente (20)

PDF
Ejemplo de base de datos y reports con jasper report
PPTX
PDF
Manual Instalación JLex & CUP
PDF
Continuación 3 de la creación de reportes con jasper report
DOCX
02 formulario iniciar sesion programar
PDF
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
PDF
Unidad 3 ficheros
ODP
Iniciación PHP 5. PHP y MySQL
PDF
desarrolo de sitios web php y mysql
PPTX
PDF
php
PDF
Instalación Joomla Ubuntu Hardy Heron
PDF
Servlet Hola Mundo con Eclipse y Tomcat
DOCX
Instalacion apachetocamtxammp
PPTX
PDF
Semana 4 y 5 la shell bash guia de ejercicios resuelta
PDF
Actividad3.1
PPT
Construccion a través de compontes
Ejemplo de base de datos y reports con jasper report
Manual Instalación JLex & CUP
Continuación 3 de la creación de reportes con jasper report
02 formulario iniciar sesion programar
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Unidad 3 ficheros
Iniciación PHP 5. PHP y MySQL
desarrolo de sitios web php y mysql
php
Instalación Joomla Ubuntu Hardy Heron
Servlet Hola Mundo con Eclipse y Tomcat
Instalacion apachetocamtxammp
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Actividad3.1
Construccion a través de compontes

Similar a CTF Hackademic.RTB2 (20)

PDF
Solución reto null byte
PDF
Solucion reto breach
PPTX
Desde el DVR hasta la cocina
PDF
Presentación Workshop php Barcelona Seguridad
PDF
Solucion reto mr robot
PDF
Ataque por inyección de código sql y sniffing
PDF
Presentacion re y_des_09072003
PDF
Web App Hacking and Penetration Testing - (RFI - LFI & RCE)
PDF
Compromiso de Seguridad Base de Datos en sistema web Php/MySQL Alta de Usuari...
PPTX
CPMX5 - Hacking like a boss por Roberto Salgado
PPTX
Conferencia Innovación en Técnicas de Ethical Hacking
PDF
Un caso Forense: Analizando un servidor Linux
PDF
Jaime Peñalba y Javier Rodríguez - Live Free or Die Hacking [RootedCON 2012]
PDF
Forense en windows - Resolución Reto I de Dragonjar
PPTX
Análisis forense en linux - Compromised Linux Server
PDF
Subiendo shell y explotando vulnerabilidad lfi vía phpinput
PPTX
Análisis de Vulnerabilidades en Páginas Web
PDF
Vulnerabilidades en aplicaciones web
PDF
Seguridad: Ataque Unicode Solución
PPT
MAITAINING ACCESS
Solución reto null byte
Solucion reto breach
Desde el DVR hasta la cocina
Presentación Workshop php Barcelona Seguridad
Solucion reto mr robot
Ataque por inyección de código sql y sniffing
Presentacion re y_des_09072003
Web App Hacking and Penetration Testing - (RFI - LFI & RCE)
Compromiso de Seguridad Base de Datos en sistema web Php/MySQL Alta de Usuari...
CPMX5 - Hacking like a boss por Roberto Salgado
Conferencia Innovación en Técnicas de Ethical Hacking
Un caso Forense: Analizando un servidor Linux
Jaime Peñalba y Javier Rodríguez - Live Free or Die Hacking [RootedCON 2012]
Forense en windows - Resolución Reto I de Dragonjar
Análisis forense en linux - Compromised Linux Server
Subiendo shell y explotando vulnerabilidad lfi vía phpinput
Análisis de Vulnerabilidades en Páginas Web
Vulnerabilidades en aplicaciones web
Seguridad: Ataque Unicode Solución
MAITAINING ACCESS

Último (6)

PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
sistemas de informacion.................
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Conceptos basicos de Base de Datos y sus propiedades
Su punto de partida en la IA: Microsoft 365 Copilot Chat
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Derechos_de_Autor_y_Creative_Commons.pptx
sistemas de informacion.................
AutoCAD Herramientas para el futuro, Juan Fandiño
Conceptos basicos de Base de Datos y sus propiedades

CTF Hackademic.RTB2

  • 1. Solución al reto Hackademic.RTB2 @diegorg
  • 2. Averiguo la ip de la máquina objetivo
  • 3. En el escaneo de puertos veo que el puerto 80 está abierto y es un servicio web y el 666 está filtrado.
  • 4. Realizo un escaneo de directorios y ficheros, además del index.php parece ser que también tenemos un phpmyadmin
  • 5. Realizo un escaneo con dirbuster, se descubre el directorio index y check y otros directorios pertenecientes a phpmyadmin
  • 6. Al acceder al servicio web aparece un formulario de acceso
  • 7. Intento sin éxito obtener las credenciales por fuerza bruta. Tampoco es vulnerable a inyección SQL. No obtengo nada interesante de los directorios index y check.
  • 8. No consigo explotar ninguna de las vulnerabilidades que tiene esta versión. Tampoco consigo las credenciales de phpmyadmin por fuerza bruta. Averiguo la versión de phpmyadmin consultando el fichero changelog.php.
  • 9. Para acceder al directorio setup de phpmyadmin es necesario autenticación. Intento sin éxito conseguir el acceso por fuerza bruta.
  • 10. Escaneo de nuevo los puertos con distintas opciones, en uno de los escaneos el puerto 666 aparece abierto, después de hacer distintas pruebas me doy cuenta de que al realizar varias veces un escaneo se abre ese puerto. Al final veremos por qué.
  • 11. Repito el escaneo con más opciones para sacar más información sobre ese puerto. Es un servicio web lo que tenemos a la escucha. Ha encontrado el fichero robots.txt.
  • 12. Realizo un escaneo de directorios.
  • 13. Esto es lo que aparece cuando accedo al servicio web. Se trata del cms Joomla versión 1.5 como se puede ver en la vista y en el código fuente.
  • 15. Después de dar vueltas por las distintas opciones que presenta, intento sin éxito acceder al directorio administrator.
  • 16. El directorio tmp está vacío y el resto de directorios no tiene nada interesante o no tengo acceso.
  • 17. Intento sacar provecho de alguna de las múltiples vulnerabilidades que tiene Joomla 1.5. Después de no conseguir explotar ninguna de ellas, llego a esta opción, el listado de contenidos.
  • 18. Guardo en el fichero (request.txt) la petición al servidor para luego procesarla con sqlmap y comprobar si es vulnerable a SQLi
  • 19. El parámetro letter es vulnerable a SQLi. Obtengo las bases de datos.
  • 20. Obtengo el hash de los usuarios de mysql.users. Intento crackearlos sin éxito.
  • 21. Realizo un volcado de joomla.jos_users.
  • 22. Necesito saber cómo genera el hash Joomla para después crackearlo con hashcat.
  • 23. Se han crackeado dos de los tres hashes. Usuario Password JSmith matrix Btallor victim
  • 24. Me logueo con uno y otro usuario. No consigo encontrar ninguna vulnerabilidad.
  • 25. Intento a través de SQLi ejecutar el comando id. Indico que el backdoor de sqlmap lo suba a /var/www (por defecto) o como alternativa al directorio tmp que se descubrió anteriormente. Sin resultado positivo.
  • 26. Sin embargo, si consulto el directorio sí veo que se ha creado el backdoor aunque sin contenido.
  • 27. Ejecuto de nuevo sqlmap pero ahora conectado a burpsuite para ver qué pasa. Quizás la SQLi no esté dando resultados y a lo mejor por eso crea el fichero pero no el contenido.
  • 28. Repito la petición pero introduciendo un error en la query, a LIMIT le he quitado la M. Obtengo un error que me muestra la sql sobre la que se está ejecutando la SQLi.
  • 29. Según la sql: SELECT id, title FROM jos_content WHERE state=1 AND UPPER(title) LIKE ‘List of content items…’ LIMIT 1… La condición state=1 AND UPPER(title) LIKE ‘List of content items…’ no se está cumpliendo. Consulto el contenido de jos_content y veo que hay un registro con title=‘Welcome’ y state=1
  • 30. Cambio la cadena a buscar por WELCOME en mayúsculas que es como se va a comparar. Lanzo de nuevo la petición y el resultado es que el fichero que se intenta grabar como backdoor ya existe.
  • 31. Cambio el nombre del backdoor a mibackdoor.php
  • 32. Ahora sí se ha subido bien.
  • 33. A través del backdoor subo el webshell r577.php
  • 34. Echo un vistazo a los directorios, servicios en ejecución, etc, etc…
  • 35. Desde la webshell hago una conexión a mi sistema para tener una sesión de terminal (me muevo más rápido aquí que en la webshell). Después de algunas vueltas, descubro que la versión del kernel es vulnerable. CVE-2010-2959: Integer overflow in the Controller Area Network (CAN) subsystem when setting up frame content and filtering certain messages. An attacker could send specially crafted CAN traffic to crash the system or gain root privileges.
  • 36. Para explotar la vulnerabilidad he encontrado el exploit 14814.c de exploit-db. Subo el fichero desde mi sistema, compilo, ejecuto y… r00t!
  • 37. Vuelco el contenido del fichero Key.txt, objetivo del reto y me encuentro con que está codificado, al parecer en base 64.
  • 38. Copio el archivo al directorio raiz del servicio web, para poder bajarlo por web. Lo descargo en mi sistema.
  • 39. Decodifico el contenido y veo que se trata de una imagen PNG.
  • 40. Hago un pequeño script para que lea Key.txt y cree key.png
  • 41. Abro la imagen, y aquí tengo el contenido del fichero objetivo del reto.
  • 42. Y ahora queda resolver la incógnita de por qué el puerto 666 inicialmente aparece filtrado y después de varios escaneos de puerto, se muestra entonces abierto. Si se analizan las reglas en iptables, lo que se ha hecho es crear un port knocking. La conexión a los puertos 1001, 1101, 1011 y 1001 otra vez y en este orden abre el puerto 666.