
Porch Pirate هو أكثر عميل/إطار عمل شامل لـ Postman في مجال الاستطلاع (recon) والاستخبارات مفتوحة المصدر (OSINT)، والذي يُسهّل الاكتشاف الآلي واستغلال نقاط نهاية API والأسرار المودعة في مساحات العمل (workspaces) والمجموعات (collections) والطلبات (requests) والمستخدمين والفرق. يمكن استخدام Porch Pirate كعميل أو دمجه في تطبيقاتك الخاصة.

بدأ قرصان الشرفة كأداة للكشف السريع عن أسرار Postman، وتطور تدريجياً ليصبح إطار عمل متعدد الأغراض للاستطلاع / OSINT في Postman. بينما تُعتبر الأدوات الحالية براهين مفهوم ممتازة، إلا أنها تحاول فقط تحديد كلمات مفتاحية محددة جداً على أنها "أسرار"، وفي مواقع محدودة جداً، دون أي اعتبار للاستطلاع خارج نطاق الأسرار. أدركنا أننا بحاجة إلى قدرات "غير محددة بالألفاظ المرتبطة بالأسرار"، وذات مرونة كافية لالتقاط الإيجابيات الكاذبة التي لا تزال توفر قيمة هجومية.
يقوم قرصان الشرفة بتعداد وعرض النتائج الحساسة (الأسرار العامة، الرؤوس الفريدة، نقاط النهاية، معاملات الاستعلام، التفويض، إلخ) من كيانات Postman المتاحة للعموم، مثل:
python3 -m pip install porch-pirate

يمكن استخدام عميل قرصان الشرفة لإجراء مراجعات شبه كاملة للكيانات العامة في Postman بطريقة سريعة وبسيطة. هناك سير عمل مقصودة وكلمات مفتاحية معينة يمكن استخدامها لتعظيم النتائج عادةً. يمكن الاطلاع على هذه المنهجيات على مدونتنا: نهب Postman باستخدام قرصان الشرفة.
يدعم قرصان الشرفة الوسائط التالية التي يمكن تنفيذها على المجموعات، مساحات العمل، أو المستخدمين.
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
بشكل افتراضي، سيعرض قرصان الشرفة المتغيرات العامة من جميع البيئات النشطة وغير النشطة إذا كانت محددة في مساحة العمل. قدّم وسيطة -w مع معرف مساحة العمل (الذي يتم العثور عليه عن طريق إجراء بحث بسيط، أو تفريغ البحث التلقائي) لاستخراج المتغيرات العامة لمساحة العمل، بالإضافة إلى معلومات أخرى.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
عند العثور على نتيجة مثيرة للاهتمام من خلال بحث بسيط، يمكننا توفير معرف مساحة العمل للوسيطة -w مع الأمر --dump لبدء استخراج المعلومات من مساحة العمل ومجموعاتها.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --dump
يمكن تزويد قرصان الشرفة بمصطلح بحث بسيط، متبوعاً بالوسيطة --globals. سيقوم قرصان الشرفة بتفريغ جميع مساحات العمل ذات الصلة المرتبطة بالنتائج المكتشفة في البحث البسيط، ولكن فقط إذا كانت هناك متغيرات عامة محددة. هذا مفيد بشكل خاص لتحديد مساحات العمل التي يحتمل أن تكون مثيرة للاهتمام بسرعة لمزيد من التعمق.
porch-pirate -s "shopify" --globals
يمكن تزويد قرصان الشرفة بمصطلح بحث بسيط، متبوعاً بالوسيطة --dump. سيقوم قرصان الشرفة بتفريغ جميع مساحات العمل والمجموعات ذات الصلة المرتبطة بالنتائج المكتشفة في البحث البسيط. هذا مفيد بشكل خاص لفحص النتائج التي يحتمل أن تكون مثيرة للاهتمام بسرعة.
porch-pirate -s "coca-cola.com" --dump
طريقة مفيدة بشكل خاص لاستخدام قرصان الشرفة هي استخراج جميع عناوين URL من مساحة العمل وتصديرها إلى أداة أخرى للاختبار بالتشويش (fuzzing).
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --urls
سيقوم قرصان الشرفة بشكل متكرر باستخراج جميع عناوين URL من مساحات العمل ومجموعاتها المتعلقة بمصطلح بحث بسيط.
porch-pirate -s "coca-cola.com" --urls
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --collections
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --requests
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --raw
porch-pirate -w WORKSPACE_ID
porch-pirate -c COLLECTION_ID
porch-pirate -r REQUEST_ID
porch-pirate -u USERNAME/TEAMNAME
يمكن لقرصان الشرفة بناء طلبات curl عند تزويده بمعرف الطلب لاختبار أسهل.
porch-pirate -r 11055256-b1529390-18d2-4dce-812f-ee4d33bffd38 --curl
porch-pirate -s coca-cola.com --proxy 127.0.0.1:8080
p = porchpirate()
print(p.search('coca-cola.com'))
p = porchpirate()
print(p.collections('4127fdda-08be-4f34-af0e-a8bdc06efaba'))
p = porchpirate()
collections = json.loads(p.collections('4127fdda-08be-4f34-af0e-a8bdc06efaba'))
for collection in collections['data']:
requests = collection['requests']
for r in requests:
request_data = p.request(r['id'])
print(request_data)
p = porchpirate()
print(p.workspace_globals('4127fdda-08be-4f34-af0e-a8bdc06efaba'))
يمكن العثور على أمثلة أخرى لاستخدام المكتبة في دليل examples، والذي يحتوي على الأمثلة التالية:
dump_workspace.pyformat_search_results.pyformat_workspace_collections.pyformat_workspace_globals.pyget_collection.pyget_collections.pyget_profile.pyget_request.pyget_statistics.pyget_team.pyget_user.pyget_workspace.pyrecursive_globals_from_search.pyrequest_to_curl.pysearch.pysearch_by_page.pyworkspace_collections.py