Lucene search
K

Acronis Cyber Backup 12.5 Build 16341 - Unauthenticated SSRF

🗓️ 27 Nov 2020 00:00:00Reported by Julien AhrensType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 919 Views

Acronis Cyber Backup 12.5 Unauthenticated SSRF, CVE-2020-16171, Update to v12.5 Build 1634

Related
Code
ReporterTitlePublishedViews
Family
GithubExploit
Exploit for Cross-site Scripting in Astaro Security_Gateway_Software
30 Apr 201915:15
githubexploit
Circl
CVE-2020-16171
17 Sep 202017:03
circl
CNVD
Acronis Cyber Backup code issue vulnerability
21 Sep 202000:00
cnvd
CVE
CVE-2020-16171
21 Sep 202013:07
cve
Cvelist
CVE-2020-16171
21 Sep 202013:07
cvelist
EUVD
EUVD-2020-8137
21 Sep 202013:07
euvd
NCSC
Vulnerability fixed in Acronis Cyber Backup
16 Sep 202000:00
ncsc
NVD
CVE-2020-16171
21 Sep 202014:15
nvd
OSV
CVE-2020-16171
21 Sep 202014:15
osv
Packet Storm
Acronis Cyber Backup 12.5 Build 16341 Server-Side Request Forgery
16 Sep 202000:00
packetstorm
Rows per page
# Exploit Title: Acronis Cyber Backup 12.5 Build 16341 - Unauthenticated SSRF
# Date: 2020-07-30
# Author: Julien Ahrens
# Vendor Homepage: https://www.acronis.com
# Version: 12.5 Build 16341
# CVE: CVE-2020-16171

VERSIONS AFFECTED
====================
Acronis Cyber Backup v12.5 Build 16327 and probably below.

VULNERABILITY DETAILS
========================
All API endpoints running on port 9877 under "/api/ams/" whereof some are
reachable without authentication, do accept an additional custom header called
"Shard":

def get_ams_address(headers):
    if 'Shard' in headers:
        [...]
        return headers.get('Shard')  # Mobile agent >= ABC5.0

The value of this header is afterwards to construct a separate web request send
by the application using a urllib.request.urlopen call:

def make_request_to_ams(resource, method, data=None):
    port = config.CONFIG.get('default_ams_port', '9892')
    uri = 'http://{}:{}{}'.format(get_ams_address(request.headers), port, resource)
    logging.debug('Making request to AMS %s %s', method, uri)
    headers = dict(request.headers)
    del headers['Content-Length']
    if not data is None:
        headers['Content-Type'] = 'application/json'
    req = urllib.request.Request(uri,
                                 headers=headers,
                                 method=method,
                                 data=data)
    resp = None
    try:
        resp = urllib.request.urlopen(req, timeout=wcs.web.session.DEFAULT_REQUEST_TIMEOUT)
    except Exception as e:
        logging.error('Cannot access ams {} {}, error: {}'.format(method, resource, e))
    return resp

This can be abused to conduct SSRF attacks against otherwise unreachable internal hosts
of Acronis services that are bound to localhost such as the "NotificationService" running
on 127.0.0.1:30572 with a request header like:

Shard: localhost:30572/external_email?

For more details, see the referenced blog post.

RISK
=======
The vulnerability can be used by an unauthenticated or authenticated attacker
to query otherwise unreachable internal network resources. As demonstrated in
the corresponding blog post, using this vulnerability, it is possible to i.e.
(amongst others) send out fully customized emails or modify the application's
resource settings.


7. SOLUTION
===========
Update to v12.5 Build 16342 


8. REPORT TIMELINE
==================
2020-07-30: Discovery of the vulnerability
2020-07-30: Since the vulnerability is fixed in Cyber Protect: Sent out a
            request to the Vendor to check whether Cyber Backup is EOL and users
            are advised to migrate to Cyber Protect instead.
2020-07-30: CVE requested from MITRE
2020-07-31: MITRE assigns CVE-2020-16171
2020-07-31: Public Disclosure date set to 2020-08-14
2020-08-04: Vendor asks for a 90 days extension
2020-08-04: Extension not granted because there is a fix available already. Public disclosure 
            date set to 2020-09-14
2020-09-05: Asking vendor about the status of the fix
2020-09-08: Vendor states that a fix has been backported to Cyber Backup 12.5 under the 
            reference ABR-202103
2020-09-14: Public disclosure

9. REFERENCES
=============
https://www.rcesecurity.com/2020/09/CVE-2020-16171-Exploiting-Acronis-Cyber-Backup-for-Fun-and-Emails/
https://dl.acronis.com/u/backup/rn/12.5/user/en-US/AcronisBackup12.5_relnotes.htm

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation