
Webアプリケーションのペネトレーションテスターは、.svnフォルダーの存在にしばしば遭遇します。ご存じない方のために説明すると、.svnフォルダーはSVNバージョン管理システムがその操作を実行するために使用するフォルダーです。ブラックボックスペンテストでは、このフォルダーには膨大な量の情報が含まれています。 これが役立つ主な分野には、次のようなものがあります。
隠しファイルやフォルダー名を明らかにする
ファイルのソースコードにアクセスする
htaccess で制限が設定されている場合でもファイルをダウンロードする
これはどのように達成できるのか。
使用中のSVNのバージョンに応じて、これを達成する方法は2つあります。
1.6未満では、.svn/entries ファイルに、ファイル/フォルダーの一覧と、それらのファイルをコミットするために使用されたユーザー名が含まれていました。
1.6超では、.svn/wc.db に同様のデータが sqlite3 形式で含まれています。
これらのファイルは、URL を通じて直接アクセスできる可能性があります。
SVN はすべてのファイルのバックアップコピーを2つの別々の場所に保持します。
ここで
filename はファイルの実際の名前です。
CHECKSUM はファイルの SHA1 サムです。
XX は CHECKSUM の最初の2文字です。
最初のタイプのエントリには1つの制限があります。ファイル名が testme.php の場合、パスは次のようになります。
.svn/text-base/testme.php.svn-base
多くのサーバーはファイルを実行して、その出力を配信します。
ここでオプション2が活躍します。ただし、この情報は wc.db(>1.6 SVN バージョン)の場合にのみ利用可能であり、.sv/pristine ディレクトリが Web からアクセス可能である必要があります。
しかし、いろいろ検索した後も、これら両方を一気に実行できる単一のコードは見つけられませんでした。
そこで、両方の操作を1つのスクリプトで実行できるツールをここに用意しました。
最小限
svn-extractor.py --url "url with .svn available"
すべてのオプション
$ 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
すべての調査を自分だけで行ったと言うのは公平ではありません。そこで、情報を得るために使用したさまざまなリソースへのリンクをここに示します。
http://pen-testing.sans.org/blog/pen-testing/2012/12/06/all-your-svn-are-belong-to-us (wc.db に関する手動テクニック)
http://www.adamgotterer.com/post/28125474053/hacking-the-svn-directory-archive (.svn/entries に関する手動テクニック)
http://www.cirt.net/svnpristine (オンラインで見つけた wc.db を処理する唯一の自動化ツール)