Herramientas como Git, Mercurial, Subversion y muchas otras resultan muy útiles pero también pueden comprometer la seguridad de la organización si quedan accesibles al exterior, no se configuran correctamente o se realizan malas prácticas durante el paso a producción. En esta entrada se recopilará brevemente la información más relevante que se puede extraer al encontrar un software de control de versiones desprotegido de alguna forma.
Git
Al crear un nuevo repositorio en local, el código usado por la aplicación se crea bajo la carpeta .Git, marcada como oculta. Puede que algún administrador copie esta carpeta a algún punto accesible por la red, y esto permitiría a un atacante obtener el código fuente de la aplicación con tan solo usar el comandogit clone [url del repositorio]Dependiendo de la tecnología o el gestor de contenido que use, se podrán ubicar archivos de configuración con mayor facilidad. En el caso, por ejemplo, de un gestor de contenido Wordpress, se podría detectar fácilmente el fichero de configuración wp-config donde se encuentran las cadenas de conexión a la base de datos.
Mercurial

El directorio branch representa la rama en la que se está trabajando y por tanto en esta carpeta se ubican los archivos de configuración como branch.conf que muestran configuraciones para esa rama. Por otro lado en la carpeta repository se ubican los archivos del repositorio, aunque para acceder a ellos se debe consultar primero el archivo pack-names y recuperar el nombre del archivo pack, que se encontrará a su vez en la carpeta packs. Aunque estos archivos son el "commit" completo, se deberá realizar una búsqueda a través de los índices ubicados en la carpeta "índices" para obtener el código fuente en texto plano.
De nuevo, utlilizando cualquier cliente de Bazaar como Bazaar explorer se puede descargar el repositorio completo.
Subversion
Finalmente y al igual que los demás programas de controles de código comentados previamente, la carpeta generada por Subversion es .svn, en la que se almacenará toda la información relativa al control de código. Dependiendo de la versión que se use puede encontrarse el archivo entries, donde en texto plano se especificaran los archivos implicados, su tipo, permisos, la fecha de creación y el usuario.Por otro lado en versiones más recientes se implementa una base de datos SQLite para almacenar los datos: wc.db, ubicada en la carpeta .svn. La diferencia es que el archivo wc.db se usa de índice para acceder al código fuente almacenado en un directorio llamado pristine donde se guarda una copia del código fuente totalmente en plano. Está organizado por carpetas con el primer octeto del inicio del hash y dentro de la carpeta el propio fichero con el nombre del hash.
Fuente: ElevenPath

No hay comentarios.:
Publicar un comentario
Gracias por dejar un comentario en Segu-Info.
Gracias por comentar!