
OpenLiteSpeed 1.9.3 - عالي - عن بُعد - بقايا صلاحيات - تكرار Cookie في HTTP/1 يتجاوز 403 الخاص بـ litespeed_role؛ لا يزال lsphp يستقبل HTTP_COOKIE
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openlitespeed-dup-cookie-litespeed-role
الفئة: صلاحية متبقية الوصول: عن بُعد
OpenLiteSpeed 1.9.3 (edbe7f7db12577e905291955a6d416200942fb8b) لا يزال يُرجع 403 لترويسة Cookie: litespeed_role= واحدة (حظر 1.8.2.1). تكرار Cookie في HTTP/1 لا يُرجع 400. أما تكرار Host / Content-Length / Transfer-Encoding / Authorization فيُرجع 400. يُخفَّض سطر Cookie الثاني إلى غير معروف، ولا يُنفَّذ فحص litespeed_role= أبدًا، ويبقى IS_BL_COOKIE غير مُعيَّن، ولا يزال lsphp يستقبل HTTP_COOKIE. في LSAPI الأخير يفوز: $_SERVER['HTTP_COOKIE'] في PHP هو السطر الثاني.
HTTP/2 يفحص بالفعل كل ترويسة Cookie. هذه البقايا خاصة بـ HTTP/1.1. لم يملأ المختبر $_COOKIE['litespeed_role']. ليس استيلاءً على حساب WordPress. ليس تنفيذًا عن بُعد.
| المعرّف | لا يوجد CVE بعد |
| الفئة | صلاحية متبقية (تخطي 403 لـ litespeed_role= في 1.8.2.1) |
| الوصول | عن بُعد (HTTP/1.1 بدون مصادقة) |
| CWE | CWE-693، CWE-436 |
| CVSS | مرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| المنتج | OpenLiteSpeed |
| المتأثر | 1.9.3 (edbe7f7)؛ HTTP/1.1 مع lsphp |
| المصادقة | لا شيء |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1:18750 فقط |
أرسل ترويستَي Cookie في طلب HTTP/1.1 واحد. الأولى غير ضارة. الثانية تحمل litespeed_role=. يُرجع OpenLiteSpeed 403 لهذا الاسم عند وجود ترويسة Cookie واحدة وعند كل ترويسة Cookie في HTTP/2. تكرار Cookie في HTTP/1 يتخطى الـ 403. لا يزال lsphp يرى الدور في HTTP_COOKIE.
التطبيقات التي تُحلّل HTTP_COOKIE تحصل على القيمة التي كان من المفترض أن يُبقيها ضابط 1.8.2.1 بعيدًا عن العامل. أما التطبيقات التي تقرأ $_COOKIE['litespeed_role'] فقط فلم تره في هذا المختبر.
عشرون عملية بحث في المصدر للإصدار v1.9.3 بعد Caddy و lighttpd. حظر 1.8.2.1 هو memmem(..., "litespeed_role=", 15) على أول Cookie مشترك. تكرار Cookie ليس في قائمة 400.
مسارات خاطئة: افتراض أن urllib قادر على إرسال ترويستَي Cookie (فهو يدمجهما)؛ توقّع أن docker الرسمي يستمع على 8088 (صورة Hub على 80)؛ توقّع أن $_COOKIE يتبع قاعدة الأخير يفوز في HTTP_COOKIE (ملأ LSAPI جدول الكوكيز من الترويسة الأولى).
cd lab
./run.sh
الصورة litespeedtech/openlitespeed:1.9.3-lsphp84. الأوراكل lab/www/cookie.php. مقابس HTTP/1.1 خام. ربط loopback.
SUCCESS openlitespeed-dup-cookie-litespeed-role single-cookie=403 dummy=200 dup-cookie=200 php-sees-role=yes how=php-http-cookie OLS-DUP-COOKIE-LITESPEED-ROLE-WITNESS
افحص كل ترويسة Cookie في HTTP/1 بالطريقة التي يفعلها HTTP/2 بالفعل، أو أرجع 400 لتكرار Cookie كما يُرجع 400 لـ Host.
edbe7f7db12577e905291955a6d416200942fb8b)src/http/httpreq.cpp الترويسات الشائعة المكررة، فحص litespeed_role= في أول Cookie، IS_BL_COOKIE 403src/http/httpcgitool.cpp تصدير الترويسة غير المعروفة كـ HTTP_COOKIElitespeed_role