This is an exercise to test your skills. You will be going through the process of setting up a VM with a service that mimics the behaviour of the real thing. You can then go through the official workplan with this service and ask questions along the way if you get stuck.
The main goal is to replace the vulnerable Pingo web application with a dockerized, patched version that sits behind a WAF.
- Install VMware Workstation Player
- Download Pingo VM
- Import the OVF to VMWare Workstation Player
- Start the VM
- Login to VM with
root:Admin1Admin1
- Run
ip a
and check IP ofens33
- Add this IP to your host machine's
/etc/hosts
file as<ip-address> pingo.example.com
- Test access to the application in your host machine's browser by navigating to http://pingo.example.com.
- Install Docker or Docker Desktop on your host machine
- Run
docker run --rm -it --network=host ghcr.io/ojasookert/pingo-scoringbot:main
This can be done using scp or rsync. Make backups of all the VMs files locally in your host machine. This may or may not include web application code files, any proxy configurations, SSL certificates, database dump and configuration, etc.
Note: Once you are sure you have backed up all necessary files, shut the VM down. If you need to access the VM again before step 7, you have failed step 1!
This means you should be able to change the IP address in your /etc/hosts
file to 127.0.0.1
and run the scoringbot to achieve 100% result in tests.
This can be done as part of the previous step, but the goal is to have a single docker-compose.yml file that brings up the whole application and retains functionality so that scoringbot's tests pass.
This means you should investigate the application thoroughly and patch any found vulnerabilities while documenting found issues and applied mitigations.
TODO
After adding the WAF, ensure the application retains all functionality. This means it has to look and behave the same as the original thing.
TODO
These tagged Docker images will be used in the next step to automate the application deployment.
You should then create bash or ansible automation that targets the Pingo VM, replacing the original vulnerable application and related services with the containerized version with WAF included. The result of the scripts is that the Pingo VM should be able to pass all scoringbot tests and all vulnerability tests (not yet included in scoringbot). This step should be repeated to ensure a clean run and minimal downtime of the application.