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.
 |
Figura 4: El volcado forense del fichero SQLite hecho con Recover Messages |
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.
 |
Figura 5: El fichero está en su sitio |
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.
 |
Figura 6: Estructura del nombre de los ficheros en el directorio pristine |
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.
 |
Figura 7: Volcado de pristine con svnpristine |
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!