
Porch Pirate 最初是一款快速发现 Postman 秘密的工具,后来逐渐发展成针对 Postman 的多用途侦察/OSINT 框架。现有工具虽然是很好的概念验证,但它们仅尝试将非常特定的关键词识别为“秘密”,且仅限于有限的位置,完全没有考虑除秘密之外的侦察。我们意识到需要具备“秘密无关”的能力,并且要有足够的灵活性来捕获仍具有攻击价值的误报。
Porch Pirate 枚举并呈现来自可公开访问的 Postman 实体(例如)的敏感结果(全局秘密、独特头部、端点、查询参数、授权等):
python3 -m pip install porch-pirate

Porch Pirate 客户端可用于以快速简单的方式几乎完整地审查公共 Postman 实体。存在预期的工作流和特定关键词,通常可以最大化结果。这些方法论可在我们的博客上找到:用 Porch Pirate 掠夺 Postman。
Porch Pirate 支持以下参数,可对集合、工作区或用户执行。
--globals--collections--requests--urls--dump--raw--curlporch-pirate -s "coca-cola.com"
默认情况下,如果工作区中定义了环境,Porch Pirate 会显示所有活动和非活动环境中的全局变量。提供带有工作区 ID 的 -w 参数(通过执行简单搜索或自动搜索转储找到),以提取工作区的全局变量以及其他信息。
porch-pirate -w abd6bded-ac31-4dd5-87d6-aa4a399071b8
当通过简单搜索发现有趣的结果时,我们可以将工作区 ID 提供给带有 --dump 命令的 -w 参数,开始从工作区及其集合中提取信息。
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 工作区_ID
porch-pirate -c 集合_ID
porch-pirate -r 请求_ID
porch-pirate -u 用户名/团队名
Porch Pirate 可以在提供请求 ID 时构建 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