
Porch Pirate è il client e framework più completo per il riconoscimento (recon) e OSINT di Postman, che facilita la scoperta automatizzata e lo sfruttamento di endpoint API e segreti presenti in workspace, collections, requests, utenti e team. Porch Pirate può essere utilizzato come client o essere integrato nelle proprie applicazioni.

Porch Pirate è nato come strumento per scoprire rapidamente i segreti di Postman e si è lentamente evoluto in un framework multiuso di ricognizione / OSINT per Postman. Mentre gli strumenti esistenti sono ottimi proof of concept, tentano solo di identificare parole chiave molto specifiche come "segreti", e in luoghi molto limitati, senza considerare la ricognizione oltre i segreti. Abbiamo capito di aver bisogno di capacità "secret-agnostic", con sufficiente flessibilità per catturare falsi positivi che offrissero comunque valore offensivo.
Porch Pirate enumera e presenta risultati sensibili (segreti globali, header unici, endpoint, parametri di query, autorizzazioni, ecc.) da entità Postman pubblicamente accessibili, come:
python3 -m pip install porch-pirate

Il client Porch Pirate può essere utilizzato per condurre quasi completamente revisioni su entità Postman pubbliche in modo rapido e semplice. Esistono flussi di lavoro previsti e parole chiave particolari da utilizzare che possono tipicamente massimizzare i risultati. Queste metodologie si trovano sul nostro blog: Plundering Postman with Porch Pirate.
Porch Pirate supporta i seguenti argomenti da eseguire su raccolte, spazi di lavoro o utenti.
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
Per impostazione predefinita, Porch Pirate mostrerà i globali di tutti gli ambienti attivi e inattivi se sono definiti nello spazio di lavoro. Fornisci un argomento -w con l'ID dello spazio di lavoro (trovato eseguendo una ricerca semplice, o un dump automatico della ricerca) per estrarre i globali dello spazio di lavoro, insieme ad altre informazioni.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
Quando un risultato interessante è stato trovato con una ricerca semplice, possiamo fornire l'ID dello spazio di lavoro all'argomento -w con il comando --dump per iniziare a estrarre informazioni dallo spazio di lavoro e dalle sue raccolte.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --dump
A Porch Pirate può essere fornito un termine di ricerca semplice, seguito dall'argomento --globals. Porch Pirate scaricherà tutti gli spazi di lavoro rilevanti legati ai risultati scoperti nella ricerca semplice, ma solo se sono definiti dei globali. Questo è particolarmente utile per identificare rapidamente spazi di lavoro potenzialmente interessanti da approfondire.
porch-pirate -s "shopify" --globals
A Porch Pirate può essere fornito un termine di ricerca semplice, seguito dall'argomento --dump. Porch Pirate scaricherà tutti gli spazi di lavoro e le raccolte rilevanti legati ai risultati scoperti nella ricerca semplice. Questo è particolarmente utile per setacciare rapidamente risultati potenzialmente interessanti.
porch-pirate -s "coca-cola.com" --dump
Un modo particolarmente utile per utilizzare Porch Pirate è estrarre tutti gli URL da uno spazio di lavoro ed esportarli in un altro strumento per il fuzzing.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --urls
Porch Pirate estrarrà ricorsivamente tutti gli URL dagli spazi di lavoro e dalle loro raccolte relativi a un termine di ricerca semplice.
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 ID_SPAZIO_DI_LAVORO
porch-pirate -c ID_RACCOLTA
porch-pirate -r ID_RICHIESTA
porch-pirate -u NOMEUTENTE/NOMETEAM
Porch Pirate può costruire richieste curl quando viene fornito un ID richiesta per test più semplici.
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'))
Altri esempi di utilizzo della libreria si trovano nella directory examples, che contiene i seguenti esempi:
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