
Porch Pirate est le client et framework de reconnaissance / OSINT Postman le plus complet, facilitant la découverte et l'exploitation automatisées des endpoints API et des secrets engagés dans les espaces de travail, collections, requêtes, utilisateurs et équipes. Porch Pirate peut être utilisé comme un client ou intégré dans vos propres applications.

Porch Pirate a commencé comme un outil pour découvrir rapidement les secrets de Postman, et a lentement commencé à évoluer vers un cadre de reconnaissance / OSINT polyvalent pour Postman. Bien que les outils existants soient de bonnes preuves de concept, ils ne tentent d'identifier que des mots-clés très spécifiques en tant que "secrets", et dans des endroits très limités, sans tenir compte de la reconnaissance au-delà des secrets. Nous avons réalisé que nous avions besoin de capacités "agnostiques aux secrets", avec une flexibilité suffisante pour capturer les faux positifs qui apportent encore une valeur offensive.
Porch Pirate énumère et présente les résultats sensibles (secrets globaux, en-têtes uniques, points de terminaison, paramètres de requête, autorisation, etc.) provenant d'entités Postman accessibles publiquement, telles que :
python3 -m pip install porch-pirate

Le client Porch Pirate peut être utilisé pour effectuer presque entièrement des revues sur les entités Postman publiques de manière rapide et simple. Il existe des workflows prévus et des mots-clés particuliers qui peuvent maximiser les résultats. Ces méthodologies se trouvent sur notre blog : Plundering Postman with Porch Pirate.
Porch Pirate prend en charge les arguments suivants pour être exécutés sur les collections, les espaces de travail ou les utilisateurs.
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
Par défaut, Porch Pirate affiche les variables globales de tous les environnements actifs et inactifs si elles sont définies dans l'espace de travail. Fournissez un argument -w avec l'ID de l'espace de travail (trouvé en effectuant une recherche simple, ou un vidage automatique) pour extraire les variables globales de l'espace de travail, ainsi que d'autres informations.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
Lorsqu'un résultat intéressant a été trouvé avec une recherche simple, nous pouvons fournir l'ID de l'espace de travail à l'argument -w avec la commande --dump pour commencer à extraire des informations de l'espace de travail et de ses collections.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --dump
Porch Pirate peut recevoir un terme de recherche simple, suivi de l'argument --globals. Porch Pirate videra tous les espaces de travail pertinents liés aux résultats découverts dans la recherche simple, mais uniquement s'il y a des variables globales définies. Ceci est particulièrement utile pour identifier rapidement les espaces de travail potentiellement intéressants à approfondir.
porch-pirate -s "shopify" --globals
Porch Pirate peut recevoir un terme de recherche simple, suivi de l'argument --dump. Porch Pirate videra tous les espaces de travail et collections pertinents liés aux résultats découverts dans la recherche simple. Ceci est particulièrement utile pour trier rapidement les résultats potentiellement intéressants.
porch-pirate -s "coca-cola.com" --dump
Une manière particulièrement utile d'utiliser Porch Pirate est d'extraire toutes les URL d'un espace de travail et de les exporter vers un autre outil pour du fuzzing.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --urls
Porch Pirate extraira récursivement toutes les URL des espaces de travail et de leurs collections liées à un terme de recherche simple.
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 peut construire des requêtes curl lorsqu'on lui fournit un ID de requête pour des tests plus faciles.
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'))
Les autres exemples d'utilisation de la bibliothèque se trouvent dans le répertoire examples, qui contient les exemples suivants :
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