【2025년 최신】API 침투 테스트 완전 가이드: 18가지 필수 기법과 실천 도구

배고픈코알라·2025년 9월 4일
post-thumbnail

서론

API 보안은 현대 소프트웨어 개발에서 매우 중요한 요소입니다. 마이크로서비스와 클라우드 네이티브의 보급으로 API는 기업 시스템의 핵심을 담당하게 되었습니다. 그러나 OWASP API Security Top 10 보고서에 따르면, API 취약점의 75%는 인증 결함, 과도한 데이터 노출, 비즈니스 로직 결함이 원인으로 지적되고 있습니다.

설정 오류나 인증 결함 등 작은 실수가 심각한 취약점으로 이어질 수 있습니다. 특히 개발 기한에 쫓기는 상황에서는 보안 대책이 후순위로 밀리기 쉽습니다.

이 글에서는 API 침투 테스트의 18가지 중요 기술과 도구를 소개합니다. 이러한 지식을 활용하면 더 안전한 API 개발 및 운영이 가능해질 것입니다.

1. 인증·인가 취약점을 노려라!

1-1. JWT(JSON Web Token) 해독법

"JWT는 안전하다"고 생각하시나요? 그것은 큰 오해일 수 있습니다!

최근 테스트한 서비스에서는 HS256 알고리즘에 너무 짧은 키를 사용하여 10분 만에 토큰을 위조할 수 있었습니다.

  • 공격 기법:

    • 약한 암호화 알고리즘(HS256으로 짧은 키 등) 확인
    • 유효 기간 검증이 누락되었는지 확인
  • 추천 도구:

    • jwt_tool: 키 브루트포스 공격, 토큰 위조(사용 예: jwt_tool <JWT> -C -d wordlist.txt)
    • Burp Suite JWT Editor: 실시간으로 JWT 내용을 변경하여 요청 재전송
  • 방어책: RS256/ES256 알고리즘 강제 사용, 적절한 exp/nbf 타임스탬프 설정

1-2. OAuth 2.0 인가 코드 탈취 함정

OAuth 2.0 구현 오류는 의외로 많습니다. 특히 redirect_uri 파라미터 검증이 약하면 인가 코드가 도난당해 계정 탈취의 위험이 있습니다!

  • 공격 패턴:

    • authorization_code 탈취
    • redirect_uri 파라미터를 악용한 CSRF 공격
  • 테스트 방법:

    • redirect_uri를 공격자 도메인으로 변경하고, 코드가 붙은 채로 리다이렉트되는지 확인
    • Postman을 사용하여 OAuth 흐름을 시뮬레이션, state 파라미터의 누락이나 예측 가능성 확인
  • 유용한 도구: OAuth Tester(Burp 플러그인)로 설정 오류 자동 감지

효율화 포인트: 다중 사용자 역할 테스트에는 Apidog인증 설정 기능이 효과적입니다. 사용자 권한을 빠르게 전환하여 다양한 시나리오에서 인가 문제를 검증할 수 있어 테스트 효율이 향상됩니다.

1-3. API 키 유출 탐색

API 키가 유출되면 시스템에 대한 불법 접근이 가능해져 보안상 큰 위험이 됩니다. 특히 프론트엔드 JS 코드에 평문으로 작성된 경우 주의가 필요합니다.

  • 체크포인트:

    • 클라이언트 코드
    • Git 이력
    • 로그 파일
    • 공개 문서
  • 유용한 도구:

    • TruffleHog: Git 저장소 내 기밀 정보 스캔
    • Gitleaks: 코드 커밋에서 키 유출 실시간 모니터링
  • 주의점: 프론트엔드 JS에 API 키를 하드코딩하면 정보 유출 위험이 높아집니다. 개발 시 충분히 주의해야 합니다.

1-4. 수평적 권한 상승(IDOR) 노리기

IDOR(Insecure Direct Object Reference)은 단순하지만 효과적인 취약점입니다. 요청 내 ID를 변경하는 것만으로 다른 사용자의 데이터에 접근할 가능성이 있습니다.

  • 기법: 요청 내 사용자 ID, 주문 번호 등의 파라미터를 변경하여 리소스 접근 제어 테스트
  • 도구: Autorize(Burp 플러그인)로 권한 상승 취약점 자동 감지
  • 페이로드 예: GET /api/user/123/profileGET /api/user/456/profile로 변경

2. 입력 검증의 돌파구를 찾아라!

2-1. SQL 인젝션 기법

RESTful API나 GraphQL에서도 SQL 인젝션은 여전히 존재합니다. 특히 경로 파라미터나 GraphQL 쿼리는 간과되기 쉽습니다.

  • API 특성: RESTful 경로 파라미터, GraphQL 쿼리가 인젝션 포인트가 되기 쉬움
  • 테스트 방법:
    • 비정상 파라미터 전송: /api/users?id=1'%20OR%201=1--
    • GraphQL 쿼리: {user(id:"1' UNION SELECT null,version()--"){name}}
  • 도구: SQLmap(--level=5로 복잡한 인젝션 포인트도 감지)

2-2. NoSQL 인젝션 대책

MongoDB나 Redis 등 NoSQL 데이터베이스를 사용하는 API도 증가하고 있지만, JSON 형식의 파라미터 조작으로 인증을 우회할 수 있습니다!

  • 취약점 시나리오: MongoDB, Redis 등 JSON 형식으로 파라미터를 전달하는 경우
  • 페이로드 예:
    {"username": {"$ne": ""}, "password": {"$exists": true}}
  • 도구: NoSQLi(Burp 플러그인)로 공격 벡터 자동 생성

2-3. XXE 취약점 활용

XML을 받는 API에서 외부 엔티티 파싱이 비활성화되지 않으면 서버 파일 읽기가 가능해질 수 있습니다!

  • 트리거 조건: API가 XML 형식의 입력을 받고, 외부 엔티티 파싱을 비활성화하지 않음
  • 공격 페이로드:
    <?xml version="1.0"?>
    <!DOCTYPE data [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
    <user><name>&xxe;</name></user>
  • 도구: XXEinjector로 파일 읽기, SSRF 등 시나리오 자동 테스트

2-4. SSRF(서버 사이드 요청 위조)

내부 네트워크 접근을 허용하는 취약점입니다. 특히 클라우드 환경에서는 메타데이터 서비스 접근이 위험합니다!

  • 체크포인트: URL 파라미터, 웹훅 콜백 주소, 파일 가져오기 기능
  • 기법:
    • 내부 네트워크 서비스 접근 시도: http://169.254.169.254/latest/meta-data/
    • DNS 리바인딩 기술로 제한 우회
  • 도구: SSRFmap으로 내부 자산 자동 열거

효율화 포인트: 파라미터 이상값 테스트에서는 Apidog의 테스트 데이터 생성 기능을 활용하면 경계값이나 불법 입력을 효율적으로 구성할 수 있습니다. Burp/ZAP와 조합하면 테스트 효율이 향상됩니다.

3. 비즈니스 로직의 허점을 찌르라!

3-1. 일괄 할당 취약점(Mass Assignment)

API가 전송된 모든 파라미터를 무조건 수용하면 본래 변경할 수 없는 필드도 업데이트할 수 있게 됩니다.

  • 원리: API가 클라이언트에서 전송된 민감 필드(isAdmin=true 등)를 필터링하지 않음
  • 테스트 절차:
    • 일반 요청을 가로채고, 추가 파라미터(role=admin 등)를 추가
    • 요청을 재전송하여 응답이 유효한지 확인
  • 도구: Burp SuiteMatch and Replace 기능으로 파라미터 자동 추가

3-2. 속도 제한 우회 기법

API 호출 횟수 제한은 약간의 기술로 우회할 수 있는 경우가 많습니다.

  • 우회 방법:
    • X-Forwarded-For 헤더를 변경하여 IP 위장
    • 다른 API 키나 JWT 토큰으로 요청 로테이션
  • 도구: Wfuzz로 병렬 테스트(-t 100 -p 3으로 스레드와 지연 설정)

3-3. CORS 설정 오류 공략

CORS 설정 오류는 의외로 많으며, 크로스 도메인에서 데이터 탈취를 허용할 수 있습니다.

  • 감지: Access-Control-Allow-Origin*나 제어 가능한 도메인이 포함되어 있는지 확인
  • 악용: 악의적인 페이지에서 크로스 도메인 요청을 발행하여 사용자 데이터 탈취
  • 도구: CORS Scanner(Chrome 플러그인)로 위험 설정 빠르게 식별

팀 개발 힌트: 여러 사람의 협업이나 복잡한 비즈니스 시나리오에서는 ApidogAPI Schema 검증이 필드 누락이나 설정 불일치로 인한 로직 취약점을 줄일 수 있습니다. 이는 정말 유용합니다!

4. 자동화와 고급 테스트 도구

4-1. Apidog으로 자동 테스트 효율화

API 응답의 상태나 데이터 정합성을 검증하는 테스트 스크립트를 작성하면 지속적인 보안 체크가 가능합니다.

  • 시나리오: 테스트 스크립트를 작성하여 API 응답의 상태, 데이터 정합성 검증
  • 샘플 스크립트:
    pm.test("상태 코드는 200", () => pm.response.to.have.status(200));
    pm.test("응답 시간 < 500ms", () => pm.expect(pm.response.responseTime).to.be.below(500));
  • 특징: 단일 테스트 도구와 달리, Apidog은 설계, Mock, 문서, 테스트를 통합하고, 팀 협업과 CI/CD 파이프라인을 지원합니다. 침투 테스트의 지속적 통합에 최적입니다!

4-2. OWASP ZAP 활용법

무료로 고기능 보안 스캐너로서 API 테스트에도 큰 활약을 합니다.

  • 기능: 액티브/패시브 스캔, 인증 크롤러, API Swagger 가져오기
  • 기법: OpenAPI 문서를 가져와 테스트 케이스 생성, 커버리지 향상

4-3. APIFuzzer로 이상값 테스트

API에 특화된 퍼징 도구로, 예상치 못한 입력에 대한 동작을 테스트할 수 있습니다.

  • 위치: API 전용 퍼징 도구, GraphQL, gRPC도 지원
  • 전략: 문법 변이 기반 파라미터 변조(경계값, 이상 데이터 타입 등)

4-4. Nuclei 템플릿 엔진

보안 테스트 자동화에 최적인 도구로, 커뮤니티 템플릿이 풍부합니다.

  • 장점: 커뮤니티 템플릿 라이브러리가 API 취약점(CVE-2023-1234 등)을 커버
  • 명령: nuclei -t api/ -u https://target.com/api/v1

효율화 포인트: 여러 도구 전환은 시간 손실이 될 수 있습니다. Apidog은 설계부터 테스트까지 일관되게 수행할 수 있고, AI 자동 테스트 케이스 생성, CI/CD 통합, Mock 환경 관리도 지원하므로 침투 테스트 중 컨텍스트 전환을 줄일 수 있습니다. 효율 향상으로 이어질 것입니다.

5. 클라우드 네이티브·마이크로서비스 API 대책

5-1. Kubernetes API 감사

컨테이너 환경에서는 Kubernetes의 API 엔드포인트가 새로운 공격면이 되고 있습니다.

  • 위험 포인트: 인증 없는 /api/v1/pods, /apis/extensions/v1beta1
  • 도구: kube-hunter로 클러스터 설정 결함 스캔

5-2. 서버리스 함수 인젝션

AWS Lambda 등 서버리스 환경도 침투 테스트 대상입니다.

  • 사례: AWS Lambda 함수가 입력을 검증하지 않고, 명령 실행을 허용
  • 테스트: 이벤트 파라미터에 ; whoami 등의 시스템 명령 주입

5-3. GraphQL 침투 테스트

GraphQL은 유연한 반면, 적절히 보호되지 않으면 정보 유출 위험이 높아집니다.

  • 도구:
    • GraphQLmap: 자동 인젝션(./graphqlmap.py -u http://api.com/graphql -i)
    • InQL Scanner(Burp 플러그인)로 Schema를 시각적으로 분석
  • 기법: __typename을 이용해 인트로스펙션 쿼리가 개방되어 있는지 탐색

멀티 환경 테스트 포인트: 여러 환경이나 다수의 마이크로서비스가 있는 경우, Apidog의 환경 전환과 그룹 테스트 기능을 사용하면 더 실제 비즈니스 흐름에 가까운 침투 테스트가 가능합니다. 효율적인 테스트 실시에 도움이 될 것입니다.

6. 방어 강화와 베스트 프랙티스

기술적 방어책:

  • 엄격한 CORS 정책을 활성화하고, Access-Control-Allow-Origin: *를 금지
  • 모든 API 요청에 속도 제한 실시(토큰 버킷 알고리즘 등)
  • OpenAPI 명세로 입출력 모델을 명확히 정의

관리 대책:

  • API 자산 인벤토리를 구축하고, 취약점 스캔 규칙을 정기적으로 업데이트
  • 서드파티 API 의존성에 공급망 보안 평가 실시
  • 위협 모델링(STRIDE)을 실시하고, 고위험 인터페이스 식별

모니터링과 대응:

  • API 게이트웨이 로그 분석(ELK + Wazuh 등) 도입
  • 이상 행동 알림(단일 IP에서의 고빈도 호출, 비정상 파라미터 출현 등) 설정

실천 조언: CI/CD 프로세스에 자동 회귀 테스트를 도입하면 보안 테스트를 개발 라이프사이클 전체에 통합하고, 폐루프 방어를 형성할 수 있습니다. 많은 개발 팀에서는 이 방법으로 릴리스 후 취약점 발견이 크게 감소했다는 보고가 있습니다.

요약

API 침투 테스트에는 도구 활용과 비즈니스 로직 분석을 결합한 접근 방식이 필요합니다. 효과적인 전략으로 다음 "3단계"가 있습니다:

  1. 자산 정리: Swagger/OpenAPI 문서를 기반으로 테스트 경계 확립
  2. 자동 스캔: ZAP, Nuclei 등으로 일반적인 취약점을 커버하고, Apidog의 자동 테스트 기능으로 커버리지 향상
  3. 수동 검증: 비즈니스 흐름에 특화된 테스트 케이스로 심층 로직 취약점 감지

오픈소스 도구와 Apidog과 같은 통합 플랫폼을 결합하면 보안 테스트의 효율과 품질을 향상시킬 수 있습니다.

이러한 기법을 실제 프로젝트에 도입함으로써 API 보안 강화가 가능해집니다.

0개의 댓글