OWASP Testing Guide (OTG)
OWASP Testing Guide(정식 명칭: OWASP Web Security Testing Guide, WSTG)는 웹 애플리케이션 및 API의 보안 취약점을 체계적으로 식별하고 검증하기 위해 설계된 포괄적인 오픈 소스 보안 테스트 프레임워크이다.
1. 개요
OWASP Testing Guide(이하 WSTG)는 전 세계 보안 전문가, 모의해킹 전문가(Penetration Tester), 개발자가 웹 애플리케이션의 보안성을 평가할 때 사용할 수 있는 표준 방법론을 제공한다. 단순히 개별 취약점을 찾는 것을 넘어, 정보 수집부터 결과 보고에 이르는 전체적인 테스트 라이프사이클을 정의함으로써 테스트의 일관성과 재현성을 보장하는 것을 목적으로 한다.
최신 릴리스인 WSTG v4.2 기준으로는 현대적인 웹 아키텍처의 변화를 반영하여 다음과 같은 사항들이 업데이트되었다.
- API 보안 강화: REST, GraphQL 등 현대적 API 인터페이스에 대한 테스트 케이스 확장.
- 클라우드 네이티브 환경 반영: 컨테이너 및 서버리스 환경에서 발생할 수 있는 설정 오류 점검 항목 추가.
- 최신 공격 벡터 업데이트: 최신 브라우저 보안 정책(CSP, CORS 등) 및 최신 인증 프로토콜(OAuth 2.0, OIDC)에 대한 검증 절차 세분화.
관련 링크:
- OWASP WSTG 공식 문서
- OWASP WSTG GitHub 저장소
2. 테스트 프레임워크 및 방법론
WSTG는 체계적인 접근을 위해 단계별 테스트 프로세스를 채택하고 있다. 이는 무작위적인 공격 시도가 아닌, 대상 시스템에 대한 이해를 바탕으로 취약점을 도출하는 분석적 접근 방식이다.
테스트 단계별 주요 활동
| 단계 |
설명 |
주요 활동 |
목표 |
| 정보 수집 |
대상 애플리케이션의 기술 스택, 네트워크 구조, 숨겨진 엔드포인트 등을 파악 |
포트 스캐닝, 디렉토리 리스팅, 기술 스택 식별 |
대상 시스템의 전체적인 맵핑 및 공격 경로 파악 |
| 분석 |
수집된 정보를 바탕으로 공격 표면(Attack Surface)을 정의하고 잠재적 취약 지점을 식별 |
비즈니스 로직 분석, 데이터 흐름 분석 |
취약점이 발생할 가능성이 높은 고위험 지점 선정 |
| 취약점 탐색 |
정의된 테스트 케이스를 적용하여 실제 취약점이 존재하는지 확인 |
페이로드 주입, 인증 우회 시도, 설정 오류 확인 |
실제 익스플로잇 가능 여부 및 영향도 검증 |
| 보고 |
발견된 취약점의 위험도를 산정하고 대응 방안을 제시 |
위험도 산정, PoC(Proof of Concept) 작성 |
관리자 및 개발자에게 수정 방안 제시 및 조치 유도 |
3. 주요 테스트 카테고리
WSTG는 웹 애플리케이션의 기능을 기반으로 테스트 영역을 세분화하여 정의한다.
- 정보 수집 (Information Gathering): DNS 분석, 서버 배너 확인, 공개된 소스코드 분석.
- 구성 및 배포 관리 테스트 (Configuration and Deployment Management Testing): 기본 계정 사용 여부, 불필요한 서비스 활성화, HTTP 헤더 설정(HSTS, CSP 등).
- 인증 테스트 (Identity Management Testing): 비밀번호 정책, 다요소 인증(MFA) 우회, 계정 열거(Account Enumeration).
- 세션 관리 테스트 (Session Management Testing): 세션 타임아웃, 세션 고정(Session Fixation), 안전하지 않은 쿠키 속성.
- 입력 데이터 검증 테스트 (Input Validation Testing): SQL Injection, XSS(Cross-Site Scripting), OS Command Injection.
- 에러 처리 테스트 (Error Handling Testing): 상세 에러 메시지를 통한 정보 유출(Information Leakage).
- 암호화 테스트 (Cryptography Testing): 취약한 암호화 알고리즘 사용, 전송 중 데이터 평문 노출.
- 비즈니스 로직 테스트 (Business Logic Testing): 결제 금액 조작, 권한 밖의 기능 접근, 프로세스 우회.
WSTG 테스트 맵 (v4.2)
(참고: 위 이미지는 WSTG의 전체 테스트 구조를 시각화한 맵이다.)
4. 테스트 수행 절차 및 기법
WSTG의 각 테스트 케이스는 [WSTG-카테고리 약어-번호] 형태의 고유 ID를 가지며, 이를 통해 표준화된 추적이 가능하다. 각 항목은 [테스트 ID $\rightarrow$ 설명 $\rightarrow$ 테스트 방법 $\rightarrow$ 판단 기준]의 구조로 수행된다.
테스트 시나리오 예시: SQL Injection
- 목표: 입력값 검증 미흡을 이용하여 데이터베이스의 임의 데이터를 추출하거나 인증을 우회함.
- 확인 방법: 입력 필드에 특수문자(
', ", ;)를 주입하여 서버의 응답 변화(에러 발생 또는 응답 지연)를 관찰함.
코드 예제: 페이로드 및 응답 비교
1. 공격 페이로드 (Payload)
-- 인증 우회 시도
' OR '1'='1' --
2. 응답 비교
| 응답 유형 | HTTP 상태 코드 | 결과 분석 | 판단 |
| :--- | :---: | :--- | :---: |
| 정상 응답 | 401 Unauthorized | "아이디 또는 비밀번호가 틀렸습니다." | Safe |
| 비정상 응답 | 302 Found | 로그인 성공 후 메인 페이지로 리다이렉트 | Vulnerable |
| 에러 응답 | 500 Internal Server Error | "SQL syntax error near... " (DB 에러 노출) | Vulnerable |
5. 결과 분석 및 보고
발견된 취약점은 단순한 나열이 아니라, 비즈니스 영향도에 따른 위험도 산정(Risk Rating) 과정이 필수적이다.
위험도 산정 방식
WSTG는 일반적으로 가능성(Likelihood)과 영향도(Impact)의 조합으로 위험도를 결정한다.
- 가능성: 공격자의 기술 수준, 공격 경로의 노출 정도, 기존 보안 컨트롤의 존재 여부.
- 영향도: 데이터 유출 규모, 서비스 중단 가능성, 기업 이미지 훼손 정도.
효과적인 리포트 구성 요소
- 취약점 명칭 및 ID: (예: WSTG-INPV-01 SQL Injection)
- 위험 등급: (Critical / High / Medium / Low)
- 취약 지점: URL, 파라미터, HTTP 메서드.
- 재현 경로 (PoC): 공격 단계별 상세 설명 및 스크린샷.
- 대응 방안: 시큐어 코딩 가이드 및 설정 변경 방법.
6. 활용 및 연계 도구
WSTG는 도구 독립적인 가이드라인이지만, 효율적인 수행을 위해 다양한 보안 도구와의 병행 사용을 권장한다.
카테고리별 추천 도구 매핑
| 테스트 카테고리 |
추천 도구 |
용도 |
| 정보 수집 |
Nmap, Amass, FFuf |
포트 스캔, 서브도메인 및 디렉토리 탐색 |
| 입력값 검증 |
Burp Suite, OWASP ZAP, sqlmap |
프록시 분석, 자동화된 취약점 스캔 및 익스플로잇 |
| 인증/세션 |
Burp Suite (Sequencer) |
세션 토큰의 무작위성 분석 및 조작 |
| 암호화/설정 |
SSL Labs, Testssl.sh |
SSL/TLS 설정 및 암호화 스위트 검증 |
7. 결론 및 참고 문헌
OWASP Testing Guide는 단순한 체크리스트를 넘어 웹 보안 테스트의 표준 프로세스를 정립한 프레임워크이다. 이를 통해 보안 전문가는 누락 없는 점검을 수행할 수 있으며, 개발자는 구체적인 테스트 케이스를 통해 보안 결함을 조기에 수정할 수 있다. 급변하는 웹 환경에 대응하기 위해 WSTG의 최신 업데이트를 지속적으로 모니터링하고 조직의 환경에 맞게 커스터마이징하여 활용하는 것이 중요하다.
참고 문헌:
- OWASP Web Security Testing Guide v4.2 Official Documentation
- OWASP Top 10 (2021) Project
- NIST Special Publication 800-115 (Technical Guide to Information Security Testing and Assessment)
부록
부록 1. OWASP Top 10 매핑 표
WSTG는 OWASP Top 10의 개별 항목을 검증하기 위한 구체적인 체크리스트 역할을 한다.
| OWASP Top 10 (2021) |
WSTG 관련 카테고리 |
주요 테스트 ID (예시) |
| A01: Broken Access Control |
인증, 세션 관리, 비즈니스 로직 |
WSTG-AUTH, WSTG-SESS, WSTG-BUSL |
| A02: Cryptographic Failures |
암호화 테스트 |
WSTG-CRYP |
| A03: Injection |
입력 데이터 검증 테스트 |
WSTG-INPV |
| A04: Insecure Design |
비즈니스 로직, 구성 관리 |
WSTG-BUSL, WSTG-CONF |
| A05: Security Misconfiguration |
구성 및 배포 관리 테스트 |
WSTG-CONF |
| A06: Vulnerable and Outdated Components |
정보 수집, 구성 관리 |
WSTG-INFO, WSTG-CONF |
| A07: Identification and Authentication Failures |
인증 테스트 |
WSTG-AUTH |
| A08: Software and Data Integrity Failures |
입력 데이터 검증, 구성 관리 |
WSTG-INPV, WSTG-CONF |
| A09: Security Logging and Monitoring Failures |
에러 처리, 구성 관리 |
WSTG-ERR, WSTG-CONF |
| A10: Server-Side Request Forgery (SSRF) |
입력 데이터 검증 테스트 |
WSTG-INPV-11 |
부록 2. 실제 테스트 체크리스트 템플릿
실무에서 사용할 수 있는 간이 체크리스트 양식이다.
| ID |
테스트 항목 |
점검 내용 |
결과 (P/F/N/A) |
위험도 |
비고 |
| AUTH-01 |
기본 계정 점검 |
관리자 페이지에 admin/admin 등 기본 계정이 존재하는가? |
|
High |
|
| SESS-01 |
세션 타임아웃 |
일정 시간 미사용 시 세션이 자동으로 만료되는가? |
|
Medium |
|
| INPV-01 |
XSS 검증 |
입력창에 <script> 태그 주입 시 필터링되는가? |
|
High |
|
| CONF-01 |
디렉토리 리스팅 |
서버 설정 오류로 파일 목록이 브라우저에 노출되는가? |
|
Low |
|
| CRYP-01 |
HTTPS 강제 적용 |
HTTP 요청 시 HTTPS로 자동 리다이렉트 되는가? |
|
Medium |
|
(P: Pass, F: Fail, N: Not Applicable, A: Action Required)
# OWASP Testing Guide (OTG)
**OWASP Testing Guide**(정식 명칭: OWASP Web Security Testing Guide, WSTG)는 웹 애플리케이션 및 API의 보안 취약점을 체계적으로 식별하고 검증하기 위해 설계된 포괄적인 오픈 소스 보안 테스트 프레임워크이다.
## 1. 개요
OWASP Testing Guide(이하 WSTG)는 전 세계 보안 전문가, 모의해킹 전문가(Penetration Tester), 개발자가 웹 애플리케이션의 보안성을 평가할 때 사용할 수 있는 표준 방법론을 제공한다. 단순히 개별 취약점을 찾는 것을 넘어, 정보 수집부터 결과 보고에 이르는 전체적인 테스트 라이프사이클을 정의함으로써 테스트의 일관성과 재현성을 보장하는 것을 목적으로 한다.
최신 릴리스인 **WSTG v4.2 기준**으로는 현대적인 웹 아키텍처의 변화를 반영하여 다음과 같은 사항들이 업데이트되었다.
- **API 보안 강화**: REST, GraphQL 등 현대적 API 인터페이스에 대한 테스트 케이스 확장.
- **클라우드 네이티브 환경 반영**: 컨테이너 및 서버리스 환경에서 발생할 수 있는 설정 오류 점검 항목 추가.
- **최신 공격 벡터 업데이트**: 최신 브라우저 보안 정책(CSP, CORS 등) 및 최신 인증 프로토콜(OAuth 2.0, OIDC)에 대한 검증 절차 세분화.
**관련 링크:**
- [OWASP WSTG 공식 문서](https://owasp.org/www-project-web-security-testing-guide/)
- [OWASP WSTG GitHub 저장소](https://github.com/OWASP/WSTG)
## 2. 테스트 프레임워크 및 방법론
WSTG는 체계적인 접근을 위해 단계별 테스트 프로세스를 채택하고 있다. 이는 무작위적인 공격 시도가 아닌, 대상 시스템에 대한 이해를 바탕으로 취약점을 도출하는 분석적 접근 방식이다.
### 테스트 단계별 주요 활동
| 단계 | 설명 | 주요 활동 | 목표 |
| :--- | :--- | :--- | :--- |
| **정보 수집** | 대상 애플리케이션의 기술 스택, 네트워크 구조, 숨겨진 엔드포인트 등을 파악 | 포트 스캐닝, 디렉토리 리스팅, 기술 스택 식별 | 대상 시스템의 전체적인 맵핑 및 공격 경로 파악 |
| **분석** | 수집된 정보를 바탕으로 공격 표면(Attack Surface)을 정의하고 잠재적 취약 지점을 식별 | 비즈니스 로직 분석, 데이터 흐름 분석 | 취약점이 발생할 가능성이 높은 고위험 지점 선정 |
| **취약점 탐색** | 정의된 테스트 케이스를 적용하여 실제 취약점이 존재하는지 확인 | 페이로드 주입, 인증 우회 시도, 설정 오류 확인 | 실제 익스플로잇 가능 여부 및 영향도 검증 |
| **보고** | 발견된 취약점의 위험도를 산정하고 대응 방안을 제시 | 위험도 산정, PoC(Proof of Concept) 작성 | 관리자 및 개발자에게 수정 방안 제시 및 조치 유도 |
## 3. 주요 테스트 카테고리
WSTG는 웹 애플리케이션의 기능을 기반으로 테스트 영역을 세분화하여 정의한다.
- **정보 수집 (Information Gathering)**: DNS 분석, 서버 배너 확인, 공개된 소스코드 분석.
- **구성 및 배포 관리 테스트 (Configuration and Deployment Management Testing)**: 기본 계정 사용 여부, 불필요한 서비스 활성화, HTTP 헤더 설정(HSTS, CSP 등).
- **인증 테스트 (Identity Management Testing)**: 비밀번호 정책, 다요소 인증(MFA) 우회, 계정 열거(Account Enumeration).
- **세션 관리 테스트 (Session Management Testing)**: 세션 타임아웃, 세션 고정(Session Fixation), 안전하지 않은 쿠키 속성.
- **입력 데이터 검증 테스트 (Input Validation Testing)**: SQL Injection, XSS(Cross-Site Scripting), OS Command Injection.
- **에러 처리 테스트 (Error Handling Testing)**: 상세 에러 메시지를 통한 정보 유출(Information Leakage).
- **암호화 테스트 (Cryptography Testing)**: 취약한 암호화 알고리즘 사용, 전송 중 데이터 평문 노출.
- **비즈니스 로직 테스트 (Business Logic Testing)**: 결제 금액 조작, 권한 밖의 기능 접근, 프로세스 우회.
### WSTG 테스트 맵 (v4.2)

*(참고: 위 이미지는 WSTG의 전체 테스트 구조를 시각화한 맵이다.)*
## 4. 테스트 수행 절차 및 기법
WSTG의 각 테스트 케이스는 **[WSTG-카테고리 약어-번호]** 형태의 고유 ID를 가지며, 이를 통해 표준화된 추적이 가능하다. 각 항목은 **[테스트 ID $\rightarrow$ 설명 $\rightarrow$ 테스트 방법 $\rightarrow$ 판단 기준]**의 구조로 수행된다.
### 테스트 시나리오 예시: SQL Injection
- **목표**: 입력값 검증 미흡을 이용하여 데이터베이스의 임의 데이터를 추출하거나 인증을 우회함.
- **확인 방법**: 입력 필드에 특수문자(`'`, `"`, `;`)를 주입하여 서버의 응답 변화(에러 발생 또는 응답 지연)를 관찰함.
#### 코드 예제: 페이로드 및 응답 비교
**1. 공격 페이로드 (Payload)**
```sql
-- 인증 우회 시도
' OR '1'='1' --
```
**2. 응답 비교**
| 응답 유형 | HTTP 상태 코드 | 결과 분석 | 판단 |
| :--- | :---: | :--- | :---: |
| **정상 응답** | 401 Unauthorized | "아이디 또는 비밀번호가 틀렸습니다." | `Safe` |
| **비정상 응답** | 302 Found | 로그인 성공 후 메인 페이지로 리다이렉트 | `Vulnerable` |
| **에러 응답** | 500 Internal Server Error | "SQL syntax error near... " (DB 에러 노출) | `Vulnerable` |
## 5. 결과 분석 및 보고
발견된 취약점은 단순한 나열이 아니라, 비즈니스 영향도에 따른 **위험도 산정(Risk Rating)** 과정이 필수적이다.
### 위험도 산정 방식
WSTG는 일반적으로 **가능성(Likelihood)**과 **영향도(Impact)**의 조합으로 위험도를 결정한다.
- **가능성**: 공격자의 기술 수준, 공격 경로의 노출 정도, 기존 보안 컨트롤의 존재 여부.
- **영향도**: 데이터 유출 규모, 서비스 중단 가능성, 기업 이미지 훼손 정도.
### 효과적인 리포트 구성 요소
1. **취약점 명칭 및 ID**: (예: WSTG-INPV-01 SQL Injection)
2. **위험 등급**: (Critical / High / Medium / Low)
3. **취약 지점**: URL, 파라미터, HTTP 메서드.
4. **재현 경로 (PoC)**: 공격 단계별 상세 설명 및 스크린샷.
5. **대응 방안**: 시큐어 코딩 가이드 및 설정 변경 방법.
## 6. 활용 및 연계 도구
WSTG는 도구 독립적인 가이드라인이지만, 효율적인 수행을 위해 다양한 보안 도구와의 병행 사용을 권장한다.
### 카테고리별 추천 도구 매핑
| 테스트 카테고리 | 추천 도구 | 용도 |
| :--- | :--- | :--- |
| **정보 수집** | Nmap, Amass, FFuf | 포트 스캔, 서브도메인 및 디렉토리 탐색 |
| **입력값 검증** | Burp Suite, OWASP ZAP, sqlmap | 프록시 분석, 자동화된 취약점 스캔 및 익스플로잇 |
| **인증/세션** | Burp Suite (Sequencer) | 세션 토큰의 무작위성 분석 및 조작 |
| **암호화/설정** | SSL Labs, Testssl.sh | SSL/TLS 설정 및 암호화 스위트 검증 |
## 7. 결론 및 참고 문헌
OWASP Testing Guide는 단순한 체크리스트를 넘어 웹 보안 테스트의 표준 프로세스를 정립한 프레임워크이다. 이를 통해 보안 전문가는 누락 없는 점검을 수행할 수 있으며, 개발자는 구체적인 테스트 케이스를 통해 보안 결함을 조기에 수정할 수 있다. 급변하는 웹 환경에 대응하기 위해 WSTG의 최신 업데이트를 지속적으로 모니터링하고 조직의 환경에 맞게 커스터마이징하여 활용하는 것이 중요하다.
**참고 문헌:**
- OWASP Web Security Testing Guide v4.2 Official Documentation
- OWASP Top 10 (2021) Project
- NIST Special Publication 800-115 (Technical Guide to Information Security Testing and Assessment)
# 부록
### 부록 1. OWASP Top 10 매핑 표
WSTG는 OWASP Top 10의 개별 항목을 검증하기 위한 구체적인 체크리스트 역할을 한다.
| OWASP Top 10 (2021) | WSTG 관련 카테고리 | 주요 테스트 ID (예시) |
| :--- | :--- | :--- |
| **A01: Broken Access Control** | 인증, 세션 관리, 비즈니스 로직 | WSTG-AUTH, WSTG-SESS, WSTG-BUSL |
| **A02: Cryptographic Failures** | 암호화 테스트 | WSTG-CRYP |
| **A03: Injection** | 입력 데이터 검증 테스트 | WSTG-INPV |
| **A04: Insecure Design** | 비즈니스 로직, 구성 관리 | WSTG-BUSL, WSTG-CONF |
| **A05: Security Misconfiguration** | 구성 및 배포 관리 테스트 | WSTG-CONF |
| **A06: Vulnerable and Outdated Components** | 정보 수집, 구성 관리 | WSTG-INFO, WSTG-CONF |
| **A07: Identification and Authentication Failures** | 인증 테스트 | WSTG-AUTH |
| **A08: Software and Data Integrity Failures** | 입력 데이터 검증, 구성 관리 | WSTG-INPV, WSTG-CONF |
| **A09: Security Logging and Monitoring Failures** | 에러 처리, 구성 관리 | WSTG-ERR, WSTG-CONF |
| **A10: Server-Side Request Forgery (SSRF)** | 입력 데이터 검증 테스트 | WSTG-INPV-11 |
### 부록 2. 실제 테스트 체크리스트 템플릿
실무에서 사용할 수 있는 간이 체크리스트 양식이다.
| ID | 테스트 항목 | 점검 내용 | 결과 (P/F/N/A) | 위험도 | 비고 |
| :--- | :--- | :--- | :---: | :---: | :--- |
| **AUTH-01** | 기본 계정 점검 | 관리자 페이지에 `admin/admin` 등 기본 계정이 존재하는가? | | High | |
| **SESS-01** | 세션 타임아웃 | 일정 시간 미사용 시 세션이 자동으로 만료되는가? | | Medium | |
| **INPV-01** | XSS 검증 | 입력창에 `<script>` 태그 주입 시 필터링되는가? | | High | |
| **CONF-01** | 디렉토리 리스팅 | 서버 설정 오류로 파일 목록이 브라우저에 노출되는가? | | Low | |
| **CRYP-01** | HTTPS 강제 적용 | HTTP 요청 시 HTTPS로 자동 리다이렉트 되는가? | | Medium | |
*(P: Pass, F: Fail, N: Not Applicable, A: Action Required)*