
WRecon은 워드프레스의 취약점 인식 및 블랙박스 정보 수집을 위한 도구입니다.
WPRecon은 Go로 제작된 현대적인 워드프레스 보안 정보 수집 도구로, 보안 엔지니어가 워드프레스 설치 환경에서 취약점, 잘못된 구성, 정보 노출 문제를 식별할 수 있도록 도와줍니다.
하드코딩된 검사로 이루어진 기존 취약점 스캐너와 달리 WPRecon은 YAML 기반 템플릿 아키텍처를 사용하여 다음을 가능하게 합니다:
| 기능 | 설명 |
|---|---|
| 병렬 스캔 | 동시 요청을 위한 설정 가능한 작업자 풀 (기본값: 10개) |
| 속도 제한 | 네트워크 친화적인 내장 요청 제한 (기본값: 50 req/s) |
| 자동 재시도 | 실패한 HTTP 요청에 대한 자동 재시도 로직 |
| 핫 리로드 템플릿 | 재컴파일 필요 없음 - 템플릿 추가 후 바로 스캔 |
| 변수 해석 | 동적 변수: {{BaseURL}}, {{Timestamp}}, {{RandomInt}} |
| 다중 형식 출력 | 사람이 읽기 쉬운 테이블과 구조화된 JSON |
| CLI 및 API 모드 | 명령줄 및 REST API 인터페이스 모두 지원 |
| 심각도 수준 | 발견 항목을 정보, 낮음, 중간, 높음, 심각으로 분류 |
응답에서 양성 히트를 식별합니다:
매칭된 응답에서 실행 가능한 데이터를 추출합니다:
150개 이상의 프로덕션 준비 템플릿으로 다음을 지원합니다:
# 저장소 클론
git clone https://github.com/ffx64/wprecon.git
cd wprecon
# 바이너리 빌드
go build -o wprecon ./cmd/wprecon/main.go
# PATH로 이동 (선택 사항)
sudo mv wprecon /usr/local/bin/
go install github.com/ffx64/wprecon/cmd/wprecon@latest
docker build -t wprecon .
docker run wprecon scan https://example.com
사용 가능한 모든 템플릿으로 워드프레스 웹사이트 스캔:
wprecon scan https://example.com
선택한 템플릿만 실행:
wprecon scan https://example.com -t wordpress-detection,plugin-detection,user-enumeration
# 자동화를 위한 JSON 출력
wprecon scan https://example.com --output json
# 보기 좋게 출력된 테이블 (기본값)
wprecon scan https://example.com --output table
# 20개의 동시 작업자와 100 req/s 사용
wprecon scan https://example.com --workers 20 --rate-limit 100
wprecon list-templates
wprecon --help
스캔 실행 시 WPRecon은 상세한 발견 항목을 생성합니다:
테이블 형식:
ID | 템플릿 | 이름 | 심각도 | 대상 | 증거
---------------------|------------------------|--------------------------|----------|---------------------|----------
finding_001 | wordpress-version | WordPress 버전 발견 | 정보 | example.com | 6.2.1
finding_002 | plugin-detection | 플러그인 탐지 | 낮음 | example.com | Yoast SEO 16.0
finding_003 | security-headers | 보안 헤더 누락 | 중간 | example.com | X-Frame-Options
JSON 형식:
{
"scan_id": "scan_uuid_001",
"timestamp": "2026-04-10T14:37:00Z",
"target": "https://example.com",
"total_findings": 15,
"findings": [
{
"id": "finding_uuid_001",
"template_id": "wordpress-detection",
"name": "워드프레스 설치 탐지됨",
"description": "대상에서 워드프레스 CMS 설치 식별됨",
"severity": "info",
"cvss_score": 0.0,
"matched_url": "https://example.com/wp-admin/",
"http_method": "GET",
"status_code": 200,
"response_time_ms": 245,
"evidence": {
"version": "6.2.1",
"wp_version_header": "6.2.1"
},
"timestamp": "2026-04-10T14:37:00Z",
"remediation": "워드프레스를 최신 버전으로 유지하세요"
}
]
}
wprecon/
├── cmd/wprecon/
│ └── main.go # CLI 진입점
├── internal/
│ ├── app/
│ │ ├── cli.go # CLI 명령어 핸들러
│ │ └── api.go # REST API 핸들러
│ ├── engine/
│ │ ├── scanner.go # 스캔 오케스트레이션
│ │ ├── worker_pool.go # 병렬화 엔진
│ │ ├── context.go # 스캔 컨텍스트 관리
│ │ ├── logger.go # 로깅 유틸리티
│ │ └── rate_limit.go # 속도 제한
│ ├── executor/
│ │ ├── http_executor.go # HTTP 클라이언트
│ │ ├── request_builder.go # 요청 구성
│ │ └── variables.go # 변수 해석
│ ├── matchers/
│ │ └── matchers.go # 응답 매칭 로직
│ ├── extractors/
│ │ └── extractors.go # 데이터 추출
│ ├── templates/
│ │ ├── loader.go # 템플릿 발견
│ │ └── parser.go # YAML 파싱
│ ├── pipeline/
│ │ └── pipeline.go # 스캔 워크플로
│ └── domain/
│ ├── template.go # 데이터 모델
│ ├── finding.go
│ ├── http.go
│ ├── matcher.go
│ └── extractor.go
├── templates/ # YAML 템플릿 라이브러리
│ ├── wordpress/ # 워드프레스 전용
│ ├── cves/ # CVE 탐지
│ ├── exposures/ # 정보 노출
│ ├── common/ # 일반 점검
│ └── waf/ # WAF 탐지
└── go.mod # 의존성
┌─────────────────────────────────────────────┐
│ 사용자 인터페이스 (CLI/API) │
└─────────────────────────────────────────────┘
│
├─→ 템플릿 로더
├─→ 속도 제한기
└─→ 작업자 풀 관리자
│
▼
┌─────────────────────────────────────────────┐
│ 스캔 파이프라인 엔진 │
│ ┌────────→ 요청 빌더 │
│ │ ┌────────→ HTTP 실행기 │
│ │ │ ┌────────→ 매처 (5가지 유형) │
│ │ │ │ ┌────────→ 추출기 (2가지 유형) │
│ │ │ │ │ ┌────────→ 발견 보고서 │
│ │ │ │ │ │ │
│ ▼ ▼ ▼ ▼ ▼ │
│ 템플릿 → 요청 → 응답 → 발견 항목 │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ 출력 포맷터 및 저장소 │
│ (JSON, 표, 보고서 생성) │
└─────────────────────────────────────────────┘
템플릿은 WPRecon이 특정 취약점이나 정보를 스캔하는 방법을 정의하는 YAML 파일입니다.
id: wordpress-version-detection
name: WordPress 버전 탐지
description: readme.html에서 WordPress 버전을 탐지하고 추출합니다.
severity: info
author: WPRecon 팀
requests:
- url: "{{BaseURL}}/readme.html"
method: GET
matchers:
- type: status
status:
- 200
- type: word
words:
- "WordPress"
extractors:
- type: regex
regex:
- 'Version (\d+\.\d+\.\d+)'
| 템플릿 | 목적 |
|---|---|
wordpress-detection | 워드프레스 설치 탐지 |
wordpress-version | 워드프레스 버전 식별 |
plugins.yaml | 설치된 플러그인 탐지 |
themes.yaml | 설치된 테마 탐지 |
users.yaml | 워드프레스 사용자 열거 |