ChromaDB 및 Claude Code용 MCP를 이용한 OWASP Web Security Testing Guide RAG 시스템
**OWASP 웹 보안 테스트 가이드(WSTG)**를 벡터 데이터베이스에 색인화하는 검색 증강 생성(RAG) 시스템으로, REST API와 MCP(Model Context Protocol)를 통해 보안 테스트 방법론에 즉시 접근할 수 있으며 Claude Code와 통합됩니다.
WSTG-INPV-05)로 완전한 테스트 케이스를 검색| 카테고리 | WSTG ID | 설명 |
|---|
| 정보 수집 | WSTG-INFO | 핑거프린팅, 정보 수집, 매핑 |
| 구성 | WSTG-CONF | 서버/플랫폼 구성 테스트 |
| ID 관리 | WSTG-IDNT | 사용자 등록, 계정 프로비저닝 |
| 인증 | WSTG-ATHN | 로그인, 암호 정책, MFA 테스트 |
| 권한 부여 | WSTG-ATHZ | 권한 상승, IDOR, 접근 제어 |
| 세션 관리 | WSTG-SESS | 세션 토큰, 쿠키, 고정 공격 |
| 입력 검증 | WSTG-INPV | SQLi, XSS, 명령 삽입, SSTI |
| 오류 처리 | WSTG-ERRH | 오류 메시지, 스택 트레이스 |
| 암호화 | WSTG-CRYP | TLS, 암호화, 해싱 |
| 비즈니스 로직 | WSTG-BUSL | 워크플로우 우회, 파일 업로드 |
| 클라이언트 측 | WSTG-CLNT | DOM XSS, 클릭재킹, WebSocket |
| API 테스트 | WSTG-APIT | REST, GraphQL, API 보안 |
cd RAG_runner
pip install -r requirements.txt
python3 build_database.py
이 작업은 다음을 수행합니다:
python3 -m server.http_server
서버는 http://localhost:5004에서 실행됩니다.
# 상태 확인
curl http://localhost:5004/health
# SQL 인젝션 테스트 방법론 검색
curl -X POST http://localhost:5004/search \
-H "Content-Type: application/json" \
-d '{"query": "SQL injection testing methodology"}'
# 특정 WSTG 테스트 케이스 조회
curl http://localhost:5004/wstg/WSTG-INPV-05
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/health | GET | 상태 확인 |
/info | GET | 데이터베이스 통계 |
/list | GET | 모든 문서 목록 조회 |
/categories | GET | 카테고리 및 WSTG ID 목록 조회 |
/doc/{id} | GET | ID로 문서 조회 |
/wstg/{id} | GET | WSTG ID에 대한 모든 청크 조회 |
/search | POST | 의미 기반 검색 |
{
"query": "SQL injection testing",
"n_results": 5,
"category": "input_validation",
"wstg_id": "WSTG-INPV-05"
}
~/.claude.json에 추가:
{
"mcpServers": {
"owasp-wstg-rag": {
"command": "python3",
"args": ["/path/to/OWASP_WSTG_Rag/RAG_runner/server/mcp_client.py"],
"env": {
"WSTG_RAG_URL": "http://localhost:5004"
}
}
}
}
| 도구 | 설명 |
|---|---|
search_wstg | 테스트 방법론을 위해 WSTG 검색 |
search_test_methodology | 방법론 가이드 검색 |
search_test_objectives | 테스트 목표 검색 |
get_wstg_test_case | WSTG ID로 완전한 테스트 케이스 조회 |
get_wstg_document | ID로 문서 조회 |
list_wstg_categories | 모든 카테고리 및 WSTG ID 목록 조회 |
wstg_health | 상태 확인 |
wstg_info | 데이터베이스 통계 |
# SQL 인젝션 테스트 방법론 검색
search_wstg("SQL injection testing methodology")
# 특정 테스트 케이스 조회
get_wstg_test_case("WSTG-INPV-05")
# 카테고리 내에서 검색
search_wstg("authentication bypass", category_filter="authentication")
# IDOR에 대한 테스트 목표 검색
search_test_objectives("IDOR insecure direct object reference")
OWASP_WSTG_Rag/
├── README.md
├── CLAUDE.md # Claude Code 프로젝트 가이드
├── raw_data/ # OWASP WSTG HTML 소스 파일
│ ├── 01-Information_Gathering/
│ ├── 02-Configuration_and_Deployment_Management_Testing/
│ ├── 03-Identity_Management_Testing/
│ ├── 04-Authentication_Testing/
│ ├── 05-Authorization_Testing/
│ ├── 06-Session_Management_Testing/
│ ├── 07-Input_Validation_Testing/
│ ├── 08-Testing_for_Error_Handling/
│ ├── 09-Testing_for_Weak_Cryptography/
│ ├── 10-Business_Logic_Testing/
│ ├── 11-Client-side_Testing/
│ └── 12-API_Testing/
└── RAG_runner/
├── build_database.py # 주요 구축 파이프라인
├── requirements.txt
├── parsers/
│ └── wstg_parser.py # WSTG용 HTML 파서
├── chunking/
│ └── chunker.py # 의미 기반 청크 분할
├── server/
│ ├── vector_store.py # ChromaDB 래퍼
│ ├── http_server.py # REST API 서버
│ └── mcp_client.py # Claude Code용 MCP 도구
└── data/
├── processed/ # 중간 JSON 파일
└── chroma_db/ # 벡터 데이터베이스
┌─────────────────────────────────────────────────────────────────┐
│ OWASP WSTG HTML 파일 │
│ (raw_data/*.html) │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ wstg_parser.py │
│ HTML 파싱 → 구조화된 JSON │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ chunker.py │
│ RAG를 위한 의미 기반 청크 생성 │
└────────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ChromaDB 벡터 저장소 │
│ (data/chroma_db/) │
└────────────────────────────┬────────────────────────────────────┘
│
┌──────────────┴──────────────┐
▼ ▼
┌──────────────────────────┐ ┌──────────────────────────┐
│ http_server.py │ │ mcp_client.py │
│ REST API :5004 │ │ Claude Code용 MCP │
│ │ │ │
│ GET /health │ │ search_wstg() │
│ GET /info │ │ get_wstg_test_case() │
│ GET /wstg/{id} │ │ search_test_methodology │
│ POST /search │ │ list_wstg_categories() │
└──────────────────────────┘ └──────────────────────────┘
Claude Code와 통합하여 보안 평가 중 OWASP 테스트 방법론에 즉시 접근:
사용자: "SQL 인젝션 테스트는 어떻게 하나요?"
Claude: [WSTG RAG 질의]
→ WSTG-INPV-05 방법론 반환:
- 테스트 목표
- 단계별 테스트 절차
- 예시 페이로드
- 사용할 도구
REST API를 사용하여 WSTG 방법론을 자동화된 보안 파이프라인에 통합:
import requests
# 현재 테스트에 대한 방법론 조회
response = requests.post('http://localhost:5004/search', json={
'query': 'session fixation testing',
'n_results': 3
})
methodology = response.json()['results']
교육이나 CTF 챌린지 중 보안 테스트 방법론에 대한 빠른 참조 자료.
이 프로젝트는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 라이선스로 제공되는 OWASP 웹 보안 테스트 가이드의 콘텐츠를 사용합니다.