Subversion: wc.db & pristine
Los riesgos de los repositorios de código de Subversion en los sitios web públicos ya los hemos comentado muchas veces. El ejemplo de Apple que se dejó un .svn/Entries y que mediante el SVN/Extractor de FOCA nos permitió llegar a una shell es uno de los casos más claros, pero esto puede ser mucho peor, ya que también tenemos la base de datos wc.db y el directorio pristine.
wc.db
Esta es la base de datos de subversion y en ella se puede encontrar información de todos los ficheros que se han subido, incluso cuando el fichero .svn/entries esté vacío, algo que puede ser habitual. Encontrar estas bases de datos es tan sencillo, como encontrar el fichero .svn/entries con FOCA o hacer un poco de hacking con buscadores para hacer unas pruebas. En este caso un sencillo dork en Bing.
Figura 1: Buscando bases de datos de subversion en Bing |
Una vez te descargas las base de datos se puede ver que es un SQLite, así que lo primero que puedes probar es a abrirla con un SQLite Browser o similar. En mi caso, el resultado es que la base de datos aparece vacía, aún cuando tiene más de 400 Kb de tamaño.
Figura 2: Base de datos vacía al analizarla con SQLite Browser |
Por supuesto, ya que tenemos Recover Messages que hace análisis forense de todos los archivos SQLite, la subí y la analicé, apliqué una licencia y me descargué el fichero txt con el Raw Data Recovered y lo abrí con un editor de texto.
Figura 3: Analizando la base de datos de Subversion con Recover Messages |
Como se puede ver en el editor de texto, aparecen los nombres de los archivos que se encuentran en el servidor, así que nada, como si tuviéramos el .svn/entries completo.
Y basta con pedir el fichero a la URL a la ubicación concreta para acceder a él, tal y como se puede ver en la imagen.
Pristine
Si lo de arriba te ha parecido chulo, espera a lo siguiente. Resulta que subversion guarda una copia de los archivos originales que se suben al servidor en una carpeta llamada pristine. La gracia es que allí el nombre de los archivos se ofusca en sha1, con una extensión .svn-base, lo que hace que no se le apliquen los tipos MIME asociados.
Es decir, que un archivo .php está almacenado como un archivo .svn-base en la carpeta pristine y por lo tanto puede ser descargado. Para hacer eso, existe el programa svnpristine, al que solo hay que pasarle la ruta del servidor donde se encuentra la raiz de subversion, y se volcará toda la carpeta pristine a local.
Con lo que si con el fichero .svn/entries se pueden hacer muchas cosas, con wc.db y pristine, las auditorías de seguridad pueden quedar vistas para sentencia con solo encontrar el subversion.
Saludos Malignos!
2 comentarios:
Read more about svn/entries and wc.db extraction and automated way of doing the same.
blog post : blog.anantshri.info/svn-extractor-for-web-pentesters/
automated approach here :
https://github.com/anantshri/svn-extractor
Buen Artículo Maligno, :)
Publicar un comentario