elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Explotando un LFI en Java Server Pages
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Explotando un LFI en Java Server Pages  (Leído 3,608 veces)
alienmaster

Desconectado Desconectado

Mensajes: 41


SK8ORDIE


Ver Perfil WWW
Explotando un LFI en Java Server Pages
« en: 8 Abril 2016, 10:46 am »

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:
 
  ...
  <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.

Fuente:
http://www.elefren.es/hacking-local-file-inclusion-java-server-pages/
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
un lugar de web pages
Diseño Gráfico
kaliyas 2 2,300 Último mensaje 11 Marzo 2006, 16:00 pm
por kaliyas
Web en Java, cambiando se server...
Java
alki 9 4,298 Último mensaje 1 Noviembre 2009, 16:54 pm
por alki
Pages for Windows
Software
gatomadrid 3 6,277 Último mensaje 25 Octubre 2010, 13:26 pm
por gatomadrid
Pages en el iPhone 4
Dispositivos Móviles (PDA's, Smartphones, Tablets)
pablo moran 0 2,084 Último mensaje 6 Octubre 2010, 11:31 am
por pablo moran
Java RMI Server
Java
Link_OOT 3 2,888 Último mensaje 26 Febrero 2013, 00:06 am
por 1mpuls0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines