
OpenLiteSpeed 1.9.3 - High - Remote - Privilege leftover - HTTP/1 duplicate Cookie litespeed_role 403 को छोड़ देता है; lsphp को अभी भी HTTP_COOKIE मिलता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · openlitespeed-dup-cookie-litespeed-role
वर्ग: विशेषाधिकार अवशेष पहुँच: रिमोट
OpenLiteSpeed 1.9.3 (edbe7f7db12577e905291955a6d416200942fb8b) अभी भी एकल Cookie: litespeed_role= पर 403 देता है (1.8.2.1 ब्लॉक)। HTTP/1 डुप्लिकेट Cookie 400 नहीं है। Host / Content-Length / Transfer-Encoding / Authorization डुप्लिकेट हैं। दूसरी Cookie लाइन को अज्ञात के रूप में अवनत किया जाता है, litespeed_role= स्कैन कभी नहीं चलता, IS_BL_COOKIE अनसेट रहता है, और lsphp अभी भी HTTP_COOKIE प्राप्त करता है। LSAPI अंतिम-जीत: PHP $_SERVER['HTTP_COOKIE'] दूसरी लाइन है।
HTTP/2 पहले से ही प्रत्येक Cookie हेडर को स्कैन करता है। यह अवशेष HTTP/1.1 है। लैब ने $_COOKIE['litespeed_role'] को नहीं भरा। WordPress ATO नहीं। RCE नहीं।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | विशेषाधिकार अवशेष (1.8.2.1 litespeed_role= 403 स्किप) |
| पहुँच | रिमोट (अप्रमाणित 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 |
एक HTTP/1.1 अनुरोध पर दो Cookie हेडर भेजें। पहला हानिरहित है। दूसरा litespeed_role= ले जाता है। OpenLiteSpeed उस नाम को एकल Cookie हेडर पर और प्रत्येक HTTP/2 Cookie हेडर पर 403 करता है। डुप्लिकेट HTTP/1 Cookie 403 को छोड़ देता है। lsphp अभी भी HTTP_COOKIE में भूमिका देखता है।
जो ऐप्स HTTP_COOKIE को पार्स करते हैं, उन्हें वह मान मिलता है जिसे 1.8.2.1 नियंत्रण वर्कर से दूर रखने के लिए था। जो ऐप्स केवल $_COOKIE['litespeed_role'] पढ़ते हैं, उन्होंने इसे इस लैब में नहीं देखा।
Caddy और lighttpd के बाद v1.9.3 की बीस स्रोत खोजें। 1.8.2.1 ब्लॉक पहले सामान्य Cookie पर memmem(..., "litespeed_role=", 15) है। डुप्लिकेट Cookie 400 सूची में नहीं है।
गलत मोड़: urllib को दो Cookie हेडर भेजने में सक्षम मानना (यह उन्हें मर्ज करता है); आधिकारिक docker के 8088 पर सुनने की अपेक्षा करना (Hub इमेज 80 है); $_COOKIE के HTTP_COOKIE अंतिम-जीत का पालन करने की अपेक्षा करना (LSAPI ने पहले हेडर से कुकी तालिका भरी)।
cd lab
./run.sh
इमेज litespeedtech/openlitespeed:1.9.3-lsphp84। Oracle lab/www/cookie.php। रॉ HTTP/1.1 सॉकेट। लूपबैक बाइंड।
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
प्रत्येक HTTP/1 Cookie हेडर को उसी तरह स्कैन करें जैसे HTTP/2 पहले से करता है, या डुप्लिकेट Cookie को 400 करें जैसे Host 400 है।
edbe7f7db12577e905291955a6d416200942fb8b)src/http/httpreq.cpp डुप्लिकेट सामान्य हेडर, पहला-Cookie litespeed_role= स्कैन, IS_BL_COOKIE 403src/http/httpcgitool.cpp अज्ञात हेडर HTTP_COOKIE के रूप में निर्यातlitespeed_role कुकी