웹 API Pentesting

Reading time: 6 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

API Pentesting 방법론 요약

API Pentesting은 취약점을 발견하기 위한 구조화된 접근을 필요로 한다. 이 가이드는 실무 중심의 기법과 도구를 강조하는 포괄적인 방법론을 요약한다.

API 유형 이해

  • SOAP/XML Web Services: 문서화에 WSDL 형식을 사용하며, 일반적으로 ?wsdl 경로에서 찾을 수 있다. SOAPUIWSDLer(Burp Suite Extension) 같은 도구는 요청을 파싱하고 생성하는 데 유용하다. 예시 문서는 DNE Online에서 확인할 수 있다.
  • REST APIs (JSON): 문서는 종종 WADL 파일로 제공되지만, Swagger UI 같은 도구가 더 친숙한 인터페이스를 제공한다. Postman은 예제 요청을 생성하고 관리하는 데 유용하다.
  • GraphQL: API용 쿼리 언어로, API의 데이터에 대해 완전하고 이해하기 쉬운 설명을 제공한다.

실습 랩

  • VAmPI: 실습을 위한 의도적으로 취약한 API로, OWASP top 10 API 취약점을 다룬다.

API Pentesting을 위한 효과적인 트릭

  • SOAP/XML Vulnerabilities: DTD 선언은 종종 제한되지만, XML이 유효하다면 CDATA 태그가 페이로드 삽입을 허용할 수 있어 XXE 취약점을 탐색해보라.
  • Privilege Escalation: 권한 수준이 다른 계정으로 엔드포인트를 테스트해 무단 접근 가능성을 확인하라.
  • CORS Misconfigurations: 인증된 세션에서 CSRF 공격을 통해 악용될 수 있는지 CORS 설정을 조사하라.
  • Endpoint Discovery: API 패턴을 활용해 숨겨진 엔드포인트를 찾아라. fuzzers 같은 도구가 이 과정을 자동화할 수 있다.
  • Parameter Tampering: 요청에 파라미터를 추가하거나 교체해 무단 데이터 또는 기능에 접근할 수 있는지 실험해보라.
  • HTTP Method Testing: 요청 메서드(GET, POST, PUT, DELETE, PATCH)를 변경해 예상치 못한 동작이나 정보 누출을 찾아라.
  • Content-Type Manipulation: 다양한 content type(x-www-form-urlencoded, application/xml, application/json)을 오가며 파싱 문제나 취약점을 테스트하라.
  • Advanced Parameter Techniques: JSON 페이로드에 예상치 못한 데이터 타입을 넣어보거나 XXE 주입을 위해 XML 데이터를 조작해보라. 또한 parameter pollution과 와일드카드 문자를 시도해 광범위한 테스트를 수행하라.
  • Version Testing: 오래된 API 버전이 더 취약할 수 있다. 항상 여러 API 버전을 확인하고 테스트하라.

권한 및 비즈니스 로직 (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls

현대 TypeScript 스택은 입력 검증을 위해 tRPC와 Zod를 흔히 사용한다. tRPC에서 protectedProcedure는 일반적으로 요청이 유효한 세션(인증)을 가졌는지 확인하지만, 호출자가 적절한 역할/권한(인가)을 갖추었는지는 보장하지 않는다. 이 불일치는 민감한 절차가 단지 protectedProcedure로만 제한될 경우 Broken Function Level Authorization/BOLA로 이어질 수 있다.

  • Threat model: 역할 검사가 없으면 권한이 낮은 인증 사용자라도 admin-grade 절차를 호출할 수 있다(예: background migrations, feature flags, tenant-wide maintenance, job control).
  • Black-box signal: POST /api/trpc/<router>.<procedure> 엔드포인트가 기본 계정으로도 성공하는 경우 — 관리 전용이어야 한다. Self-serve signups는 exploitability를 크게 증가시킨다.
  • Typical tRPC route shape (v10+): JSON body가 {"input": {...}} 형태로 래핑된다.

Example vulnerable pattern (no role/permission gate):

ts
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),

실전 exploitation (black-box)

  1. 일반 계정을 등록하고 인증된 세션을 획득합니다 (cookies/headers).
  2. “list”/“all”/“status” 절차를 통해 백그라운드 작업 또는 기타 민감한 리소스를 열거합니다.
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. 작업 재시작과 같은 권한 있는 작업을 호출:
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'

Impact to assess

  • 비멱등 재시작으로 인한 데이터 손상: 마이그레이션/워커의 동시 실행을 강제하면 경쟁 상태(race conditions)와 불일치한 부분 상태(무음 데이터 손실, 분석 결과 손상)를 초래할 수 있습니다.
  • DoS via worker/DB 고갈: 무거운 작업을 반복적으로 트리거하면 워커 풀과 데이터베이스 연결이 소진되어 테넌트 전체 장애를 일으킬 수 있습니다.

API Pentesting을 위한 도구 및 자료

  • kiterunner: API 엔드포인트 발견에 매우 유용합니다. 대상 API에 대해 경로와 파라미터를 스캔하고 brute force로 시도해 보세요.
bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • https://github.com/BishopFox/sj: sj는 관련 API 엔드포인트의 약한 인증을 확인하여 exposed Swagger/OpenAPI definition files의 감사를 돕도록 설계된 명령줄 도구입니다. 또한 수동 취약점 테스트용 커맨드 템플릿을 제공합니다.
  • Additional tools like automatic-api-attack-tool, Astra, and restler-fuzzer offer tailored functionalities for API security testing, ranging from attack simulation to fuzzing and vulnerability scanning.
  • Cherrybomb: Cherrybomb는 OAS 파일을 기반으로 API를 감사하는 API 보안 도구입니다(도구는 rust로 작성됨).

학습 및 실습 자료

  • OWASP API Security Top 10: 일반적인 API 취약점을 이해하는 데 필수 자료 (OWASP Top 10).
  • API Security Checklist: API를 보호하기 위한 포괄적인 체크리스트 (GitHub link).
  • Logger++ Filters: API 취약점 탐색을 위해 Logger++는 유용한 필터를 제공합니다 (GitHub link).
  • API Endpoints List: 테스트용 잠재 API 엔드포인트를 선별한 목록 (GitHub gist).

참고 자료

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기