
교육 목적이 아닙니다: STDIO/HTTP/SSE를 지원하는 전문 침투 테스터를 위한 MCP 서버로, nmap, go/dirbuster, nikto, JtR, hashcat, 워드리스트 구축 등이 포함되어 있습니다.
현대적인 전송/인증 지원과 확장된 정찰 도구를 갖춘 전문 침투 테스트 MCP 서버입니다.
@modelcontextprotocol/sdk@^1.26.0으로 업그레이드@modelcontextprotocol/inspector@^0.20.0)에 번들 런처와 함께 유지MCP_TRANSPORT=http)subfinderEnum, httpxProbe, ffufScan, nucleiScan, trafficCapture, hydraBruteforce, privEscAudit, extractionSweeplistEngagementRecords, getEngagementRecordscopeMode=ask), 안전한 템플릿 폴백 포함httpx-toolkit (권장) 또는 검증된 ProjectDiscovery httpx 사용, Python httpx CLI 충돌 방지pentest-mcp inspector)nmapScanrunJohnTheRipperrunHashcatgobusterniktosubfinderEnumhttpxProbeffufScannucleiScantrafficCapturehydraBruteforceprivEscAuditextractionSweepgenerateWordlistnpm install -g pentest-mcp
pentest-mcp
pentest-mcp inspector
Inspector 플래그를 직접 전달할 수 있습니다:
pentest-mcp inspector --help
MCP_TRANSPORT=http MCP_SERVER_HOST=0.0.0.0 MCP_SERVER_PORT=8000 pentest-mcp
MCP_TRANSPORT=sse MCP_SERVER_PORT=8001 pentest-mcp
stdio: 로컬 MCP 클라이언트의 기본값입니다.http: 현대적인 네트워크 전송 방식입니다. 권장됩니다.sse: 호환성 전용입니다. 폐기되었으며 향후 주요 릴리스에서 제거될 예정입니다.pentest-mcp inspector는 번들된 @modelcontextprotocol/inspector CLI를 실행합니다.node <this-package-entrypoint> stdioMCP_TRANSPORT=http (또는 필요한 경우 sse)를 사용할 때 다음 환경 변수를 설정하세요:
MCP_AUTH_ENABLED=true
MCP_AUTH_MODE=bearer
MCP_AUTH_SCOPES=read,write
MCP_AUTH_AUDIENCE=
MCP_OIDC_ISSUER=https://issuer.example.com
MCP_OIDC_JWKS_URL=https://issuer.example.com/.well-known/jwks.json
# 선택적 대체/백업 검증 모드:
MCP_OIDC_INTROSPECTION_URL=https://issuer.example.com/oauth/introspect
MCP_OAUTH_CLIENT_ID=...
MCP_OAUTH_CLIENT_SECRET=...
레거시 별칭도 임시로 허용됩니다:
MCP_OAUTH_ENABLEDMCP_OAUTH_PROVIDER_URLMCP_OAUTH_SCOPEScreateClientReport는 이제 SoW 처리 모드를 지원합니다:
scopeMode=ask: MCP elicitation을 통해 사용자에게 프롬프트 표시 (권장)scopeMode=provided: scopeOfWork 값을 직접 사용scopeMode=template: 내장된 일반 승인된 테스트 템플릿 사용elicitation이 거부되거나 사용 불가능한 경우, 보고서는 자동으로 템플릿으로 폴백됩니다.
아직 별도의 파일 업로드 API는 없습니다. 현재 옵션:
{
"tool": "createClientReport",
"arguments": {
"title": "Q1 외부 침투 테스트",
"assessmentType": "external-network",
"scopeMode": "ask"
}
}
scopeOfWork에 직접 붙여넣기{
"tool": "createClientReport",
"arguments": {
"title": "Q1 외부 침투 테스트",
"assessmentType": "external-network",
"scopeMode": "provided",
"scopeOfWork": "승인된 대상: ...\n범위 외: ...\n테스트 기간: ...\n참여 규칙: ..."
}
}
{
"tool": "createClientReport",
"arguments": {
"title": "Q1 외부 침투 테스트",
"assessmentType": "external-network",
"scopeMode": "template"
}
}
recordId=...)을 저장합니다.listEngagementRecords를 사용하여 모든 작업 산출물을 빠르게 가져옵니다.recordId(또는 기본적으로 최신 레코드)에서 보고서를 생성합니다.ask)provided)template)이러한 기능은 침투 테스트 관리 오버헤드를 줄이기 위해 특별히 계획되었습니다.
scopeFilePath 수집 (MCP 호스트의 로컬 파일 경로에서 SoW 로드)scopeDocument 청크 업로드 흐름 (원격 클라이언트를 위해 MCP를 통해 SoW 콘텐츠 직접 전송)recordId)에서 결과 및 보고서 섹션으로 증거 자동 연결nuclei, nikto 등) 간 결과 중복 제거/병합도입 참고 사항:
scopeFilePath와 scopeDocument의 사용이 많을 것으로 예상됩니다. 대부분의 팀이 이미 문서/PDF로 SoW를 관리하고 있으며 반복적인 붙여넣기 및 재포맷 단계를 피하고 싶어하기 때문입니다.{
"tool": "subfinderEnum",
"arguments": {
"domain": "example.com",
"recursive": true,
"allSources": true
}
}
{
"tool": "httpxProbe",
"arguments": {
"targets": ["example.com", "api.example.com"],
"includeTitle": true,
"includeStatusCode": true
}
}
{
"tool": "ffufScan",
"arguments": {
"targetUrl": "https://example.com/FUZZ",
"wordlist": "/usr/share/seclists/Discovery/Web-Content/common.txt",
"threads": 40
}
}
{
"tool": "nucleiScan",
"arguments": {
"targets": ["https://example.com"],
"severities": ["medium", "high", "critical"]
}
}
{
"tool": "trafficCapture",
"arguments": {
"networkInterface": "eth0",
"packetCount": 200,
"bpfFilter": "tcp port 80"
}
}
{
"tool": "hydraBruteforce",
"arguments": {
"target": "10.10.10.20",
"service": "ssh",
"usernameList": "/usr/share/seclists/Usernames/top-usernames-shortlist.txt",
"passwordList": "/usr/share/seclists/Passwords/Common-Credentials/10k-most-common.txt"
}
}
{
"tool": "extractionSweep",
"arguments": {
"targetUrl": "https://target.local/item.php?id=1",
"risk": 2,
"level": 3
}
}
docker-compose --profile http up
docker-compose --profile stdio up
docker-compose --profile sse up
Docker 이미지에 설치되는 항목:
nmap, john, hashcat, gobuster, nikto, ffuf, hydra, sqlmap, tcpdumpsubfinder, httpx + httpx-toolkit 별칭, nucleiPATH에 바이너리가 있는지 확인하세요:
which nmap john hashcat gobuster nikto subfinder httpx-toolkit ffuf nuclei hydra sqlmap tcpdump
httpx-toolkit이 설치되지 않은 경우, 검증된 ProjectDiscovery httpx 바이너리가 대체로 허용됩니다.
승인된 용도로만 사용하세요. 명시적인 서면 허가가 있는 시스템/네트워크에 대해 실행하세요.
마지막 업데이트: 2026-03-23
Model Context Protocol (MCP)은 여전히 도구와 에이전트를 위한 가장 유용한 상호운용성 계층 중 하나입니다. 단점은 대규모 MCP 서버가 많은 도구를 노출할 수 있고, 단순한 도구 호출이 컨텍스트 윈도우를 스키마, 도구 잡담, 관련 없는 호출 추적으로 넘치게 할 수 있다는 점입니다.
실제로 "더 많은 도구"가 항상 "더 나은 결과"를 의미하지는 않습니다. 도구 표면 영역은 토큰 사용을 제한하고 행동을 예측 가능하게 유지하는 실행 패턴과 결합되어야 합니다.
최근 워크플로우는 복잡한 오케스트레이션을 채팅 컨텍스트 밖으로 옮겨 코드 실행 루프로 이동시키는 경향이 있습니다. 이는 반복적인 스키마 토큰을 줄이고 도구 사용을 감사 가능하고 테스트 가능하게 만듭니다.
핵심 참고 자료:
재현 가능하고 노이즈가 적은 MCP 사용을 원하는 사용자는 코드 모드 지향 설정으로 시작하세요:
실용적인 주의사항: 강력한 설정에서도 모델 동작은 공급자와 버전에 따라 여전히 일관성이 없을 수 있습니다. 재시도, 안전장치, 결정론적 폴백을 유지하세요.
고레버리지 패턴 중 하나는 MCP 서버를 호출 가능한 코드 인터페이스와 작업 중심 CLI로 래핑하여 모든 원시 도구를 항상 모델에 노출하지 않는 것입니다.
참고 도구:
이 분야는 빠르게 변화합니다. 지금 이 내용을 읽고 있다면 이 지침의 일부는 이미 구식일 수 있습니다.
프롬프트 인젝션은 도구 사용 에이전트에게 여전히 열린 보안 문제입니다. 관리 가능하지만 "해결된" 상태는 아닙니다.
주요 위험:
결과:
기본 완화:
특별히 확인되지 않은 이상 모든 도구 출력을 신뢰할 수 없는 입력으로 취급하세요.
이 서버는 MCP 프로토콜 버전 2025-11-25 및 SDK @modelcontextprotocol/sdk@^1.27.1을 대상으로 합니다.
listEngagementRecordsgetEngagementRecordcreateClientReportcancelScan| 기능 | 상태 |
|---|
| stdio 전송 | 지원 (기본값) |
| Streamable HTTP 전송 | 지원 (MCP_TRANSPORT=http) |
| SSE 전송 (레거시) | 폐기된 호환성 모드 |
| 도구 어노테이션 | 모든 도구에 title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint 어노테이션 |
| Bearer 인증 (OIDC/JWKS) | 지원 |
| Origin 검증 (HTTP) | MCP_ALLOWED_ORIGINS 설정 시 잘못된 Origin에 대해 403 반환 |
| JSON Schema 2020-12 | Zod 생성 스키마 |
| 구조화된 도구 오류 | 모델 자체 수정을 위한 설명 메시지와 함께 isError 플래그 |
| Elicitation | 보고서 생성에서 SoW 캡처에 사용됨 |