
Porch Pirate — это самый полный клиент и фреймворк для разведки (recon) / OSINT по Postman, который автоматизирует обнаружение и эксплуатацию конечных точек API и секретов, зафиксированных в рабочих пространствах, коллекциях, запросах, пользователях и командах. Porch Pirate можно использовать как клиент или встраивать в собственные приложения.

Porch Pirate изначально был инструментом для быстрого обнаружения секретов Postman, но постепенно превратился в многоцелевую платформу для разведки / OSINT по Postman. Хотя существующие инструменты являются отличными доказательствами концепции, они пытаются идентифицировать только очень конкретные ключевые слова как «секреты» и в очень ограниченных местах, без учета разведки за пределами секретов. Мы поняли, что нам нужны возможности, «независимые от секретов» (secret-agnostic), и достаточно гибкие, чтобы захватывать ложные срабатывания, которые все же представляют ценность для атакующего.
Porch Pirate перечисляет и представляет конфиденциальные результаты (глобальные секреты, уникальные заголовки, конечные точки, параметры запросов, авторизацию и т.д.) из общедоступных сущностей Postman, таких как:
python3 -m pip install porch-pirate

Клиент Porch Pirate может использоваться для почти полного проведения обзоров общедоступных сущностей Postman быстрым и простым способом. Существуют предполагаемые рабочие процессы и определенные ключевые слова, которые обычно позволяют максимизировать результаты. Эти методологии можно найти в нашем блоге: Plundering Postman with Porch Pirate.
Porch Pirate поддерживает следующие аргументы, которые могут быть применены к коллекциям, рабочим пространствам или пользователям.
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
По умолчанию Porch Pirate отображает глобальные переменные из всех активных и неактивных сред, если они определены в рабочем пространстве. Укажите аргумент -w с идентификатором рабочего пространства (найденным при простом поиске или автоматическом дампе поиска), чтобы извлечь глобальные переменные рабочего пространства, а также другую информацию.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
Когда при простом поиске найден интересный результат, мы можем передать идентификатор рабочего пространства в аргумент -w с командой --dump, чтобы начать извлечение информации из рабочего пространства и его коллекций.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --dump
Porch Pirate можно указать простой поисковый запрос после аргумента --globals. Porch Pirate выполнит дамп всех соответствующих рабочих пространств, связанных с результатами, обнаруженными при простом поиске, но только если в них определены глобальные переменные. Это особенно полезно для быстрого выявления потенциально интересных рабочих пространств для дальнейшего изучения.
porch-pirate -s "shopify" --globals
Porch Pirate можно указать простой поисковый запрос после аргумента --dump. Porch Pirate выполнит дамп всех соответствующих рабочих пространств и коллекций, связанных с результатами, обнаруженными при простом поиске. Это особенно полезно для быстрой сортировки потенциально интересных результатов.
porch-pirate -s "coca-cola.com" --dump
Особенно полезный способ использования Porch Pirate — извлечение всех URL из рабочего пространства и экспорт их в другой инструмент для фаззинга.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --urls
Porch Pirate рекурсивно извлекает все 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
Porch Pirate может формировать 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