
semplice script per estrarre tutte le risorse web tramite la cartella .SVN esposta sulla rete.
Molte volte i penetration tester di applicazioni web si imbattono nella presenza di cartelle .svn. Per chi non lo sapesse, la cartella .svn viene usata dal sistema di version control SVN per eseguire le sue operazioni. Per un pentest blackbox questa cartella contiene una grande quantità di informazioni. Alcune delle aree chiave in cui può essere utile includono:
Scoprire file nascosti e nomi di cartelle
Accedere al codice sorgente dei file.
Scaricare file anche se le restrizioni sono attive a livello di htaccess.
Come si può ottenere questo.
Ci sono due modi in cui questo può essere ottenuto in base alla versione di SVN in uso.
per <1.6 avevamo i file .svn/entries che contenevano l'elenco di file / cartelle oltre agli username usati per il commit di quei file.
per >1.6 abbiamo .svn/wc.db che contiene dati simili ma in formato sqlite3.
Questi file potrebbero essere accessibili direttamente tramite URL.
SVN mantiene una copia di backup di tutti i file in due posizioni separate.
dove
filename è il nome effettivo del file.
CHECKSUM è la somma Sha1 del file
XX sono i primi due caratteri di CHECKSUM.
il primo tipo di voci ha una limitazione: supponiamo che il nome del file sia testme.php, quindi il percorso diventa.
.svn/text-base/testme.php.svn-base
un gran numero di server eseguirà il file e servirà l'output.
è qui che l'opzione 2 brilla, tuttavia questa informazione è disponibile solo in caso di wc.db (versione SVN >1.6) e richiede che la directory .sv/pristine sia accessibile via web.
Tuttavia, dopo aver cercato molto, non sono riuscito a trovare un singolo codice che possa fare entrambe le cose in un colpo solo.
quindi ecco uno strumento che può eseguire entrambe le operazioni in un unico script.
minimal
svn-extractor.py --url "url con .svn disponibile"
alloptions
$ 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
Sarebbe ingiusto dire che ho fatto tutta la ricerca da solo, quindi ecco i link alle varie risorse che ho usato per ricavare le informazioni.
http://pen-testing.sans.org/blog/pen-testing/2012/12/06/all-your-svn-are-belong-to-us (tecnica manuale per wc.db)
http://www.adamgotterer.com/post/28125474053/hacking-the-svn-directory-archive (tecnica manuale per .svn/entries)
http://www.cirt.net/svnpristine (unico strumento automatizzato che sono riuscito a trovare online che fa la magia di wc.db)