
O Porch Pirate é o cliente e framework de reconhecimento / OSINT Postman mais abrangente, que facilita a descoberta e exploração automatizada de endpoints de API e segredos comprometidos em workspaces, coleções, requisições, usuários e equipes. O Porch Pirate pode ser usado como um cliente ou incorporado em suas próprias aplicações.

O Porch Pirate começou como uma ferramenta para descobrir rapidamente segredos do Postman e, lentamente, começou a evoluir para um framework de reconhecimento / OSINT multiuso para o Postman. Embora as ferramentas existentes sejam ótimos proofs of concept, elas tentam identificar apenas palavras-chave muito específicas como "segredos" e em locais muito limitados, sem considerar reconhecimento além de segredos. Percebemos que precisávamos de capacidades que fossem "agnósticas a segredos" e tivessem flexibilidade suficiente para capturar falsos positivos que ainda fornecessem valor ofensivo.
O Porch Pirate enumera e apresenta resultados sensíveis (segredos globais, cabeçalhos únicos, endpoints, parâmetros de consulta, autorização, etc.) de entidades do Postman publicamente acessíveis, como:
python3 -m pip install porch-pirate

O cliente Porch Pirate pode ser usado para realizar revisões quase completas em entidades públicas do Postman de forma rápida e simples. Existem fluxos de trabalho pretendidos e palavras-chave específicas que podem ser usadas para maximizar os resultados. Essas metodologias podem ser encontradas em nosso blog: Plundering Postman with Porch Pirate.
O Porch Pirate suporta os seguintes argumentos para serem executados em collections, workspaces ou usuários.
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
Por padrão, o Porch Pirate exibirá globais de todos os ambientes ativos e inativos, se estiverem definidos no workspace. Forneça um argumento -w com o ID do workspace (encontrado realizando uma pesquisa simples ou dump automático de pesquisa) para extrair os globais do workspace, juntamente com outras informações.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
Quando um resultado interessante for encontrado com uma pesquisa simples, podemos fornecer o ID do workspace ao argumento -w com o comando --dump para começar a extrair informações do workspace e suas collections.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --dump
O Porch Pirate pode receber um termo de pesquisa simples, seguido do argumento --globals. O Porch Pirate fará dump de todos os workspaces relevantes vinculados aos resultados descobertos na pesquisa simples, mas apenas se houver globais definidos. Isso é particularmente útil para identificar rapidamente workspaces potencialmente interessantes para explorar mais a fundo.
porch-pirate -s "shopify" --globals
O Porch Pirate pode receber um termo de pesquisa simples, seguido do argumento --dump. O Porch Pirate fará dump de todos os workspaces e collections relevantes vinculados aos resultados descobertos na pesquisa simples. Isso é particularmente útil para filtrar rapidamente resultados potencialmente interessantes.
porch-pirate -s "coca-cola.com" --dump
Uma maneira particularmente útil de usar o Porch Pirate é extrair todas as URLs de um workspace e exportá-las para outra ferramenta para fuzzing.
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8 --urls
O Porch Pirate extrairá recursivamente todas as URLs dos workspaces e suas collections relacionadas a um termo de pesquisa simples.
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
O Porch Pirate pode construir requisições curl quando fornecido com um ID de request para facilitar os testes.
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'))
Outros exemplos de uso da biblioteca podem ser encontrados no diretório examples, que contém os seguintes exemplos:
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