
простой скрипт для извлечения всех веб-ресурсов с помощью папки .SVN, доступной по сети.
Многие тестировщики веб-приложений сталкиваются с наличием папок .svn. Для тех, кто не знает, папка .svn используется системой контроля версий SVN для выполнения своих операций. При черном ящике (blackbox pentest) эта папка содержит огромное количество информации. Вот некоторые ключевые области, где это может помочь.
Обнаружение скрытых файлов и имен папок
Доступ к исходному коду файлов.
Скачивание файлов, даже если в htaccess установлены ограничения.
Как это можно сделать.
Есть два способа достичь этого, в зависимости от используемой версии SVN.
для <1.6 у нас были файлы .svn/entries, которые содержали список файлов/папок, а также имена пользователей, совершивших коммиты этих файлов.
для >1.6 у нас есть .svn/wc.db, который содержит аналогичные данные, но в формате sqlite3.
Эти файлы могут быть напрямую доступны через URL.
SVN хранит резервную копию всех файлов в двух разных местах.
где
имя_файла — это фактическое имя файла.
КОНТРОЛЬНАЯ_СУММА — это Sha1-сумма файла.
XX — это первые два символа КОНТРОЛЬНОЙ_СУММЫ.
У первого типа записей есть одно ограничение: предположим, файл называется testme.php, тогда путь становится следующим.
.svn/text-base/testme.php.svn-base
большое количество серверов выполнит файл и вернет вывод.
Вот где второй вариант сияет, однако эта информация доступна только в случае wc.db (версия SVN >1.6) и требует, чтобы каталог .sv/pristine был доступен через веб.
Однако, после долгих поисков я не смог найти ни одного кода, который мог бы делать обе эти вещи за один раз.
Поэтому вот инструмент, который может выполнять обе операции в одном скрипте.
минимальное
svn-extractor.py --url "url с доступным .svn"
все опции
$ 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)