🔥 CVE-2026-15748 深度独立研究:源码审计 · 二次发现 · 利用方案
🔥 高危漏洞深度独立研究 · CVSS ≥ 9.8
CVE-2026-15748 深度独立研究:源码审计 · 二次发现 · 利用方案
📊 2 来源🔍 源码审计🧪 PoC
NVD-LatestPoC-in-GitHub
🔍 源码独立审计
对 (未定位到源码) 源码进行独立审计(置信度 60%)。
🧬 根因独立理解
🛤️ 漏洞触发链路
🧪 PoC 复现
从 GitHub 公开仓库抓取的实际 PoC 代码(仓库)。
📋 代码元数据语言md来源yora1928/cve-2026-15748针对性✅ 已验证与漏洞相关(代码含 CVE 引用)依赖见代码注释/README用法详见代码注释中的使用说明
`markdown
# CVE-2026-15748 — Forminator Forms Unauthenticated RCE
>Crafted by Yora
>For Educational &
Authorized Testing Only
---
## 📌 Deskripsi
**CVE-2026-15748** merupakan kerentanan yang berkaitan dengan plugin **Forminator** pada WordPress.
Tool ini dibuat untuk membantu **security research dan authorized testing** terhadap instalasi WordPress yang menggunakan Forminator.
Scanner melakukan beberapa tahap pemeriksaan,mulai dari deteksi WordPress,pencarian Forminator,identifikasi versi,
crawling halaman,hingga pemeriksaan konfigurasi form tertentu.
>⚠️ Gunakan tool ini hanya pada website,server,lab,atau sistem yang kamu miliki atau sudah mendapatkan izin untuk mengujinya.
---
## ✨ Fitur
|Fitur |Keterangan ||---|---||🔎 WordPress Detection |Mendeteksi apakah target menggunakan WordPress ||🔌 Forminator Detection |Mendeteksi instalasi plugin Forminator ||🏷️ Version Detection |
Mengambil versi Forminator dari sumber yang tersedia ||📊 Version Check |Membandingkan versi dengan batas `1.56.1` ||🕷️ Website Crawling |Mencari halaman yang relevan pada target ||🗺️ Sitemap Detection |Memeriksa beberapa sitemap WordPress ||📝 Form Detection |Mendeteksi form Forminator tertentu ||🔐 Nonce Detection |Mencoba menemukan Forminator nonce ||⚡ Multi-threading |
Mendukung beberapa target secara bersamaan ||🔁 Retry |Request gagal akan dicoba kembali ||⏱️ Request Delay |Menggunakan delay acak antar-request ||📄 Detailed Results |Menyimpan hasil pemeriksaan ke file |
---
# 📦 Requirements
Tool membutuhkan:
- Python 3
- `requests`
- `packaging`
- `urllib3`
Install dependency:
```bash
pip install requests packaging urllib3
````
Atau:
```bash
python -m pip install requests packaging urllib3
```
---
# 🚀 Installation
Clone repository:
```bash
git clone https://github.com/yora1928/cve-2026-15748.git
```
Masuk ke directory:
```bash
cd cve-2026-15748
```
Install dependency:
```bash
pip install requests packaging urllib3
```
Cek Python:
```bash
python --version
```
---
# 🛠️ Configuration
Konfigurasi utama terdapat di bagian `CONFIG` pada script:
```python
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
```
### Penjelasan
|
Variable |Default |Fungsi ||------------- |-------: |---------------------------------- ||`TIMEOUT` |`15` |Timeout HTTP request ||`THREADS` |`8` |Jumlah worker/thread ||`VULN_MAX` |`1.56.1` |Batas versi yang dianggap affected ||`MAX_RETRIES` |`3` |Jumlah percobaan ulang request ||`DELAY_MIN` |`1.0` |
Delay minimum ||`DELAY_MAX` |`2.5` |Delay maksimum ||`CRAWL_DEPTH` |`2` |Kedalaman crawling |
Konfigurasi tersebut terdapat langsung di source code.
---
# 🚀 Usage
Tool mendukung dua metode input target:
1. Single URL
2. File berisi beberapa URL
---
## 1. Single Target
```bash
python cve-2026-15748.py -u https://target.com
```
Parameter:
```text
-u
--url
```
Digunakan untuk memasukkan satu target.
---
## 2. Multiple Targets
Buat file:
```text
targets.txt
```
Contoh:
```text
https://target1.com
https://target2.com
https://target3.com
```
Kemudian jalankan:
```bash
python cve-2026-15748.py -f targets.txt
```
Parameter:
```text
-f
--file
```
Source code membaca setiap baris sebagai target dan menghapus baris kosong.
---
## 3. Mengatur Thread
Default:
```text
8 threads
```
Untuk mengubahnya:
```bash
python cve-2026-15748.py -f targets.txt -t 10
```
Contoh lain:
```bash
python cve-2026-15748.py -f targets.txt -t 5
```
Parameter:
```text
-t
```
---
## 4. Upload Test Mode
Script juga memiliki opsi:
```text
--upload
```
Contoh:
```bash
python cve-2026-15748.py -u https://target.com --upload
```
atau:
```bash
python cve-2026-15748.py -f targets.txt --upload
```
>
⚠️ Mode ini melakukan request POST/upload terhadap endpoint Forminator. Gunakan **hanya pada sistem yang secara eksplisit mengizinkan pengujian tersebut**.
Implementasi `--upload` memanggil fungsi `upload_test()` ketika kondisi pemeriksaan tertentu terpenuhi.
---
# 📋 Command Examples
### Basic
```bash
python cve-2026-15748.py -u https://target.com
```
### Bulk
```bash
python cve-2026-15748.py -f targets.txt
```
### Bulk + Custom Threads
```bash
python cve-2026-15748.py -f targets.txt -t 10
```
### Authorized Upload Test
```bash
python cve-2026-15748.py -u https://lab.example.com --upload
```
### Bulk Authorized Upload Test
```bash
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
```
---
# 🔍 Detection Process
Secara umum,
scanner bekerja dengan alur:
```text
Target
│
▼
Normalize URL
│
▼
WordPress Detection
│
├── Tidak ditemukan
│ └── NOT WORDPRESS
│
▼
Crawl Pages
│
▼
Forminator Detection
│
▼
Version Detection
│
▼
Version Comparison
│
▼
Form Detection
│
▼
Result
```
---
# 🌐 WordPress Detection
Scanner memeriksa beberapa endpoint:
```text
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
```
Selain status HTTP tertentu,
scanner juga mencari indikator seperti:
```text
wp-content
wp-includes
```
di response halaman.
Jika tidak ditemukan indikator WordPress:
```text
[NOT WORDPRESS]
```
---
# 🕷️ Crawling
Scanner membuat daftar halaman dari beberapa sumber.
### Common Paths
Beberapa path yang diperiksa antara lain:
```text
/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
```
Source code juga memeriksa:
```text
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
```
dan mengambil internal links dari halaman utama.
---
# 🧩 Forminator Detection
Scanner mencari identifier Forminator seperti:
```text
forminator-form-<ID>
```
serta beberapa pola HTML lainnya.
Untuk form yang ditemukan,scanner memeriksa keberadaan:
```html
type="file"
```
dan:
```html
<select>
```
Scanner juga mencoba mendapatkan:
```text
form_id
nonce
```
dari HTML form.
---
# 🏷️ Version Detection
Versi Forminator dapat diambil dari asset HTML seperti:
```text
/wp-content/plugins/forminator/...
```
dengan parameter:
```text
?ver=X.X.X
```
Scanner juga memiliki fallback untuk mencari:
```text
Stable tag:
```
di HTML maupun `readme.txt`.
Metode yang ditampilkan dalam output dapat berupa:
```text
html-source
```
atau:
```text
readme.txt
```
---
# 📊 Version Assessment
Batas versi pada source code:
```text
1.56.1
```
Pemeriksaan dilakukan dengan membandingkan versi yang ditemukan terhadap `VULN_MAX`.
Hasil internal dapat berupa:
```text
VULNERABLE
```
atau:
```text
PATCHED
```
Jika versi tidak diketahui tetapi kondisi tertentu terpenuhi,
source code menggunakan status:
```text
INSTALLED (unknown version)
```
---
# 🖥️ Output
Format output utama tool mengikuti struktur:
```text
[STATUS] URL VERSION (METHOD) [PAGES] [FORM STATUS] [VULNERABILITY STATUS] [UPLOAD STATUS]
```
Contoh:
```text
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
```
Jika form upload terdeteksi:
```text
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
```
Jika tidak ada form:
```text
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [VULNERABLE]
```
---
# 📌 Possible Status
## `FOUND`
Forminator ditemukan dan informasi penting berhasil diperoleh.
---
## `NOT FOUND`
Forminator tidak berhasil ditemukan.
Contoh:
```text
[NOT FOUND] https://target.com [17 pages]
```
---
## `NOT WORDPRESS`
Target tidak terdeteksi sebagai WordPress.
Contoh:
```text
[NOT WORDPRESS] https://target.com
```
---
## `INSTALLED (unknown version)`
Forminator terindikasi terpasang,
tetapi versi tidak berhasil ditentukan.
---
## `VULNERABLE`
Versi yang ditemukan berada pada atau di bawah:
```text
1.56.1
```
---
## `PATCHED`
Versi yang ditemukan berada di atas batas:
```text
1.56.1
```
---
# 📊 Summary
Setelah seluruh target selesai diproses,
tool menampilkan summary.
Contoh:
```text
========== SUMMARY ==========
VULNERABLE : 10
PATCHED : 5
UNKNOWN VERSION : 3
NOT FOUND : 20
NOT WORDPRESS : 2
TOTAL SCANNED : 40
[+] HAVE UPLOAD FORM: 2
```
Summary dihitung dari hasil setiap target yang berhasil dikumpulkan oleh scanner.
---
# 📄 Result File
Tool secara otomatis membuat:
```text
scan_results_detailed.txt
```
File tersebut dibuat setelah proses scanning selesai.
Strukturnya:
```text
=== VULNERABLE (with upload form) ===
=== VULNERABLE (no upload form) ===
=== UNKNOWN VERSION (assume vulnerable) ===
```
Contoh:
```text
=== 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
```
>
File hasil scan sebaiknya tidak di-commit ke repository jika berisi target atau informasi sensitif.
---
# 🧱 Project Structure
```text
cve-2026-15748/
│
├── cve-2026-15748.py
├── README.md
├── targets.txt
└── scan_results_detailed.txt
```
### `cve-2026-15748.py`
Main scanner.
### `README.md`
Dokumentasi project.
### `targets.txt`
Daftar target yang akan diproses.
### `scan_results_detailed.txt`
File hasil scan yang dibuat otomatis.
---
# 🧠 Source Code Structure
Source code terdiri dari beberapa bagian utama:
```text
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()
```
Fungsi-fungsi tersebut sesuai dengan struktur aktual source code.
---
# ⚙️ HTTP Behavior
Scanner menggunakan:
* Random User-Agent
* Request timeout
* Retry
* Random delay
* Session-based requests
* Redirect handling
User-Agent yang digunakan mencakup beberapa browser umum.
Request GET menggunakan konfigurasi retry dan delay:
```text
TIMEOUT = 15 seconds
MAX_RETRIES = 3
DELAY = 1.0–2.5 seconds
```
---
# ⚠️ Limitations
Scanner memiliki beberapa keterbatasan:
* Version detection bergantung pada informasi yang tersedia di response.
* Tidak semua instalasi Forminator akan mengekspos versi.
* Hasil `UNKNOWN` membutuhkan pemeriksaan manual.
* Crawling tidak menjamin seluruh halaman website ditemukan.
* Struktur HTML yang berbeda dapat menyebabkan form tidak terdeteksi.
* HTTP status tertentu dapat dipengaruhi WAF atau konfigurasi server.
* Hasil scanner bukan bukti absolut bahwa sistem dapat dieksploitasi.
---
# 🛡️ Mitigation
Administrator WordPress disarankan untuk:
1. Menggunakan versi Forminator yang telah diperbaiki.
2. Memperbarui WordPress dan plugin secara berkala.
3. Menghapus plugin yang tidak digunakan.
4. Memantau aktivitas upload yang tidak biasa.
5. Memeriksa log server.
6. Menggunakan security plugin/WAF sesuai kebutuhan.
7. Melakukan security assessment secara berkala.
---
# 🔐 Responsible Use
Sebelum menjalankan scanner terhadap sistem:
```text
✓ 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
```
---
# ⚠️ Disclaimer
**For Educational &
Authorized Testing Only.**
Tool ini dibuat untuk tujuan:
* Educational security research
* Vulnerability assessment
* Authorized penetration testing
* Local laboratory testing
Jangan gunakan tool ini terhadap sistem yang tidak kamu miliki atau tidak memberikan izin pengujian.
Pengguna bertanggung jawab sepenuhnya atas penggunaan tool ini.
Author tidak bertanggung jawab atas kerusakan,
kehilangan data,gangguan layanan,atau konsekuensi hukum akibat penyalahgunaan tool.
---
# 👨💻 Author
**Yora**
GitHub:
[https://github.com/yora1928](https://github.com/yora1928)
Repository:
[https://github.com/yora1928/cve-2026-15748](https://github.com/yora1928/cve-2026-15748)
---
# ⭐ Support
Jika project ini bermanfaat untuk pembelajaran atau security research yang sah,
kamu dapat memberikan ⭐ pada repository.
---
## 📜 License
MIT License
---
**Crafted with ❤️ by Yora**
```
**Catatan penting:** aku sengaja tidak mengarang fitur yang tidak ada di source. Misalnya kode aktual hanya mengambil versi dari HTML/`readme.txt`,bukan lima metode seperti README awalmu. :contentReference[oaicite:20]{index=20}:contentReference[oaicite:21]{index=21}
```
#CVE-2026-15748 · #Forminator RCE · #WordPress Exploit · #Unauthenticated RCE · #File Upload Vulnerability · #Penetration Testing⚔️ EXP 利用代码
截至分析时,Exploit-DB 未收录该 CVE 的公开利用代码。可利用上述 PoC 进行验证,或关注 Exploit-DB 更新。
🕵️ 检测指纹
当前规则库未收录针对该 CVE 的专用检测规则。建议:
- 根据漏洞根因编写 Nuclei 检测模板
- 在 WAF/IDS 中配置针对漏洞特征的规则
- 关注漏洞指纹库更新
🤖 高危漏洞深度独立研究引擎生成 · 2026-08-21 03:00