์›น API Pentesting

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 ๊ฒฝ๋กœ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. SOAPUI ๋ฐ WSDLer(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):

// 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โ€ ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ๋˜๋Š” ๊ธฐํƒ€ ๋ฏผ๊ฐํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์—ด๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. ์ž‘์—… ์žฌ์‹œ์ž‘๊ณผ ๊ฐ™์€ ๊ถŒํ•œ ์žˆ๋Š” ์ž‘์—…์„ ํ˜ธ์ถœ:
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๋กœ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.
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 ์ง€์›ํ•˜๊ธฐ