domingo, 6 de marzo de 2011

No solo nosotros... [Parte I]

Hola de nuevo... hace ya mucho que no escribo nada. Andaba algo ocupado con los cursos, el trabajo, el limahack y otras cosas... xD Pero ahora que ya se terminaron los exámenes finales tengo algo más de tiempo para escribir :)

Esta vez quiero contarles sobre algunas vulnerabilidades que he encontrado en otras universidades y mostrar, de esta manera, que nuestra universidad podrá tener sus huecos... pero no es la única.

¡Al ataque...!

La primera se trata de la página web de una comunidad de software libre muy conocida (y no es San Marcux xD) Pues esta página está hecha con Joomla y tiene instalado un componente llamado "com_myfiles" para dar soporte a descargas de archivos.

Buscando en exploit-db encontré que dicho componente es vulnerable a LFI. Así que podemos hacer algunas cosillas ;)

Un LFI es una vulnerabilidad que nos permite incluir un script PHP en la ejecución de otro script PHP en marcha. Esto mediante las funciones require, require_once, include e include_once cuando reciben por parámetro una variable manipulable por el usuario. Así podemos llegar a ejecutar código arbitrario en el servidor o en su defecto ver el contenido de algunos archivos del servidor.

Aquí vemos como se hace una inclusión de una variable enviada por GET. He censurado las partes donde sale el nombre, logo o siglas de la universidad haciendo caso a los consejos de unos buenos amigos ;)

Fig. 1 - Error en la función require_once().

La función que usa es require_once y nos bota un error por que al parecer el archivo "algo.php" no existe. Bien, pues pidamos un archivo que sí exista.

Fig. 2 - Lista de usuarios del sistema.

Con los "../" sucesivos subimos en el arbol de directorios hasta la raiz luego pedimos el archivo /etc/passwd que contiene información sobre los usuarios del sistema y finalmente anulamos la extensión ".php" que se concatena al final con el caracter de fin de cadena "%00".

El resultado es que obtenemos una lista con todos los usuarios del sistema ;)

Para conseguir ejecutar código en el servidor explotando esta vulnerabilidad primero debemos conseguir inyectar el código que queremos ejecutar dentro de un archivo del servidor ¿Cómo se puede conseguir eso? Algunas formas son:

  • Usar los logs de apache o cualquier otro servicio público que guarde logs.
  • Usar los archivos temporales donde PHP guarda el valor de las cookies.
  • Si la pagina nos permitiera subir imágenes o documentos... Podríamos intentar meter el código PHP dentro de esos archivos.
  • Si la página además es vulnerable a SQLi podemos intentar crear un archivo con el código usando INTO OUTFILE.
  • Si no encontramos vulns SQLi en esa web podemos buscarlas en otras que compartan el mismo hospedaje.

Bien el vector de ataque ya está... luego la explotación es cuestión de tiempo. Como prueba de concepto, para mí, esto es suficiente :)

Un saludo y hasta la próxima...

2 comentarios:

  1. Excelente , sigue así, siempre te leo:d

    ResponderEliminar
  2. :) Gracias...

    Un saludo lector anónimo ;)

    ResponderEliminar