
script simple para extraer todos los recursos web mediante la carpeta .SVN expuesta en la red.
Muchas veces, los pentesters de aplicaciones web se encuentran con la presencia de carpetas .svn. Para aquellos que no lo saben, la carpeta .svn es utilizada por el sistema de control de versiones SVN para realizar sus operaciones. Para una prueba de penetración de caja negra, esta carpeta contiene una gran cantidad de información. Algunas de las áreas clave donde esto puede ayudar incluyen.
Descubrir archivos ocultos y nombres de carpetas
Acceder al código fuente de los archivos.
Descargar archivos incluso si las restricciones están vigentes en htaccess.
Cómo se puede lograr esto.
Hay dos formas en que esto se puede lograr según la versión de SVN en uso.
para <1.6 teníamos archivos .svn/entries que contenían listas de archivos / carpetas así como nombres de usuario utilizados para confirmar esos archivos.
para >1.6 tenemos .svn/wc.db que contiene datos similares pero en formato sqlite3.
Estos archivos podrían ser directamente accesibles a través de la URL.
SVN mantiene una copia de seguridad de todos los archivos en dos ubicaciones separadas.
donde
nombredearchivo es el nombre real del archivo.
CHECKSUM es la suma Sha1 del archivo
XX son los dos primeros caracteres de CHECKSUM.
el primer tipo de entradas tiene una limitación, supongamos que el archivo se llama testme.php, entonces la ruta se convierte en.
.svn/text-base/testme.php.svn-base
un gran número de servidores ejecutarán el archivo y servirán la salida.
ahí es donde brilla la opción 2, sin embargo, esta información solo está disponible en el caso de wc.db (versión de SVN >1.6) y esto requiere que el directorio .sv/pristine sea accesible web.
Sin embargo, después de buscar mucho, no pude encontrar un solo código que pueda hacer ambas cosas de una sola vez.
así que aquí hay una herramienta que puede realizar ambas operaciones en un solo script.
mínimo
svn-extractor.py --url "url con .svn disponible"
todas las opciones
$ python svnextractor.py --help
usage: svn_extractor.py [-h] --url TARGET [--debug] [--noextract] [--userlist]
[--wcdb] [--entries] [--proxy PROXY] [--match MATCH]
This program is used to extract the hidden SVN files from a webhost
considering either .svn entries file (<1.6) or wc.db (> 1.7) are available
online. This program actually automates the directory navigation and text
extraction process
optional arguments:
-h, --help show this help message and exit
--url TARGET Provide URL
--debug Provide debug information
--noextract Don't extract files just show content
--userlist show the usernames used for commit
--wcdb check only wcdb
--entries check only .svn/entries file
--proxy PROXY Provide HTTP Proxy in http(s)://host:port format
--match MATCH only download files that match regex
Credit (C) Anant Shrivastava http://anantshri.info Greets to Amol Naik, Akash
Mahajan, Prasanna K, Lava Kumar for valuable inputs
Sería injusto decir que hice toda la investigación yo mismo, así que aquí están los enlaces a varios recursos que utilicé para obtener la información.
http://pen-testing.sans.org/blog/pen-testing/2012/12/06/all-your-svn-are-belong-to-us (técnica manual para wc.db)
http://www.adamgotterer.com/post/28125474053/hacking-the-svn-directory-archive (técnica manual para .svn/entries)
http://www.cirt.net/svnpristine (única herramienta automatizada que pude encontrar en línea que hace magia con wc.db)