This GitHub Repository contains all the necessary tools for getting PoC Unsigned Code Execution on a Sony PS4 System with firmwares 3.15, 3.50 and 3.55.
This Exploit, is based-off Henkaku's WebKit Vulnerability for the Sony's PSVita.
It includes basic ROP and is able to return to normal execution.
There are two different methods to execute the Exploit, but first let's clarify how we will know which one to use.
If your PlayStation 4 has got an already set-up PlayStation Network Account on it, you should use method 1.
Else, if your PlayStation 4 -NEVER- had a PlayStation Network Account on it, you should use method 2.
Probably you will ask why, it's pretty much easy to explain and understand:
When you buy a PS4, comes unactivated, meaning that nobody has entered SEN Account on it. (Method 2)
Once you use a SEN Account on it, the PS4 becomes an activated console. (Method 1)
This doesn't affect the actual payload, but you should take in mind which method use.
Run this command on the folder you've downloaded this repo:
python server.py
All the debug options will be outputted during the Exploit process.
Navigate to your PS4's Web Browser and simply type on the adress bar, your PC's IP Adress.
Wait until the exploit finishes, once it does, PS4 will return to it's normal state.
An example of what will look like found HERE.
A dns.conf file which is present on the source, needs to be edited accordingly your local PC's IP Adress.
PlayStation 4's DNS Settings must be changed in order to point the PC's IP Adress where the Exploit is located.
Once you've edited the dns.conf file, simply run the next command on the folder where you downloaded this repo:
python fakedns.py -c dns.conf
And then:
python server.py
All the debug options will be outputted during the Exploit process.
Once Python part is done, get into your PlayStation 4, navigate to the User's Guide page and wait until exploit finishes out.
An example of what will look like found HERE.
If you want to try the socket test, change the IP Address located at the bottom of the ps4sploit.html file with your computer's one and run this command:
netcat -l 0.0.0.0 8989 -v
You should see something like:
Listening on [0.0.0.0] (family 0, port 8989)
Connection from [192.168.1.72] port 8989 [tcp/sunwebadmins] accepted (family 2, sport 59389)
Hello From a PS4!
xyz - Much of the code is based off of his code used for the Henkaku project
Anonymous contributor - WebKit Vulnerability PoC
CTurt - I basically copied his JuSt-ROP idea
xerpi - Used his idea for the socket code
rck`d - Finding bugs such as not allocating any space for a stack on function calls
Maxton - 3.50 support and various cleanup
Thunder07 - 3.15 support
The code currently is a bit of a mess, so if you have any improvements feel free to send a pull request or make an issue. Also I am perfectly fine if you want to fork and create your own project.