Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
APIHarvester — 원샷 API 공격 도구 - 주어진 루트에서 API URL을 찾아 자동화된 공격을 시뮬레이션합니다 | Kitploit
도구/GitHubGitHub/piratesshield/apiharvester
ReconnaissanceVulnerability ScannersWeb Vulnerability ScannersDNS & Subdomain EnumerationWeb Application ExploitationAPI Security TestingInformation GatheringFuzzingPenetration TestingSecret DetectionCrawler
32672개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
API Security
GitHubpiratesshield/apiharvester

APIHarvester

원샷 API 공격 도구 - 주어진 루트에서 API URL을 찾아 자동화된 공격을 시뮬레이션합니다

저장소 보기
ChatGPT Image Jul 15, 2026, 10_14_08 AM

ApiHarvester

Python으로 작성된 풀 파이프라인 블랙박스 API 보안 스캐너입니다. 엔드포인트를 열거하고, 파라미터를 식별하며, HTTP 메서드를 프로빙하고, 인증/인가 로직을 테스트하며, 표준 OWASP API Top 10 공격 시뮬레이션(BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration 등)을 실행합니다. 또한 OWASP 카테고리와 무관하게 크래시/500 응답을 탐지하는 RESTler 스타일의 안정성 퍼저도 포함합니다.

모든 핵심 스크립트는 **stdlib-only(표준 라이브러리만 사용)**로 설계되었습니다. 시스템에 외부 도구나 라이브러리가 없을 경우, apiharvester는 즉시 실행을 보장하기 위해 자동으로 순수 Python 구현으로 폴백합니다.


저장소 구조

  • apiharvester/ — 메인 Python 패키지 디렉터리. python3 -m apiharvester로 실행합니다.
  • scripts/check_requirements.sh — 바이너리 및 페이로드 사전 요구사항을 검증합니다.
  • scripts/install_requirements.sh — 필요한 SecLists 페이로드 파일을 다운로드하고 선택적으로 바이너리를 설치합니다(go install 및 pip 사용).
  • apiharvester.py — 스캐너의 독립 실행형 단일 파일 배포판입니다.
  • api_deep_discovery.py — Katana 헤드리스 브라우저 코드를 사용하여 동적 SPA/XHR 엔드포인트를 탐색하는 동적 크롤러입니다.
  • api_intelligence_engine.py — 파이프라인 집계기 및 수동적 취약점 분류기입니다.
  • apisec.py — 대체 단일 파일 보안 스캐너 버전입니다.
  • requirements.txt — Python 의존성 목록(주로 선택적 Python 기반 가속기용).
  • payloads/ — 정찰용 워드리스트 및 페이로드 파일:
    • params.txt — API 엔드포인트 테스트용 파라미터 이름 후보 25,889개
    • directories.txt — 일반적인 API 경로 패턴 및 디렉터리 이름 62,281개
    • subdomains.txt — API 탐색용 서브도메인 변형 5,000개
    • kiterunner/ — 가속화된 엔드포인트 열거를 위한 Kiterunner 라우트 스키마 파일

설치 및 설정

  1. 요구사항 확인: 읽기 전용 스크립트를 실행하여 핵심 도구/페이로드가 사용 가능한지 확인합니다:

    ./scripts/check_requirements.sh
    
  2. 선택적 도구 및 페이로드 파일 설치: 설치 스크립트를 실행하여 SecLists 상위 워드리스트, Kiterunner 라우트 스키마를 자동으로 가져오고 도구 가속기를 설치합니다:

    ./scripts/install_requirements.sh
    
  3. Python 패키지 설치:

    pip3 install -r requirements.txt
    

사용법

대상 도메인에 대해 스캐너를 직접 실행합니다:

python3 -m apiharvester example.com \
    --auth "Bearer eyJ..." \
    --auth2 "Bearer eyJ_lowpriv..." \
    --threads 20 \
    --html report.html \
    --json findings.jsonl

명령줄 옵션:

  • target (위치 인수): 스캔할 FQDN 도메인.
  • --auth: 인증된 검사용 고권한 액세스 토큰(예: 유효한 사용자 세션).
  • --auth2: BOLA / BFLA / 교차 계정 권한 상승 테스트용 저권한 액세스 토큰.
  • --threads: 스레드풀 크기(기본값: 20).
  • --timeout: HTTP 요청 타임아웃(초)(기본값: 10).
  • --burst: 속도 제한 검증을 위한 신속 요청 수(기본값: 20).
  • --json: JSONL 형식 보고서 저장(줄 구분 JSON 결과).
  • --html: 대화형 HTML 대시보드 보고서 저장.
  • --output-dir: 기본 출력 디렉터리 경로 재정의(예: ./scans/example.com).
  • --skip-recon: 정찰 단계를 건너뛰고 이전 실행의 기존 출력 파일을 사용합니다.
  • --recon-dir: 기존 정찰 출력 디렉터리를 로드하고 공격 단계만 실행합니다.
  • --attacks-only: 공격 단계만 실행합니다(--skip-recon을 암시).
  • --attacks: 실행할 공격 목록(쉼표로 구분). 기본값: 전체. 사용 가능:
    bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
    ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
    

공격 모듈

OWASP API Top 10 (API1–API10:2023):

  • API1: BOLA/IDOR (bola) — 객체 수준 인가 취약점. ID 퍼징(0, 1, 2, 99, "admin", "test", UUID 변형 등) 및 차등 인증 토큰으로 객체-ID 엔드포인트를 테스트합니다.
  • API2: Broken Auth (broken_auth) — 미인증 엔드포인트 탐색, JWT 약한 시크릿 크래킹, alg=none 우회, 클레임 변조, kid 인젝션, 그리고 OPTIONS/HEAD 메서드 우회를 수행합니다.
  • API3: Mass Assignment (mass_assignment) — PUT/PATCH 본문에 권한 상승 필드(role, is_admin, verified, balance 등)를 주입합니다.
  • API4: Rate Limiting (rate_limit) — 20개 이상의 신속 요청을 전송하고, 429 Retry-After 대신 200을 반환하는 엔드포인트를 표시합니다.
  • API5: BFLA (bfla) — 기능 수준 인가 취약점. 저권한 토큰 유무에 따라 민감한 경로(/admin, /roles, /impersonate 등)를 테스트합니다.
  • API6: Business Logic (business_logic) — 워크플로/상태 머신 위반(예: 결제 후 주문 업데이트).
  • API7: SSRF (ssrf) — URL 파라미터 및 요청 본문을 통한 서버 측 요청 위조를 테스트합니다.
  • API8: Misconfiguration (misconfiguration) — CORS(능동적: 신뢰할 수 없는 Origin 전송), 보안 헤더 누락, 상세 오류, 서버 배너 노출.
  • API9: Inventory (inventory) — 문서화되지 않은 엔드포인트, 폐기된 엔드포인트, 노출된 관리자 인터페이스.
  • API10: SSPP (sspp) — 안전하지 않은 서버 측 후처리(템플릿 인젝션, XPath 인젝션 등).

보너스 공격:

  • Injection (injection) — SQL 인젝션, XSS, 명령 인젝션(오류 기반 + 시간 기반 블라인드).
  • Reliability (reliability) — RESTler 스타일 퍼징: 경계/잘못된 입력 테스트로 5xx 크래시 및 서버 안정성 버그를 탐지(OWASP 카테고리와 무관).
  • Secrets (secrets) — 응답 본문에서 유출된 자격 증명 패턴 매칭: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs, 그리고 일반적인 시크릿 할당(api_key=..., password=... 등).

예제 스캔

인증 + 저권한 토큰을 사용한 전체 스캔(BOLA/BFLA에 최적):

python3 -m apiharvester api.example.com \
    --auth "Bearer high_priv_token_here" \
    --auth2 "Bearer low_priv_token_here" \
    --html report.html \
    --json findings.jsonl

빠른 정찰 전용(엔드포인트 탐색, 공격 없음):

python3 -m apiharvester example.com --skip-recon --attacks ""

(또는 일부 공격 단계를 건너뛰려면 --auth를 제공하지 않으면 됩니다.)

저장된 정찰 데이터에 대해 공격만 재실행(빠른 반복):

python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only

특정 공격만 실행(예: BOLA + Secrets):

python3 -m apiharvester example.com --attacks bola,secrets

TLS 인증서 오류 우회(기업 프록시, 스테이징 환경):

# apiharvester는 기본적으로 관대한 TLS 컨텍스트를 사용합니다 — 추가 플래그가 필요하지 않습니다
# 자체 서명/가로채기된 인증서에서도 모든 HTTPS 엔드포인트가 작동합니다
python3 -m apiharvester https://staging-api.example.com

출력 디렉터리

모든 스캔은 공격 단계가 실행되기 전에 정찰 산출물을 구조화된 출력 디렉터리에 기록합니다. 기본값은 다음과 같습니다:

output/{target}_{YYYYMMDD_HHMMSS}/

예: output/example.com_20260715_140233/. 고정되고 예측 가능한 경로를 원한다면 --output-dir /path/to/dir로 위치를 재정의할 수 있습니다(스크립팅/CI에 유용).

기록되는 파일

파일내용
fqdn.txt발견된 모든 서브도메인(한 줄에 하나)
fqdn_resolved.txtIP가 확인된 서브도메인 — domain\tip1,ip2
fqdn_active.txt활성 HTTP(S) 호스트(전체 URL)
fqdnwithendpoint.txt발견된 모든 엔드포인트 URL
withparam.txt발견된 쿼리 파라미터가 있는 엔드포인트(전체 URL)
paramvalue.txt관찰된 파라미터 값이 있는 엔드포인트(라이브 프로빙에서)
withtoken.txt--auth/--auth2로 제공된 인증 토큰/JWT 및 응답에서 수집된 모든 토큰
objectshape.txt엔드포인트별 응답 JSON 필드 이름 — url\tfield1,field2
waf_results.jsonlWAF/캐치올/JS 챌린지가 감지된 호스트당 하나의 JSON 객체
endpoint_methods.jsonl허용된 HTTP 메서드를 나열하는 엔드포인트당 하나의 JSON 객체
swagger_specs/*.json발견된 모든 OpenAPI/Swagger 스펙(호스트당 하나의 파일)

모든 것이 일반 텍스트(한 줄에 하나의 항목) 또는 JSONL이므로 grep, jq, 파이프로 깔끔하게 처리할 수 있습니다.

출력 디렉터리 재사용

기존 정찰 데이터에 대해 공격 단계만 재실행하고 서브도메인 탐색/크롤링 등을 건너뜁니다:

python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only

--attacks-only는 --skip-recon을 암시하며 fqdn_active.txt, fqdnwithendpoint.txt, withparam.txt, withtoken.txt, swagger_specs/, waf_results.jsonl을 스캔 컨텍스트로 다시 로드합니다.

정찰 파일을 다른 도구에 공급:

# httpx 재프로빙
httpx -l output/example.com_*/fqdn_active.txt

# 발견된 엔드포인트에 대해 nuclei 실행
nuclei -l output/example.com_*/fqdnwithendpoint.txt

# 발견된 파라미터를 워드리스트 시드로 사용하여 ffuf 실행
cut -d'?' -f2 output/example.com_*/withparam.txt | tr '&' '\n' | cut -d= -f1 | sort -u

# 호스트별 WAF 결과에 jq 적용
jq -r 'select(.waf_vendor != "none") | .domain' output/example.com_*/waf_results.jsonl

모든 파일이 줄 구분 일반 텍스트 또는 JSONL이므로, 출력 디렉터리는 grep, jq, httpx, nuclei, ffuf 또는 파이프라인의 다른 도구에 전달할 수 있는 이식 가능한 정찰 데이터셋 역할을 합니다 — apiharvester 전용 파서가 필요하지 않습니다.


페이로드 파일

apiharvester는 포괄적인 API 탐색 및 테스트를 위해 SecLists와 Kiterunner의 고품질 워드리스트 및 라우트 스키마를 사용합니다:

  • params.txt (25,889개 항목) — 일반적인 API 파라미터 이름(예: api_key, user_id, token). 파라미터 탐색 단계에서 잠재적 입력 지점을 식별하는 데 사용됩니다.

  • directories.txt (62,281개 항목) — API 엔드포인트 경로 및 디렉터리 패턴(예: /api/v1/, /admin/, /internal/). 경로 열거 및 Soft-404 탐지에 사용됩니다.

  • subdomains.txt (5,000개 항목) — 서브도메인 접두사 및 변형(예: api, api-v2, staging-api). 서브도메인 전반에 걸쳐 추가 API 표면을 식별하는 데 사용됩니다.

  • kiterunner/ — 신속한 라우트 탐색 및 검증을 위한 Kiterunner 형식의 OpenAPI 라우트 스키마. 외부 스키마가 있을 때 가속화된 엔드포인트 매핑을 가능하게 합니다.

이러한 페이로드는 SecLists(https://github.com/danielmiessler/SecLists)에서 가져왔으며, apiharvester가 숨겨지거나 문서화되지 않은 API 엔드포인트, 파라미터, 서비스를 효율적으로 식별할 수 있게 합니다.


이전 버전 대비 개선 사항

도구 다운로드