
Porch Pirate는 워크스페이스, 컬렉션, 요청, 사용자 및 팀에 커밋된 API 엔드포인트와 비밀을 자동으로 발견하고 악용하는 것을 용이하게 하는 가장 포괄적인 Postman 정찰/OSINT 클라이언트 및 프레임워크입니다. Porch Pirate는 클라이언트로 사용하거나 자신의 애플리케이션에 통합할 수 있습니다.

Porch Pirate는 Postman 비밀을 신속하게 발견하기 위한 도구로 시작되었으며, 점차 Postman을 위한 다목적 정찰/OSINT 프레임워크로 진화하고 있습니다. 기존 도구들은 훌륭한 개념 증명이지만, 매우 특정한 키워드만 "비밀"로 식별하려고 시도하고, 매우 제한된 위치에서만 수행하며, 비밀 이상의 정찰은 고려하지 않습니다. 우리는 "비밀-무관"하고 거짓 양성을 포착할 수 있을 만큼 유연하며 여전히 공격적 가치를 제공하는 능력이 필요하다는 것을 깨달았습니다.
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는 워크스페이스에 정의된 경우 활성 및 비활성 환경의 모든 글로벌을 표시합니다. 워크스페이스 ID(간단 검색 또는 자동 검색 덤프를 통해 확인)와 함께 -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는 요청 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