
تجارب موثوقية استغلال الثغرات بلغة C++ لثغرة في نواة FreeBSD على بلاي ستيشن 5، مع بناء نواة داخل آلة افتراضية وإعداد تصحيح الأخطاء عن بُعد باستخدام GDB.
تم العثور على الثغرة في أوائل ديسمبر 2020، ليس بواسطتي، بل بواسطة عبقري نظر إلى fbsd لمدة 15 دقيقة واكتشفها فورًا 🙇♂️. تم إنشاء هذا التنفيذ بلغة C++ عند التجربة لزيادة موثوقية الاستغلال بعد أن أضافت نواة ps5 بعض ميزات التوزيع العشوائي للكومة.
wget http://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/VM-IMAGES/11.0-RELEASE/amd64/Latest/FreeBSD-11.0-RELEASE-amd64.vhd.xz
داخل الجهاز الافتراضي: adduser، أضف sshd_enable="YES" إلى /etc/rc.conf، ثم /etc/rc.d/sshd start
قم بالبناء على الجهاز الافتراضي لأن نظام بناء freebsd غير متوافق مع الأنظمة غير القائمة على freebsd (فعّلوا التوافق حوالي fbsd 12/13 لكننا نحتاج 11...)
انظر إلى https://docs.freebsd.org/en/books/handbook/kernelconfig/ أو فقط:
cd /usr/src/sys/amd64/conf
cp GENERIC /root/CONFIG
ln -s /root/CONFIG
قم بتعديل CONFIG لـ إزالة options DDB و__إضافة__ options GDB
قم بالبناء والتثبيت:
cd /src/src
make buildkernel KERNCONF=CONFIG
make installkernel KERNCONF=CONFIG
reboot
انسخ /usr/obj/usr/src/sys/CONFIG/kernel.debug خارج الجهاز الافتراضي لاستخدامه مع gdb.
git clone -b releng/11.0 https://github.com/freebsd/freebsd.git
قم بجلب الأحدث من https://ftp.gnu.org/gnu/gdb/ وفك الضغط
mkdir build
cd build
../configure --disable-binutils --disable-ld --disable-gold --disable-gas --disable-sim --disable-gprof --target=x86_64-unknown-freebsd
make -j64
استخدم https://github.com/cyrus-and/gdb-dashboard
set substitute-path /usr/src /home/shawn/freebsd
set disassembly-flavor intel
file kernel.debug
target remote /tmp/fbsd11
https://github.com/weltling/convey https://github.com/jstarks/npiperelay
#!/bin/sh
GDB_PATH=/home/shawn/gdb-10.1/build/gdb
PATH=$GDB_PATH:$PATH
gdb --data-directory=/home/shawn/gdb-10.1/build/gdb/data-directory
داخل الجهاز الافتراضي:
sysctl debug.kdb.enter=1