Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify valid customer username
-
DeliveryTrigger password-reset to generate OTP
-
ExploitBrute-force 6-digit otp_code without lockout
-
ExecutionRead new password from HTTP response
-
ImpactHijack customer account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
|
| Exploitation Conditions | Exploitation targets the customer password-reset flow in system/controllers/forgot.php and works against default configurations - no special feature or setting must be enabled. Concrete prerequisites: (1) the attacker must know a valid customer username to initiate the reset, and (2) brute-force guessing of the 6-digit otp_code (roughly one million values) must complete within the OTP's validity window (~600 seconds per the patch's preserved filemtime). The limiting factors are the username requirement and the time-boxed window; no authentication, user interaction, or non-default configuration is needed, and the pre-patch absence of any attempt limit or lockout makes the brute force feasible. |
| Impact | All exploitability signals point to a genuine high priority. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) describes a network-reachable, low-complexity, unauthenticated flaw with high confidentiality and integrity impact (VC:H/VI:H), consistent with full account takeover, and the description corroborates every metric: unauthenticated attackers brute-force a 6-digit OTP in the password-reset flow with no attempt limits or lockout (CWE-307). The vendor patch and the GitHub commit diff confirm the root cause (missing attempt budget, plus a weak mt_rand OTP and the password echoed in the response), so the technical claim is strongly substantiated. Mitigating factors keep this short of trivial mass-exploitation: the attacker must already know a valid customer username and must complete the brute force within the OTP validity window (the patch preserves an ~600s filemtime window). No EPSS score was provided, and the vulnerability is NOT in CISA KEV; no public exploit code was supplied in the input. Active exploitation is therefore unconfirmed - the high score reflects strong intrinsic exploitability (reported by VulnCheck, vendor-patched) rather than evidence of in-the-wild attacks, and PHPNuxBill's niche footprint limits the realistic blast radius. |
| Exploit ScenarioDerived | An unauthenticated attacker who knows a target customer's username submits a password-reset request to system/controllers/forgot.php, then repeatedly posts guesses against the 6-digit otp_code at step 2. Because no lockout or attempt limit existed, the attacker brute-forces the ~1,000,000-value space within the reset window and the application returns the newly generated password in the HTTP response, yielding full account takeover. No public exploit code was identified in the provided data, but the attack is scriptable and requires no authentication or user interaction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Account takeover in PHPNuxBill through 2025.3.20 allows unauthenticated remote attackers who know a valid customer username to brute-force the six-digit otp_code in the customer password-reset flow at system/controllers/forgot.php; because the pre-patch code has no attempt limit or lockout, an attacker can guess the OTP within its roughly 600-second validity window and then read the newly set password from the HTTP response. The vendor has published an upstream fix and advisory, but no public exploit identified at time of analysis, and the independent assessment rates this as a genuine high-priority issue requiring only a known username and default configuration.
RemediationAI
Apply the vendor fix by upgrading PHPNuxBill to a release containing commit c3c2a92d468af91136d747b75142ed72f10320cc or later; upstream fix available (PR/commit); released patched version not independently confirmed. If immediate upgrade is not possible, restrict or temporarily disable the customer password-reset endpoint system/controllers/forgot.php, add a reverse-proxy or WAF rule that rate-limits or blocks repeated POSTs to the reset verification step, and enforce a low attempt budget with lockout for any OTP check; these compensating controls can interfere with legitimate password resets and need exception handling. Monitor for many invalid verification attempts against a single username and for account resets without user initiation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PHPNuxBill is a PHP-based hotspot billing and ISP customer management application. The vulnerable component is the customer password-reset controller, system/controllers/forgot.php, where a reset request generates a 6-digit OTP and stores it in a file; the verification step then compares the submitted otp_code without rate limiting, attempt tracking, or lockout. This is CWE-307, Improper Restriction of Excessive Authentication Attempts, and the provided CPE cpe:2.3:a:hotspotbilling:phpnuxbill:*:*:*:*:*:*:*:* covers the affected product line through 2025.3.20. The patch commit c3c2a92d468af91136d747b75142ed72f10320cc changes OTP generation from mt_rand to random_int, stores an attempts_left budget of 5, compares with hash_equals, deletes the OTP after failed attempts, and replaces the weak generated password with Password::_gen; this confirms the root cause was missing anti-automation in the reset verification path.
Know when Phpnuxbill gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Network, unauthenticated, no interaction; low complexity since there is no lockout and the 6-digit space is brute-forceable in-window; account takeover gives C:H/I:H, no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
PHPNuxBill through 2025.3.20 contains an account takeover vulnerability in the customer password reset flow in system/controllers/forgot.php that allows unauthenticated attackers to brute-force the 6-digit otp_code. Attackers knowing a customer username can guess the code without attempt limits or lockout, then read the newly set password from the HTTP response to hijack the account.
Articles & Coverage 1
Technical POC Analysis
The vulnerable file is system/controllers/forgot.php.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
PHPNuxBill (through 2025.3.20) contains a critical account takeover vulnerability that could allow attackers to compromise customer accounts, exposing billing and personal data. No public exploit identified at time of analysis, and Patch available per vendor advisory, but the flaw is easy to exploit with only a known customer username, making immediate remediation essential. Leadership should care because successful attacks can lead to data breaches, regulatory penalties, and loss of customer trust.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Phpnuxbill
View allUnauthenticated SQL injection in the PHPNuxBill radius.php FreeRADIUS REST endpoint allows remote attackers to read arbi
Authentication bypass in PHPNuxBill through 2025.3.20 allows attackers on the adjacent network to log in as any customer
EUVD-2026-95810
GHSA-mph9-7w43-p247
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB