FREE Lab: Create a Free account to run this lab! Create Account in < 1 min

DevSecOps Pipeline as Code: Django WebApp

private-pipeline-basics-webapps | Level: Easy  | Total Lab Runs: 0 | Free Lab

DevOps practices are to combine software development (Dev) and IT operations (Ops) in order to improve the delivery process. DevOps pipelines are chained tasks and components that run in a sequence to cover different phases of software compilation, packaging, automated testing, and test deployment.  

In this lab, we have a simple DevOps pipeline for a sample Django-based web application. The pipeline consists of the following components (and tasks):

  • Kali machine  (For pulling, modifying, and pushing the code)
  • GitLab server (For hosting code)
  • Jenkins server (For integrating). Different phases and components used:
    • Migrate check:         python3
    • Code testing:            pytest
    • Test Deployment:     Ansible
    • Dynamic Testing:      Selenium
  • Test server (For test deployment)

It is suggested to play the DevOps focused lab before playing this lab.

DevSecOps refer to introducing security in different stages of the DevOps process. This is done to catch the vulnerabilities/insecurities as soon as possible in the pipeline.

In this lab, the pipeline consists of the following components (and tasks):

  • Automated Code Review:                     DevSkim
  • Static Code Analysis:                            SonarQube
  • Dynamic Application Security Testing: OWASP ZAP 

This setup pipeline is stored in form of Jenkinsfile (Pipeline as Code).  

This Jenkinsfile is stored along with the webapp source code on the Gitlab instance and is human-friendly. The main benefit of using Jenkinsfile is that now the pipeline is not bound to any Jenkins server instance. Any new Jenkins server can import the Pipeline by reading Jenkinsfile. 

Objective: Import the Pipeline using Jenkins and run the pipeline to observe/understand the DevSecOps process!


Instructions:

  • The GitLab server is reachable with the name 'gitlab'
  • Gitlab credentials:
UsernamePassword
rootwelcome123
  • The Jenkins server is reachable with the name 'jenkins'
  • Jenkins credentials:
UsernamePassword
adminwelcome123
  • The test deployment server is reachable by the name "test-server"
  • Test server SSH credentials:
UsernamePassword
tomcatpassword1
  • The Sonar server is reachable by the name "sonar"
  • Test Sonar server credentials:
    UsernamePassword
    adminadmin

The following activities are strictly prohibited on this website unless otherwise explicitly stated as allowed in the mission statement:

  • Using automated scanners
  • Using brute force attacks
  • Denial of Service attacks
  • Attacking other student machines in challenges where you might achieve a shell on the vulnerable system
  • Attacking the lab infrastructure

Users violating the above will be either temporarily or permanently banned from the website. 

If you are unsure about an activity, then please contact support to confirm that it is allowed on our website.

Technical Support for this Lab:

There is a reason we provide unlimited lab time: you can take as much time as you need to solve a lab. However, we realize that sometimes hints might be necessary to keep you motivated!

We currently provide technical support limited to:

  • Giving hints for a lab exercise
  • In rare circumstances, if you have totally given up (NO!!!) then tell you how to solve it. This will be limited to sharing the solution video or lab report
  • A lab exercise fails to load or has errors in it

If you need technical support, please email  attackdefense@pentesteracademy.com  clearly mention the name and link of the lab exercise and other essential details. The more descriptive you are, the faster we can help you. We will get back to you within 24 hours or less. 

For adminitrative queries, billing, enterprise accounts etc. please email feedback@binarysecuritysolutions.com