SlideShare una empresa de Scribd logo
1 de 43
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.
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

La actualidad más candente

Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportjbersosa
 
Manual Instalación JLex & CUP
Manual Instalación JLex & CUPManual Instalación JLex & CUP
Manual Instalación JLex & CUPrubeniii
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportjbersosa
 
02 formulario iniciar sesion programar
02 formulario iniciar sesion   programar02 formulario iniciar sesion   programar
02 formulario iniciar sesion programarpompeya
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltavictdiazm
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLRightster
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqlJuan Timoteo Cori
 
Instalación Joomla Ubuntu Hardy Heron
Instalación Joomla Ubuntu Hardy HeronInstalación Joomla Ubuntu Hardy Heron
Instalación Joomla Ubuntu Hardy HeronMae Molina
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcatjubacalo
 
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resueltavictdiazm
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontesjalzate
 

La actualidad más candente (20)

Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper report
 
Ajax
AjaxAjax
Ajax
 
Manual Instalación JLex & CUP
Manual Instalación JLex & CUPManual Instalación JLex & CUP
Manual Instalación JLex & CUP
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
02 formulario iniciar sesion programar
02 formulario iniciar sesion   programar02 formulario iniciar sesion   programar
02 formulario iniciar sesion programar
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
 
Unidad 3 ficheros
Unidad 3 ficherosUnidad 3 ficheros
Unidad 3 ficheros
 
Ftp
FtpFtp
Ftp
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
Connection
ConnectionConnection
Connection
 
php
phpphp
php
 
Instalación Joomla Ubuntu Hardy Heron
Instalación Joomla Ubuntu Hardy HeronInstalación Joomla Ubuntu Hardy Heron
Instalación Joomla Ubuntu Hardy Heron
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Instalacion apachetocamtxammp
Instalacion apachetocamtxammpInstalacion apachetocamtxammp
Instalacion apachetocamtxammp
 
CTF Brainpan
CTF BrainpanCTF Brainpan
CTF Brainpan
 
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resuelta
 
Actividad3.1
Actividad3.1Actividad3.1
Actividad3.1
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 

Similar a CTF Hackademic.RTB2

07 Php. Instalando Php My Admin
07 Php. Instalando Php My Admin07 Php. Instalando Php My Admin
07 Php. Instalando Php My AdminJosé M. Padilla
 
Backdoor via inyeccion
Backdoor via inyeccionBackdoor via inyeccion
Backdoor via inyeccionq3rv0
 
Fingerprinting en linux con unix_privesc_check
Fingerprinting en linux con  unix_privesc_checkFingerprinting en linux con  unix_privesc_check
Fingerprinting en linux con unix_privesc_checkq3rv0
 
Programación orientada a objetos II
Programación orientada a objetos IIProgramación orientada a objetos II
Programación orientada a objetos IIyanburbano
 
reto-by-q3rv0
reto-by-q3rv0reto-by-q3rv0
reto-by-q3rv0q3rv0
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDAndres Ldño
 
Inyecciones SQL para Aprendices
Inyecciones SQL para AprendicesInyecciones SQL para Aprendices
Inyecciones SQL para AprendicesTensor
 
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali LinuxActividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali LinuxFrancisco Medina
 
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSAcceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSTerrafx9
 
Suarez l 2001 el paquete java io
Suarez l 2001 el paquete java ioSuarez l 2001 el paquete java io
Suarez l 2001 el paquete java ioLuis Lopez Ac
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxssuser2e6b96
 
Con Symlink Hasta la Cocina..
Con Symlink Hasta la Cocina.. Con Symlink Hasta la Cocina..
Con Symlink Hasta la Cocina.. Dylan Irzi
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios webesmartcrimt
 
Proyecto 2 SEIN
Proyecto 2 SEINProyecto 2 SEIN
Proyecto 2 SEINLauraSLeon
 
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
 
Acceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-phpAcceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-phpJulio Cesar Salas
 

Similar a CTF Hackademic.RTB2 (20)

07 Php. Instalando Php My Admin
07 Php. Instalando Php My Admin07 Php. Instalando Php My Admin
07 Php. Instalando Php My Admin
 
Solucion reto breach
Solucion reto breachSolucion reto breach
Solucion reto breach
 
Backdoor via inyeccion
Backdoor via inyeccionBackdoor via inyeccion
Backdoor via inyeccion
 
Fingerprinting en linux con unix_privesc_check
Fingerprinting en linux con  unix_privesc_checkFingerprinting en linux con  unix_privesc_check
Fingerprinting en linux con unix_privesc_check
 
Programación orientada a objetos II
Programación orientada a objetos IIProgramación orientada a objetos II
Programación orientada a objetos II
 
reto-by-q3rv0
reto-by-q3rv0reto-by-q3rv0
reto-by-q3rv0
 
Manual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUIDManual de configuracion de proxy SQUID
Manual de configuracion de proxy SQUID
 
Inyecciones SQL para Aprendices
Inyecciones SQL para AprendicesInyecciones SQL para Aprendices
Inyecciones SQL para Aprendices
 
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali LinuxActividad No. 1.11: SQL Injection con sqlmap en Kali Linux
Actividad No. 1.11: SQL Injection con sqlmap en Kali Linux
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 
Team.docx
Team.docxTeam.docx
Team.docx
 
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPSAcceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
Acceso a carpeta privada con LDAP e instalación de Joomla en HTTPS
 
Suarez l 2001 el paquete java io
Suarez l 2001 el paquete java ioSuarez l 2001 el paquete java io
Suarez l 2001 el paquete java io
 
Mysql java
Mysql javaMysql java
Mysql java
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
 
Con Symlink Hasta la Cocina..
Con Symlink Hasta la Cocina.. Con Symlink Hasta la Cocina..
Con Symlink Hasta la Cocina..
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios web
 
Proyecto 2 SEIN
Proyecto 2 SEINProyecto 2 SEIN
Proyecto 2 SEIN
 
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
 
Acceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-phpAcceso a-base-de-datos-en-php
Acceso a-base-de-datos-en-php
 

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.
  • 14.
  • 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.