
네트워크에 노출된 .SVN 폴더를 통해 모든 웹 리소스를 추출하는 간단한 스크립트
웹 애플리케이션 침투 테스터는 .svn 폴더가 존재하는 상황을 자주 마주칩니다. 모르는 분들을 위해 설명하면, .svn 폴더는 SVN 버전 관리 시스템이 작업을 수행하는 데 사용하는 폴더입니다. 블랙박스 침투 테스트에서 이 폴더는 엄청난 양의 정보를 담고 있습니다. 이 정보가 도움이 되는 주요 분야는 다음과 같습니다.
숨겨진 파일 및 폴더 이름 찾기
파일의 소스 코드에 접근하기
htaccess에 접근 제한이 있어도 파일 다운로드하기
이것을 달성하는 방법.
사용 중인 SVN 버전에 따라 두 가지 방법으로 이를 수행할 수 있습니다.
1.6 미만(<1.6)의 경우 .svn/entries 파일을 사용했으며, 이 파일에는 파일/폴더 목록과 해당 파일을 커밋할 때 사용된 사용자 이름이 포함되어 있습니다.
1.6 초과(>1.6)의 경우 .svn/wc.db에 유사한 데이터가 sqlite3 형식으로 포함되어 있습니다.
이 파일들은 URL을 통해 직접 접근할 수 있습니다.
SVN은 모든 파일의 백업 복사본을 두 개의 별도 위치에 보관합니다.
여기서
filename은 파일의 실제 이름입니다.
CHECKSUM은 파일의 Sha1 합계입니다.
XX는 CHECKSUM의 처음 두 글자입니다.
첫 번째 유형의 항목에는 한 가지 제한 사항이 있습니다. 예를 들어 파일 이름이 testme.php라면 경로는 다음과 같이 됩니다.
.svn/text-base/testme.php.svn-base
많은 서버가 이 파일을 실행하여 출력 결과를 그대로 응답합니다.
바로 이 지점에서 옵션 2가 빛을 발합니다. 다만 이 정보는 wc.db(>1.6 SVN 버전)에서만 확인할 수 있고, .sv/pristine 디렉터리가 웹에서 접근 가능해야 한다는 조건이 있습니다.
하지만 많은 검색 끝에도 이 두 가지를 한 번에 처리하는 단일 코드를 찾을 수 없었습니다.
그래서 두 작업을 하나의 스크립트에서 모두 수행할 수 있는 도구를 준비했습니다.
최소 사용법
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 자동화 도구)