
Scans WordPress Forminator for CVE-2026-15748 unauthenticated RCE. Detects vulnerable sites, crawls forms, extracts nonces, runs safe upload tests. WordPress Forminator에서 CVE-2026-15748 인증되지 않은 RCE를 스캔합니다. 취약한 사이트를 탐지하고, 양식을 크롤링하며, nonce를 추출하고, 안전한 업로드 테스트를 실행합니다.
제작: Yora
교육 및 승인된 테스트 전용
CVE-2026-15748은 WordPress의 Forminator 플러그인과 관련된 취약점입니다.
이 도구는 Forminator를 사용하는 WordPress 설치에 대한 보안 연구 및 승인된 테스트를 돕기 위해 제작되었습니다.
스캐너는 WordPress 탐지, Forminator 검색, 버전 식별, 페이지 크롤링, 특정 양식 구성 확인 등 여러 단계의 검사를 수행합니다.
⚠️ 이 도구는 소유하고 있거나 테스트 허가를 받은 웹사이트, 서버, 랩 또는 시스템에서만 사용하십시오.
| 기능 | 설명 |
|---|---|
| 🔎 WordPress 탐지 | 대상이 WordPress를 사용하는지 탐지 |
| 🔌 Forminator 탐지 | Forminator 플러그인 설치 탐지 |
| 🏷️ 버전 탐지 | 사용 가능한 소스에서 Forminator 버전 가져오기 |
| 📊 버전 확인 | 버전을 1.56.1 한도와 비교 |
| 🕷️ 웹사이트 크롤링 | 대상에서 관련 페이지 검색 |
| 🗺️ 사이트맵 탐지 | 여러 WordPress 사이트맵 확인 |
| 📝 양식 탐지 | 특정 Forminator 양식 탐지 |
| 🔐 Nonce 탐지 | Forminator nonce 찾기 시도 |
| ⚡ 멀티스레딩 | 여러 대상을 동시에 지원 |
| 🔁 재시도 | 실패한 요청 재시도 |
| ⏱️ 요청 지연 | 요청 간 무작위 지연 사용 |
| 📄 상세 결과 | 검사 결과를 파일로 저장 |
도구에 필요한 것:
requestspackagingurllib3의존성 설치:
pip install requests packaging urllib3
또는:
python -m pip install requests packaging urllib3
저장소 클론:
git clone https://github.com/yora1928/cve-2026-15748.git
디렉토리로 이동:
cd cve-2026-15748
의존성 설치:
pip install requests packaging urllib3
Python 확인:
python --version
주요 구성은 스크립트의 CONFIG 부분에 있습니다:
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
해당 구성은 소스 코드에 직접 포함되어 있습니다.
도구는 두 가지 대상 입력 방법을 지원합니다:
python cve-2026-15748.py -u https://target.com
매개변수:
-u
--url
단일 대상을 입력하는 데 사용됩니다.
파일 생성:
targets.txt
예:
https://target1.com
https://target2.com
https://target3.com
그런 다음 실행:
python cve-2026-15748.py -f targets.txt
매개변수:
-f
--file
소스 코드는 각 줄을 대상으로 읽고 빈 줄을 제거합니다.
기본값:
8 threads
변경하려면:
python cve-2026-15748.py -f targets.txt -t 10
다른 예:
python cve-2026-15748.py -f targets.txt -t 5
매개변수:
-t
스크립트에는 다음 옵션도 있습니다:
--upload
예:
python cve-2026-15748.py -u https://target.com --upload
또는:
python cve-2026-15748.py -f targets.txt --upload
⚠️ 이 모드는 Forminator 엔드포인트에 POST/업로드 요청을 보냅니다. 명시적으로 테스트를 허용한 시스템에서만 사용하십시오.
--upload 구현은 특정 검사 조건이 충족되면 upload_test() 함수를 호출합니다.
python cve-2026-15748.py -u https://target.com
python cve-2026-15748.py -f targets.txt
python cve-2026-15748.py -f targets.txt -t 10
python cve-2026-15748.py -u https://lab.example.com --upload
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
일반적으로 스캐너는 다음 흐름으로 작동합니다:
Target
│
▼
Normalize URL
│
▼
WordPress Detection
│
├── Tidak ditemukan
│ └── NOT WORDPRESS
│
▼
Crawl Pages
│
▼
Forminator Detection
│
▼
Version Detection
│
▼
Version Comparison
│
▼
Form Detection
│
▼
Result
스캐너는 여러 엔드포인트를 확인합니다:
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
특정 HTTP 상태 외에도 스캐너는 다음과 같은 지표를 찾습니다:
wp-content
wp-includes
페이지 응답에서.
WordPress 지표가 발견되지 않으면:
[NOT WORDPRESS]
스캐너는 여러 소스에서 페이지 목록을 생성합니다.
검사되는 일부 경로는 다음과 같습니다:
/contact
/kontak
/hubungi-kami
/form
/forms
/formulir
/upload
/unggah
/submit
/kirim
/gallery
/kontribusi
/daftar
/pendaftaran
/registration
/register
/file-upload
/submit-document
/unggah-berkas
/upload-file
소스 코드는 다음도 확인합니다:
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
그리고 메인 페이지에서 내부 링크를 가져옵니다.
스캐너는 다음과 같은 Forminator 식별자를 검색합니다:
forminator-form-<ID>
및 기타 여러 HTML 패턴도 검색합니다.
발견된 양식에 대해 스캐너는 다음 존재 여부를 확인합니다:
type="file"
및:
<select>
스캐너는 다음도 가져오려고 시도합니다:
form_id
nonce
양식 HTML에서.
Forminator 버전은 다음과 같은 HTML 에셋에서 가져올 수 있습니다:
/wp-content/plugins/forminator/...
다음 매개변수와 함께:
?ver=X.X.X
스캐너는 다음을 찾기 위한 폴백도 있습니다:
Stable tag:
HTML과 readme.txt 모두에서.
출력에 표시되는 방법은 다음과 같을 수 있습니다:
html-source
또는:
readme.txt
소스 코드의 버전 한도:
1.56.1
검사는 발견된 버전을 VULN_MAX와 비교하여 수행됩니다.
내부 결과는 다음과 같을 수 있습니다:
VULNERABLE
또는:
PATCHED
버전을 알 수 없지만 특정 조건이 충족되면 소스 코드는 다음 상태를 사용합니다:
INSTALLED (unknown version)
도구의 주요 출력 형식은 다음 구조를 따릅니다:
[STATUS] URL VERSION (METHOD) [PAGES] [FORM STATUS] [VULNERABILITY STATUS] [UPLOAD STATUS]
예:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
업로드 양식이 감지되면:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
양식이 없으면:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [VULNERABLE]
FOUNDForminator가 발견되었고 중요한 정보를 성공적으로 얻었습니다.
NOT FOUNDForminator를 찾지 못했습니다.
예:
[NOT FOUND] https://target.com [17 pages]
NOT WORDPRESS대상이 WordPress로 감지되지 않았습니다.
예:
[NOT WORDPRESS] https://target.com
INSTALLED (unknown version)Forminator가 설치된 것으로 확인되지만 버전을 확인하지 못했습니다.
VULNERABLE발견된 버전이 다음 이하입니다:
1.56.1
PATCHED발견된 버전이 다음 한도보다 높습니다:
1.56.1
모든 대상 처리가 완료되면 도구는 요약을 표시합니다.
예:
========== SUMMARY ==========
VULNERABLE : 10
PATCHED : 5
UNKNOWN VERSION : 3
NOT FOUND : 20
NOT WORDPRESS : 2
TOTAL SCANNED : 40
[+] HAVE UPLOAD FORM: 2
요약은 스캐너가 수집한 각 대상의 결과를 기반으로 계산됩니다.
도구는 다음 파일을 자동으로 생성합니다:
scan_results_detailed.txt
이 파일은 스캔 프로세스가 완료된 후 생성됩니다.
구조:
=== VULNERABLE (with upload form) ===
=== VULNERABLE (no upload form) ===
=== UNKNOWN VERSION (assume vulnerable) ===
예:
=== VULNERABLE (with upload form) ===
https://target.example - v1.56.0 (html-source) - form_data: ...
=== VULNERABLE (no upload form) ===
https://target.example - v1.55.0 (html-source)
=== UNKNOWN VERSION (assume vulnerable) ===
https://target.example
스캔 결과 파일에 대상 또는 민감한 정보가 포함된 경우 저장소에 커밋하지 않는 것이 좋습니다.
cve-2026-15748/
│
├── cve-2026-15748.py
├── README.md
├── targets.txt
└── scan_results_detailed.txt
cve-2026-15748.py메인 스캐너.
README.md프로젝트 문서.
targets.txt처리할 대상 목록.
scan_results_detailed.txt자동으로 생성되는 스캔 결과 파일.
소스 코드는 여러 주요 부분으로 구성됩니다:
cve-2026-15748.py
│
├── CONFIG
│ ├── TIMEOUT
│ ├── THREADS
│ ├── VULN_MAX
│ ├── MAX_RETRIES
│ ├── DELAY_MIN
│ ├── DELAY_MAX
│ └── CRAWL_DEPTH
│
├── HTTP / REQUEST
│ ├── get_headers()
│ └── safe_get()
│
├── URL
│ └── normalize()
│
├── VERSION
│ ├── is_vulnerable()
│ └── extract_version_from_html()
│
├── WORDPRESS
│ └── check_wordpress()
│
├── CRAWLING
│ └── get_all_pages()
│
├── FORM DETECTION
│ └── extract_form_data_advanced()
│
├── FORMINATOR
│ └── check_forminator_full()
│
├── TESTING
│ └── upload_test()
│
├── SCANNING
│ └── scan_target()
│
└── MAIN
└── main()
해당 함수들은 실제 소스 코드 구조와 일치합니다.
스캐너는 다음을 사용합니다:
사용되는 User-Agent에는 여러 일반적인 브라우저가 포함됩니다.
GET 요청은 재시도 및 지연 구성을 사용합니다:
TIMEOUT = 15 seconds
MAX_RETRIES = 3
DELAY = 1.0–2.5 seconds
스캐너에는 몇 가지 제한 사항이 있습니다:
UNKNOWN 결과는 수동 확인이 필요합니다.WordPress 관리자는 다음을 권장합니다:
시스템에 대해 스캐너를 실행하기 전에:
✓ Pastikan sistem berada dalam scope
✓ Pastikan kamu memiliki izin
✓ Gunakan environment testing jika memungkinkan
✓ Hindari data pengguna nyata
✓ Jangan melakukan pengujian di luar scope
✓ Simpan hasil assessment dengan aman
교육 및 승인된 테스트 전용입니다.
이 도구는 다음 목적으로 제작되었습니다:
소유하고 있지 않거나 테스트 허가를 받지 않은 시스템에는 이 도구를 사용하지 마세요.
사용자는 이 도구 사용에 대한 전적인 책임을 집니다.
저자는 도구 남용으로 인한 손상, 데이터 손실, 서비스 중단 또는 법적 결과에 대해 책임을 지지 않습니다.
Yora
GitHub:
저장소:
https://github.com/yora1928/cve-2026-15748
이 프로젝트가 학습이나 합법적인 보안 연구에 도움이 된다면 저장소에 ⭐을 남겨주세요.
MIT 라이선스
Yora가 ❤️을 담아 제작했습니다.
#CVE-2026-15748 · #Forminator RCE · #WordPress Exploit · #Unauthenticated RCE · #File Upload Vulnerability · #Penetration Testing
| 변수 | 기본값 | 기능 |
|---|
TIMEOUT | 15 | HTTP 요청 시간 제한 |
THREADS | 8 | 작업자/스레드 수 |
VULN_MAX | 1.56.1 | 영향을 받는 것으로 간주되는 버전 한도 |
MAX_RETRIES | 3 | 요청 재시도 횟수 |
DELAY_MIN | 1.0 | 최소 지연 |
DELAY_MAX | 2.5 | 최대 지연 |
CRAWL_DEPTH | 2 | 크롤링 깊이 |