comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Explotando un LFI en Java Server Pages

  • 2 Respuestas
  • 1790 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elefren

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • elefrEn Blog
« en: Abril 07, 2016, 07:11:29 pm »
Que tal gente, aqui os dejo otro artículo que escribí en mi blog hace unas semanas, espero que os resulte interesante ;)


Introducción

En esta entrada vamos a ver como explotar un bug LFI (Local File Inclusion) en una web bajo JSP. Un LFI es una vulnerabilidad mediante la cual un atacante puede acceder a ficheros no destinados al usuario mediante un parámetro no controlado en un sistema modular.


LFI y estructura de archivos en un proyecto JSP

Como sabemos para explotar un LFI debemos conocer la estructura del ficheros del sistema al que estamos atacando, es decir si la web es por ejemplo de tipo index.jsp?pagina=inicio.jsp y conocemos que hay un directorio llamado panel, en el cual hay un jsp para agregar un usuario llamado gestionUsuarios.jps, introduciríamos la url index.jsp?pagina=panel/gestionUsuarios.jsp, y si desconocemos la estructura de los archivos y directorios de la web, habría que meterle en base a fuerza bruta. En JSP tenemos una ventaja, y es que los proyectos web en java están formados por la siguiente extructura:



Como vemos en la imagen, existe una una carpeta llamada WEB-INF en una ruta superior a la base de la aplicación, en la cual esta el archivo web.xml que es donde metemos diversos parámetros de configuración, y tirando de ahí ya se puede comenzar a extraer datos. En ese directorio también se guardan diferentes archivos de configuración como properties y demás, y utilizando fuerza bruta o conociendo algún dato del sistema podremos extraerlos.


Explotando el bug

Pues bien, ahora voy a llevar a cabo un ejemplo real de este ataque en una web que he encontrado la cual vamos a anonimizar, que tras ver su tipo de url vemos que tiene un parametro llamado module el cual parece vulnerable a LFI.



Pues viendo que está en Java y conociendo el detalle del famoso archivo web.xml, intentaremos escalar directorios y incluir este archivo a ver que sale, y tras un par de pruebas vemos que está tres directorios por encima de la base del sistema de modulación, y nos imprime información delicada en pantalla:



Como vemos, nos está soltando en pantalla todo el contenido del archivo, y si abrimos el código fuente de la web para verlo mas limpio podremos destacar lo siguiente:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta

  ...
  <context-param>
    <param-name>Jdbc_url</param-name>
    <param-value>jdbc:mysql://127.0.0.1/BASE_DE_DATOS?user=USUARIO&amp;password=PASSWORD</param-value>
  </context-param>
  ...
  <context-param>
      <param-name>log_path</param-name>
      <param-value>c:/pdo/</param-value>
  </context-param>
  ...
  <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
  </taglib>
  ...
 


Tras examinar la información que nos devuelve el archivo, podemos destacar:

-Vemos los datos de configuración de la base de datos MySQL a la que se conecta el sistema, que esta en la propia máquina (127.0.0.1). Con esto si el servidor no tiene bloqueadas las conexiones externas (que son muchos...) ya tendríamos acceso completo a la base de datos.

-También vemos la ruta de los archivos LOG del apache, y una cosa curiosa, que el servidor esta en windows... Que podamos conocer la ruta de los logs es muy peligroso, puesto que podríamos hacer peticiones vía HTTP con código java inyectado en el GET, y luego los incluimos por el LFI y dicho código que hemos mandado por GET anteriormente se ejecutaría, lo que nos permitiría ejecutar comandos en el propio servidor y subir una shell para aumentar nuestro control sobre este.

-Por ultimo cabe destacar que nos muestra las rutas de varios archivos de configuración que están en el mismo directorio, que tras acceder a ellos vemos que definen diversos parámetros de configuración, librerías y demás datos que el atacante puede aprovechar


Conclusión:

Para concluir este post, sobra mencionar que tenemos que tener cuidado cuando hagamos un sistema modular mediante includes, y para evitar este tipo de vulnerabilidades tenemos dos opciones, o almacenamos los módulos o archivos disponibles a incluir en un array, o si no también podemos controlar que en la variable no se puedan insertar puntos ni barras, para que así no se pueda descender ni escalar del directorio de los módulos a incluir.
« Última modificación: Abril 07, 2016, 07:16:08 pm por elefren »
From Canary Islands

Mi blog: No tienes permisos para ver links. Registrate o Entra con tu cuenta

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #1 en: Abril 07, 2016, 11:32:17 pm »
Podes postear el codigo vulnerable?

Desconectado elefren

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • elefrEn Blog
« Respuesta #2 en: Abril 08, 2016, 05:11:09 am »
No he podido probarlo, pero sería algo así:
index.jsp?sec=noticias
Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
<%
 if(request.getParameter("sec")!=null)
 {
   String pagina = request.getParameter("sec");
}else{
   String pagina = "inicio.jsp";
}
%>   

<%@include file="modulos/" + pagina %>

<%
 }
%>
From Canary Islands

Mi blog: No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



Instalar servidor proxy caché Squid en Ubuntu server

Iniciado por CodePunisher

Respuestas: 0
Vistas: 2960
Último mensaje Julio 25, 2013, 05:30:02 pm
por CodePunisher
Flask + Jinaj2 Server-Side Template Injection

Iniciado por Dedalo

Respuestas: 2
Vistas: 817
Último mensaje Julio 11, 2018, 01:29:28 am
por Dedalo
Proteger nuestro server web de ataques con .htaccess

Iniciado por july

Respuestas: 10
Vistas: 5158
Último mensaje Julio 21, 2013, 09:46:43 pm
por CodePunisher
Crea tu propio Cloud Server

Iniciado por ANTRAX

Respuestas: 4
Vistas: 5250
Último mensaje Octubre 12, 2015, 12:45:43 am
por Yavi
Cherokee web server

Iniciado por alexander1712

Respuestas: 3
Vistas: 2081
Último mensaje Noviembre 26, 2012, 06:32:26 pm
por Adastra