
نص بسيط لاستخراج جميع موارد الويب عن طريق مجلد .SVN المكشوف عبر الشبكة.
في كثير من الأحيان، يواجه مختبرو اختبار الاختراق لتطبيقات الويب وجود مجلدات .svn. لمن لا يعرف، مجلد .svn يستخدمه نظام التحكم في الإصدارات SVN لأداء عملياته. في اختبار الاختراق الصندوق الأسود، يحتوي هذا المجلد على كمية هائلة من المعلومات. بعض المجالات الرئيسية التي يمكن أن يساعد فيها هذا تشمل:
الكشف عن أسماء الملفات والمجلدات المخفية
الوصول إلى الكود المصدري للملفات.
تنزيل الملفات حتى في حالة وجود قيود في htaccess.
كيف يمكن تحقيق ذلك.
هناك طريقتان لتحقيق ذلك بناءً على إصدار SVN المستخدم.
لـ <1.6 كان لدينا ملف .svn/entries الذي يحتوي على قائمة بالملفات/المجلدات بالإضافة إلى أسماء المستخدمين المستخدمة لإيداع تلك الملفات.
لـ >1.6 لدينا .svn/wc.db الذي يحتوي على بيانات مماثلة ولكن بتنسيق sqlite3.
يمكن الوصول إلى هذه الملفات مباشرة عبر الرابط.
يحتفظ SVN بنسخة احتياطية من جميع الملفات في موقعين منفصلين.
حيث
اسم الملف هو الاسم الفعلي للملف.
CHECKSUM هو مجموع Sha1 للملف.
XX هو أول حرفين من CHECKSUM.
النوع الأول من الإدخالات له قيد واحد؛ افترض أن اسم الملف هو testme.php فيصبح المسار:
.svn/text-base/testme.php.svn-base
عدد كبير من الخوادم ستنفذ الملف وتقدم المخرجات.
هنا يتألق الخيار الثاني، لكن هذه المعلومات متاحة فقط في حالة wc.db (إصدار SVN >1.6) وهذا يتطلب أن يكون دليل .svn/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)