
헤드리스 브라우저를 통한 WAF 우회 기능을 갖춘 비동기 WordPress 보안 스캐너입니다. 플러그인, 테마, 사용자 및 멀티사이트 설치를 열거하며, 스텔스 핑거프린팅과 WPScan 취약점 통합을 제공합니다.
█ █░ ██▓███ ▒██ ██▒ ██▀███ ▄▄▄ ▓██ ██▓ ▓█░ █ ░█░▓██░ ██▒ ▒▒ █ █ ▒░▓██ ▒ ██▒▒████▄ ▒██ ██▒ ▒█░ █ ░█ ▓██░ ██▓▒ ░░ █ ░▓██ ░▄█ ▒▒██ ▀█▄ ▒██ ██░ ░█░ █ ░█ ▒██▄█▓▒ ▒ ░ █ █ ▒ ▒██▀▀█▄ ░██▄▄▄▄██ ░ ▐██▓░ ░░██▒██▓ ▒██▒ ░ ░ ▒██▒ ▒██▒░██▓ ▒██▒ ▓█ ▓██▒ ░ ██▒▓░ ░ ▓░▒ ▒ ▒▓▒░ ░ ░ ▒▒ ░ ░▓ ░░ ▒▓ ░▒▓░ ▒▒ ▓▒█░ ██▒▒▒ ▒ ░ ░ ░▒ ░ ░░ ░▒ ░ ░▒ ░ ▒░ ▒ ▒▒ ░▓██ ░▒░ ░ ░ ░░ ░ ░ ░░ ░ ░ ▒ ▒ ▒ ░░ ░ ░ ░ ░ ░ ░░ ░ ░ ░
WPX — WordPress X-Ray Scanner | WAF Bypass
WPX(WordPress X-Ray)는 Camoufox를 사용하여 Cloudflare 및 WAF 챌린지를 해결하는 보안 스캐너입니다. 해당 세션을 미러링하여 빠르고 비동기적인 플러그인 및 테마 발견, 사용자 열거 및 멀티사이트 탐지를 수행합니다.
참고: WPX는 data.wpscan.org에서 필요한 스캔 메타데이터(지문, 탐지 규칙)를 다운로드합니다.
asyncio 및 curl_cffi로 구축되어 빠른 열거를 수행합니다.wpscan과 유사한 구조화된 터미널 출력을 제공합니다.WPX를 실행하는 가장 쉬운 방법 — Python이나 종속성이 필요하지 않습니다.
docker run ghcr.io/greg-randall/wpx -u https://example.com
docker run -v $(pwd):/output ghcr.io/greg-randall/wpx -u https://example.com -o /output/results.txt
볼륨 없이 WPX는 실행할 때마다 메타데이터를 다시 다운로드합니다. 이를 방지하려면 명명된 볼륨을 마운트하세요:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx -u https://example.com
필요시 수동으로 메타데이터 새로고침:
docker run -v wpx-data:/app/.wpx_data ghcr.io/greg-randall/wpx --update
git clone https://github.com/greg-randall/wpx.git
cd wpx
pip install .
python3 -m camoufox fetch
python3 wpx.py -u https://example.com
python3 wpx.py -u https://example.com --api-key YOUR_API_KEY
상위 순위 플러그인을 특정 수만큼 스캔 (예: 상위 500개):
python3 wpx.py -u https://example.com --plugins-limit 500
생성된 모든 플러그인을 스캔합니다. WPX는 약 110,000개(현재 활성화된 약 55,000개 포함)의 전체 역사적 라이브러리를 탐색하여 대상에서 소프트웨어의 모든 흔적을 찾을 수 있습니다. 경고: 이 작업은 대량의 요청을 수행하며 스레드 수 및 대상의 응답성에 따라 완료하는 데 몇 시간이 걸릴 수 있습니다.
python3 wpx.py -u https://example.com --full-scan
사용자 열거는 자동으로 실행됩니다. 작성자 ID 조사 범위를 제한하거나 완전히 비활성화하려면:
python3 wpx.py -u https://example.com --users-limit 20
python3 wpx.py -u https://example.com --enum-users-disable
무음으로 스캔을 실행하고 ANSI 색상 코드 없이 결과를 파일에 저장합니다:
python3 wpx.py -u https://example.com --quiet --output results.txt
플러그인 목록을 업데이트하고 인기별로 순위를 매기려면:
python3 data/wpx_fetch_plugins.py --sort-by score
출력: data/plugins_active.txt (기본 상위 5000개) 및 data/plugins_dead.txt (기본 상위 2500개).
한도를 변경하려면:
python3 data/wpx_fetch_plugins.py --active-limit 10000 --dead-limit 5000
data/ 디렉토리에는 처리된 플러그인 데이터셋과 유지 관리 도구가 포함되어 있습니다:
data/plugins_active.txt: 인기도 점수(설치 수 × 다운로드 수의 기하 평균)로 정렬된 상위 활성 플러그인 슬러그.data/plugins_dead.txt: 과거 설치 수(이전 카탈로그 실행 또는 Archive.org 스냅샷에서 가져옴)로 정렬된 상위 종료/제거 플러그인 슬러그.data/plugins_catalog.json: 활성 플러그인에 대한 캐시된 메타데이터.data/plugins_dead.jsonl: 마지막으로 알려진 설치 수를 포함한 종료 플러그인 메타데이터의 추가 전용 캐시. 로드 시 새 항목이 이전 항목을 덮어씁니다(마지막 쓰기 승리).data/archive.org-cache/: Wayback Machine의 원시 HTML 스냅샷으로, 첫 번째 카탈로그 실행 전에 종료된 플러그인의 과거 설치 수를 복구하는 데 사용됩니다.data/wpx_fetch_plugins.py: WordPress.org API, SVN 저장소 및 Archive.org를 결합하여 플러그인 목록을 구축 및 보강하는 페처.wpx.py)data/wpx_fetch_plugins.py)이 도구는 승인된 보안 테스트에만 사용됩니다. 개발자는 오용이나 손해에 대해 책임을 지지 않습니다.
| 플래그 | 설명 |
|---|
-u, --url | 대상 WordPress URL (필수). |
--api-key | WPScan 취약점 데이터베이스 API 키. |
-t, --threads | 스캔을 위한 동시 스레드 수 (기본값: 20). |
--plugins-limit | 스캔할 플러그인 수 제한 (예: 500, 5000). |
--full-scan | 사용 가능한 모든 플러그인 슬러그 스캔 (최대 50,000개 이상). |
--update | WPScan 메타데이터 파일 강제 업데이트. |
--no-browser | Camoufox WAF 우회를 건너뛰고 직접 연결. |
--enum-users-disable | 사용자 열거 건너뛰기. |
--users-limit N | ?author=N을 통해 조사할 작성자 ID 수 (기본값: 10). |
--stealth [N] | 요청 간 무작위 지연 추가. 최소 1초, 최대 2×N초 (플래그 설정 시 기본값: 1.5 → 1–3초). 또한 스레드를 3개로 제한. |
--idle-timeout N | N초 동안 서버 응답이 없으면 중단 (기본값: 60, 0 = 비활성화). |
-q, --quiet | 배너, 상태 및 진행 상황 숨기기 — 결과만 표시. |
-o, --output FILE | 출력을 FILE에 쓰기 (일반 텍스트, ANSI 코드 없음). |
| 플래그 | 설명 |
|---|
--sort-by | 활성 플러그인 순위 지정 방법: score (기본값), active_installs, downloaded. |
--active-limit N | plugins_active.txt에 쓸 활성 슬러그 수 (기본값: 5000, 0 = 전체). |
--dead-limit N | plugins_dead.txt에 쓸 종료 슬러그 수 (기본값: 2500, 0 = 전체). |
--force | 카탈로그가 이미 존재해도 모든 것을 다시 가져옵니다. |
--fetch-limit N | API에서 N개의 활성 플러그인을 가져온 후 중지 (0 = 전체). |
--max-age HOURS | 카탈로그가 N시간보다 최신이면 API 가져오기 건너뛰기 (기본값: 24). |