| Type | software |
| Product Environment | web |
| Product Name | ezBookkeeping |
| Product Vendor | Mayswind |
| Product Version | 0.7.0 |
| Product Link | https://github.com/mayswind/ezbookkeeping |
| Vulnerability Name | OTP Bruteforce |
| Severity | High |
|
CVSS String
|
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CVSS Score | 8.8 |
| CVE ID | CVE-2024-57604 |
| Vendor Acknowledgement | Yes |
|
Affected digital Assets
|
100 |
|
Affected Users
|
100 |
| Date of Reporting | Dec 27, 2024 |
| PoC Exploit | https://gist.github.com/0xHamy/908011130bc8ec05db3ac9bc54c7593a |
| Credit | 0xhamy |
The 2-factor recovery flow allows an attacker with valid username/password to repeatedly request short-lived recovery tokens and brute-force backup (recovery) codes. Each token permits ~10 attempts before expiring, but the attacker can simply re-login to obtain another token and continue trying codes until one succeeds. A successful recovery code exchange returns a token that grants full account access, enabling actions like changing the account email or disabling 2FA — resulting in full account takeover.
POST /api/login (or use the UI at http://10.0.0.94/desktop#/login) with valid username and password. The app returns a short-lived bearer token for the 2FA/recovery step.POST /api/2fa/recovery.json HTTP/1.1
Host: 10.0.0.94
Content-Type: application/json
Authorization: Bearer [Redacted short-lived token]
Cookie: [Redacted]
Content-Length: 30
{"recoveryCode":"8cv9j-i136a"}
Applying the combination of scoped single-use tokens, server-enforced attempt limits, and requiring re-authentication for sensitive changes will prevent the described chaining attack and greatly reduce the risk of account takeover.