## https://sploitus.com/exploit?id=893B5F82-10CA-5332-88CA-B180FB24BAD3
# CVE-2026-0911 — Hustle modül import PoC
WordPress eklentisi **Hustle** (`wordpress-popup`, WPMU DEV) için [CVE-2026-0911](https://nvd.nist.gov/vuln/detail/CVE-2026-0911) kapsamında, kimlik doğrulaması gerektiren **modül içe aktarma** uç noktası üzerinden yapılan yükleme davranışını test eden bir **araştırma / pentest yardımcı** aracıdır.
Bu depo veya dosya seti içindeki `CVE-2026-0911.py` betiği, yalnızca **sahip olduğunuz** veya **yazılı izinle test ettiğiniz** sistemlerde kullanılmalıdır.
---
## Kısa özet (zafiyet mantığı)
Etkilenen sürümlerde (Wordfence/NVD: **7.8.9.2 ve öncesi**) `action_import_module()` içinde `wp_handle_upload()` çağrısı **`test_type => false`** ile yapıldığı için dosya türü doğrulaması zayıf kalır; import sonrası JSON doğrulaması başarısız olsa bile yüklenen dosya **silinmeyebilir** (“yetim” dosya). Sunucu `wp-content/uploads` altında PHP çalıştırıyorsa bu, pratikte uzaktan kod çalıştırmaya giden bir zincirin parçası olabilir. Yamalı sürümlerde `test_type => true` ve geçici `upload_mimes` ile `.json` kısıtı gelir.
Ayrıntılı teknik özet için NVD kaydı ve Wordfence referanslarına bakın.
---
## Gereksinimler
- Python **3.9+** (tip ipuçları `from __future__ import annotations` ile uyumludur)
- Paket: **requests**
Kurulum örneği:
```bash
pip install requests
```
---
## Çalıştırma
En az bir hedef (`-u` veya `-l`) ve geçerli WordPress oturumu (`--cookie` veya `--cookie-file`) zorunludur.
```bash
python CVE-2026-0911.py -u "https://ornek.com" --cookie "wordpress_logged_in_...=...; ..."
```
Yardım:
```bash
python CVE-2026-0911.py --help
```
---
## Komut satırı parametreleri
| Parametre | Açıklama |
|-----------|----------|
| `-u`, `--url` | Tek hedef kök URL (örn. `https://site.com`) |
| `-l`, `--list` | Satır başına bir URL içeren dosya (`#` ile yorum) |
| `--cookie` | Tarayıcıdan kopyalanan çerez dizgisi |
| `--cookie-file` | Çerezi tek satırda tutan dosya |
| `--nonce` | `hustle_single_action` için elle WordPress nonce (otomatik çekim yerine) |
| `--admin-page` | Nonce’ın çekileceği `admin.php?page=` değeri (varsayılan: `hustle_popup_listing`) |
| `--module-id` | POST `moduleId` (varsayılan `0`: geçersiz modül → import akışı) |
| `--module-type` | `popup`, `slidein`, `embedded`, `social_sharing` |
| `--module-mode` | Örn. `informational`, `optin` |
| `--remote-name` | Multipart’te gönderilen dosya adı (varsayılan: `probe_rce.php`) |
| `--payload-file` | Yüklenecek içeriği dosyadan oku (`--uploader` ve varsayılan probeyi geçersiz kılar) |
| `--uploader` | Yerleşik mini PHP form-uploader gövdesini kullan |
| `--workers` | Liste modunda eşzamanlı iş parçacığı sayısı (varsayılan: 8) |
| `--timeout` | İstek zaman aşımı saniye (varsayılan: 25) |
| `--verify-ssl` | TLS doğrulamasını aç (varsayılan: kapalı) |
| `--debug` | Ek hata ayıklama çıktısı |
| `--quiet` | Domain/adım loglarını kapat; özet odaklı |
| `-o`, `--output` | Başarılı “hit” satırlarının eklendiği dosya |
---
## Çıktı ve loglama
- Varsayılan olarak her hedef için **Türkçe adım logları** yazdırılır: nonce GET isteği, `admin-ajax.php` POST özeti, olası aday URL’ler. Çoklu hedefte satırlar iş parçacıklarından geldiği için ara ara karışık görünebilir; her satırda hedef alan adı bulunur.
- `--quiet` ile bu ayrıntılar susturulur.
- **Başarılı** sayılan sonuçlar (betiğin iç mantığında “yetim yükleme” sinyali) anında `-o` dosyasına **eklenir** (`append`), `flush` / mümkünse `fsync` ile diske yazılır. Varsayılan dosya adı: `cve-2026-0911-hits.txt` (çalışma dizininde mutlak yol özetlenir).
- Dosya formatı: bir satırda hedef ve açıklama; altında girintili aday shell URL’leri.
---
## Örnek senaryolar
Tek site, TLS doğrulamalı, hata ayıklama:
```bash
python CVE-2026-0911.py -u "https://lab.local" --cookie-file cookie.txt --verify-ssl --debug
```
Liste taraması, 16 işçi, özel çıktı:
```bash
python CVE-2026-0911.py -l hedefler.txt --cookie "..." --workers 16 -o sonuclar.txt
```
Yerleşik uploader gövdesi ve özel uzak dosya adı:
```bash
python CVE-2026-0911.py -u "https://lab.local" --cookie "..." --uploader --remote-name test.php
```
---
## Ön koşullar ve sınırlar
- Geçerli **WordPress oturumu** ve Hustle yönetim arayüzüne erişim; nonce genelde `optinVars` içindeki `single_module_action_nonce` alanından okunur.
- **Ücretsiz kota:** `moduleId=0` yolunda eklenti, yüklemeden önce modül limiti nedeniyle hata döndürebilir; bu durumda dosya yazılmaz.
- Aday URL’ler `wp-content/uploads/YYYY/MM/` varsayımına göre üretilir; WordPress dosyayı yeniden adlandırırsa gerçek yol farklı olabilir.
- Aynı `--cookie` farklı domainlerde çalışmaz; çoklu site testinde her ortam için uygun oturum gerekir.
---
## Çıkış kodu
- Başarılı en az bir “hit” varsa `0`, yoksa `0` olmayan bir kod (betik içi `main` dönüşü).
- `Ctrl+C` ile kesme: `130`.
---
## Referanslar
- [NVD — CVE-2026-0911](https://nvd.nist.gov/vuln/detail/CVE-2026-0911)
- [WordPress.org — Hustle eklentisi](https://wordpress.org/plugins/wordpress-popup/)
- Wordfence tehdit istihbaratı bağlantısı NVD “References” bölümünde listelenir.
---
## Sorumluluk reddi
Bu araç yalnızca **yasal güvenlik testi**, **eğitim** ve **savunma amaçlı** kullanım içindir. Yetkisiz sistemlerde kullanım yasalara aykırıdır ve ağır cezalara yol açabilir. Yazarlar ve katkıda bulunanlar kötüye kullanımdan sorumlu tutulamaz.